8. 编写一个程序,将字符串Str2中的全部字符复制到字符串Str1中。要求:不能使用strcpy函数。(12分)
#include
#defineMAXLEN 20
//假设str2的长度不超过str1的长度
voidstrcopy(char *str1,char *str2)
{
inti=0,j=0;
while(str2[i])
str1[j++]= str2[i++];
str1[j]='\0';
}
intmain()
{
chara[MAXLEN];
charb[MAXLEN];
printf("输入字符串Str1:");
scanf("%s",a);
printf("输入字符串Str2:");
scanf("%s",b);
strcopy(a,b);
printf("Str1:%s",a);
return0;
}
9. 3(20分)从键盘输入某班20个学生的成绩,统计不及格学生的人数。然后将这20个学生的成绩用选择排序法 来进行排序(以从低到高的顺序)。
要求按如下函数原型进行编程,分别统计不及格学生的人数和排序功能。
int CountFail(int score[], int n); (6分)
void SelectionSort(intscore[], int n); (8分)
在main函数中调用以上函数,并输出结果。 (6分)
#include
intCountFail(int score[], int n);
voidSelectionSort(int score[], int n);
intmain()
{
intgrades[20];
printf("请依次输入20个学生的成绩:\n");
for(inti=0;i<20;i++)
scanf("%d",&(grades[i]));
printf("不及格学生人数:%d\n",CountFail(grades,sizeof(grades)/sizeof(grades[0])));
SelectionSort(grades,sizeof(grades)/sizeof(grades[0]));
for(inti=0;i
printf("%d\t",grades[i]);
return0;
}
intCountFail(int score[], int n)
{
intcnt = 0,i;
for(i=0;i
if(score[i]<60)
cnt++;
returncnt;
}
voidSelectionSort(int score[], int n)
{
intmin,tmp,i,j;
for(i=0;i
min= i;
for(j=i+1;j
if(score[j]
min= j;
}
tmp = score[min];
score[min]= score[i];
score[i]= tmp;
}
}
10. (20分)利用结构体变量记录某公司每个职工的姓名、年龄、编号和性别。先根据用户的输入建立一个结构体数组来存放职工的信息,然后输出各个职工的信息:
(1)对职工的编号按升序进行排序,并将排序后的职工信息写入到文件employee.txt文件中;(10分)
(2)按职工编号检索职工信息,如果找到,则输出该职工相关信息,否则输出“Don’t find the corresponding message!”。(10分)
#include
#include
#include
struct employee{
charname[10];
intage;
intid;
intsex;
};
void employee_sort(struct employeepersons[], int n)
{
intmin;
structemployee tmp;
for(inti=0;i min= i; for(intj=i+1;j if(persons[j].id min= j; } structemployee tmp; memcpy(&tmp,persons+min,sizeof(structemployee)); memcpy(persons+min,persons+i,sizeof(structemployee)); memcpy(persons+i,&tmp,sizeof(structemployee)); } FILE*fp = fopen("employee.txt","a"); for(intk=0;k fprintf(fp,"%s%d %d %d\n",persons[k].name,persons[k].age,persons[k].id,persons[k].sex); } fclose(fp); } void employee_search(struct employeepersons[],int n,int id) { intflag = 1; for(intk=0;k if(persons[k].id==id){ printf("%s%d %d %d\n",persons[k].name,persons[k].age,persons[k].id,persons[k].sex); flag= 0; } if(flag) printf("Don’tfind the corresponding message!"); } int main() { intnumber; printf("输入员工数:"); scanf("%d",&number); printf("输入每个员工的信息:姓名 年龄 编号 性别(1表示男0表示女)\n"); structemployee *persons = (struct employee *)malloc(sizeof(struct employee)*number); for(inti=0;i scanf("%s",&persons[i].name); scanf("%d%d%d",&persons[i].age,&persons[i].id,&persons[i].sex); } employee_sort(persons,number); intid; printf("输入要查找的员工编号:"); scanf("%d",&id); employee_search(persons,number,id); return0; }