if(x[j]>x[k])
k=j;
if(k!
=i)
{t=x[i];
x[i]=x[k];
x[k]=t;
}
}
}
(5)采用指针方法,输入字符串“studentscore”,复制该字符串并输出(复制字符串采用库函数或用户自定义函数)。
voidmain()
{voidcopy_string(charfrom[],charto[]);
chara[]="studentscore";
charb[20];
copy_string(a,b);
printf("stringb=%s\n",b);
getch();
}
voidcopy_string(charfrom[],charto[])
{inti=0;
while(from[i]!
='\0')
{to[i]=from[i];
i++;
}
to[i]='\0';
}
项目四:
学生成绩单制作
实训内容:
(1)定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩;
structstudent
{intnumber;
charname[20];
intmath;
intChinese;
intEnglish;
intaverage;
}stu[11];
(2)从键盘输入10个学生的以上内容;
(3)输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩;
以数学成绩为例:
voidprint_max(structstudentstu[11])
{inti;
inttemp=0;
intn=0;
for(i=0;i<10;i++)
if(stu[i].math>temp)
{temp=stu[i].math;
n=i;
}
printf("themathhighestscore:
\n");
printf("%d%s%d\n",stu[n].number,stu[n].name,stu[n].math);
}
(4)输出三门课程的平均分数最高的学生的学号、姓名及其平均分;
voidprint_ave(structstudentstu[11])
{inti,n;
inttemp=0;
for(i=0;i<10;i++)
{stu[i].average=(stu[i].math+stu[i].Chinese+stu[i].English)/3;
}
for(i=0;i<10;i++)
if(stu[i].average>temp)
{temp=stu[i].average;
n=i;
}
printf("thehighestavris:
\n");
printf("%d%s%d\n",stu[n].number,stu[n].name,stu[n].average);
getch();
}
(5)将10个学生按照平均分数从高到低进行排序,输出结果。
voidprint_list(structstudentstu[11])
{inti,j;
for(j=0;j<9;j++)
for(i=0;i<9-j;j++)
if(stu[i].average{stu[10]=stu[i];
stu[i]=stu[i+1];
stu[i+1]=stu[10];
}
项目五:
学生成绩排文件管理
实训内容
(1)定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩;
#defineSIZE10
structstudent
{intnum;
charname[20];
intmath;
intChinese;
intEnglish;
floatavr;
}stu[SIZE];
(2)从键盘输入10个学生的以上内容,存入文件stud.dat,关闭文件;
voidsave()
{FILE*fp;
inti;
for(i=0;iif(fwrite(&stu[i],sizeof(structstudent),1,fp)!
=1)
printf("filewriteerror\n");
fclose(fp);
}
voidmain()
{inti;
printf("input10students'information\n");
for(i=0;iscanf("%d%s%d%d%d",&stu[i].num,stu[i].name,&stu[i].math,&stu[i].Chinese,&stu[i].English);
save();
}
(3)打开stud.dat文件,将数据读出,查看是否正确写入,关闭文件;
(4)打开文件stud.dat文件,读出数据,将10个学生按照平均分数从高到低进行排序,分别将结果输出到屏幕上和另一文件studsort.dat中;
voidsave()
{FILE*fp;
inti;
if((fp=fopen("stud.dat","wb"))==NULL)
{printf("cannotopenfile\n");
return;
}
for(i=0;iif(fwrite(&stu[i],sizeof(structstudent),1,fp)!
=1)
printf("filewriteerror\n");
fclose(fp);
}
voidmain()
{inti,j,k;
FILE*fp;
fp=fopen("stud.dat","rb");
for(i=0;ifread(&stu[i],sizeof(structstudent),1,fp);
for(i=0;i<10;i++)
stu[i].avr=(stu[i].math+stu[i].Chinese+stu[i].English)/3;
for(i=0;i<9;i++)
{k=i;
for(j=i+1;j<10;j++)
if(stu[j].avr>stu[k].avr)k=j;if(k!
=i)
{stu[10]=stu[i];
stu[i]=stu[k];
stu[k]=stu[10];
}
}
save();
}
(5)从studsort.dat文件中读取第2,4,6,8,10个学生的数据。
voidmain()
{inti,j;
FILE*fp;
fp=fopen("studsort.dat","rb");
for(i=0;ifread(&stu[i],sizeof(structstudent),1,fp);
for(i=0;i<10;i=i+2)
printf("%d%s%d%%d%3.2f\n",stu[i].num,stu[i].name,stu[i].math,stu[i].Chinese,stu[i].English,stu[i].avr);
getch();
}
项目六:
(综合实训)学生成绩管理系统
完成下列功能:
(1)输入:
函数input把20学生的学号、姓名、性别、年龄、四科成绩以及平均成绩和总成绩放在一个结构体数组中,学生的学号、姓名、四科成绩由键盘输入,然后计算出平均成绩和总成绩放在结构体对应的域中。
structstudent
{longnum;
charname[20];
charsex[3];
intage;
intmath;
intChinese;
intEnglish;
intComputer;
floatavr;
intsum;
structstudent*next;
}stu[21],stu1[21];
voidinput(intn)
{inti;
printf("input5students'information:
\n");
printf("number|name|sex|age|math|Chinese|English|Computer\n");
for(i=0;i{scanf("%ld%s%s%d%d%d%d%d",&stu[i].num,stu[i].name,stu[i].sex,&stu[i].age,&stu[i].math,&stu[i].Chinese,&stu[i].English,&stu[i].Computer);
stu[i].avr=(float)(stu[i].math+stu[i].Chinese+stu[i].English+stu[i].Computer)/4;
stu[i].sum=stu[i].math+stu[i].Chinese+stu[i].English+stu[i].Computer;
}
}
(2)插入:
insert函数输入一个学生的记录,按学号的先后顺序插入该学生的全部内容。
voidinsert(intn)
{inti;
system("cls");
printf("inputanotherstudent'sinformation:
\n");
printf("number|name|sex|age|math|Chinese|English|Computer\n");
scanf("%d%s%s%d%d%d%d%d",&stu[5].num,stu[5].name,stu[5].sex,&stu[5].age,&stu[5].math,&stu[5].Chinese,&stu[5].English,&stu[5].Computer);
stu[5].avr=(float)(stu[5].math+stu[5].Chinese+stu[5].English+stu[5].Computer)/4;
stu[5].sum=stu[5].math+stu[5].Chinese+stu[5].English+stu[5].Computer;
for(i=n;i>0;i--)
if(stu[i].num>stu[i-1].num)
{stu1[1]=stu[i];
stu[i]=stu[i-1];
stu[i-1]=stu1[1];
}
}
(3)排序:
sort函数对所有学生按要求排序(1.学号2.总成绩),并输出。
voidsort(intn)
{inti,j,k;
system("cls");
printf("BYNUM\n");
for(i=0;i{k=i;
for(j=i+1;jif(stu[j].num>stu[k].num)k=j;
if(k!
=i)
{stu1[4]=stu[i];
stu[i]=stu[k];
stu[k]=stu1[4];
}
}
printf("number|name|sex|age|math|Chinese|English|Computer|average|sum\n");
for(i=0;iprintf("%-7ld%-4s%-3s%-3d%-4d%-4d%-4d%-4d%-3.2f%-3d\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].math,stu[i].Chinese,stu[i].English,stu[i].Computer,stu[i].avr,stu[i].sum);
printf("BYSUM\n");
for(i=0;i{k=i;
for(j=i+1;jif(stu[j].sum>stu[k].sum)k=j;
if(k!
=i)
{stu1[5]=stu[i];
stu[i]=stu[k];
stu[k]=stu1[5];
}
}
printf("number|name|sex|age|math|Chinese|English|Computer\n");
for(i=0;iprintf("%-7ld%-4s%-3s%-3d%-4d%-4d%-4d%-4d%-3.2f%-3d\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].math,stu[i].Chinese,stu[i].English,stu[i].Computer,stu[i].avr,stu[i].sum);
}
(4)查找:
find函数输入一个学生的学号或姓名,找到该学生并输出该学生的全部内容。
要求能查询多次。
voidfind(intn)
{intn=0;
inti;
intt=1;
while(t==1)
{printf("chosethenum(0)orname
(1):
\n");
scanf("%d",&n);
printf("\n");
if(n==0)
{printf("inputthenum:
");
scanf("%d",&stu1[1].num);
printf("\n");
printf("number|name|sex|age|math|Chinese|English|Computer\n");
for(i=0;i<6;i++)
if(stu1[1].num==stu[i].num)
printf("%-7ld%-4s%-3s%-4d%-4d%-4d%-4d%-3d%-3.2f%-3d\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].math,stu[i].Chinese,stu[i].English,stu[i].Computer,stu[i].avr,stu[i].sum);
}
else
{printf("inputthename:
");
scanf("%s",&stu1[1].name);
printf("\n");
printf("number|name|sex|age|math|Chinese|English|Computer\n");
for(i=0;i<6;i++)
if(strcmp(stu1[1].name,stu[i].name)==0)
printf("%-7ld%-4s%-3s%-4d%-4d%-4d%-4d%-3d%-3.2f%-3d\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].math,stu[i].Chinese,stu[i].English,stu[i].Computer,stu[i].avr,stu[i].sum);
}
printf("continue?
(0,1)\n");
scanf("%d",&t);
}
}
(5)删除:
delete函数输入一个学生的学号或姓名,找到该学生并删除该学生的全部内容。
voiddelete(intn)
{inti,n=0;
intj,t=0;
longnum;
printf("chosethenum(0)orname
(1):
\n");
scanf("%d",&n);
printf("\n");
if(n==0)
{printf("inputthenum:
");
scanf("%ld",&num);
printf("\n");
for(i=0;iif(num==stu[i].num)
{stu[i].num=999999999;t=21;
for(j=0;j{for(i=0;iif(stu[i].num>stu[i+1].num)
{stu1[21].num=stu[i].num;
stu[i].num=stu[i+1].num;
stu[i+1].num=stu1[21].num;
}
}
}
if(t==0)
printf("%ldisnotfound",num);
sleep
(2);
}
else
{printf("inputthename:
");
scanf("%s",&stu1[8].name);
printf("\n");
for(i=0;iif(strcmp(stu1[8].name,stu[i].name)==0)
{stu[i].num=9999999999;t=21;
for(j=0;j{for(i=0;iif(stu[i].num>stu[i+1].num)
{stu1[21].num=stu[i].num;
stu[i].num=stu[i+1].num;
stu[i+1].num=stu1[21].num;
}
}
}
if(t==0)
{printf("%ldisnotfound",num);
sleep
(2);}
}
n=n-1;
}
(6)输出:
函数output输出全部学生的记录。
voidoutput(intn)
{inti;
system("cls");
printf("\n\n\n\n\n\n\n\nPRINTTHEEND....");
sleep(3);
system("cls");
printf("number|name|sex|age|math|Chinese|English|Computer\n");
for(i=0;iprintf("%-7ld%-4s%-3s%