8. 编写一个程序,将字符串Str2中的全部字符复制到字符串Str1中。要求:不能使用strcpy函数。(12分)
#include<stdio.h>
#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<stdio.h>
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<sizeof(grades)/sizeof(grades[0]);i++)
printf("%d\t",grades[i]);
return0;
}
intCountFail(int score[], int n)
{
intcnt = 0,i;
for(i=0;i<n;i++)
if(score[i]<60)
cnt++;
returncnt;
}
voidSelectionSort(int score[], int n)
{
intmin,tmp,i,j;
for(i=0;i<n;i++){
min= i;
for(j=i+1;j<n;j++){
if(score[j]<score[min])
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 <stdio.h>
#include <stdlib.h>
#include <string.h>
struct employee{
charname[10];
intage;
intid;
intsex;
};
void employee_sort(struct employeepersons[], int n)
{
intmin;
structemployee tmp;
for(inti=0;i<n;i++){
min= i;
for(intj=i+1;j<n;j++){
if(persons[j].id<persons[min].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<n;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<n;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<number;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;
}