C语言-地大杯学风校风演讲赛报名程序_第1页
C语言-地大杯学风校风演讲赛报名程序_第2页
C语言-地大杯学风校风演讲赛报名程序_第3页
C语言-地大杯学风校风演讲赛报名程序_第4页
C语言-地大杯学风校风演讲赛报名程序_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、c语言课程设计题目:地大杯学风校风演讲赛报名程序一:题目内容:学校组织地大杯学风校风演讲赛,已知文本文件fl. txt中存放了所有报名参加比赛 学生的信息(不超过1000人),具体数据及存放格式为:每行存放一个学生的数据,共有4 项,依次为:姓名(不超过10个字符)、性别(整数:0为男,1为女)、年龄(整数)、班号 (不超过6个字符),其间用空格分隔。请编写程序,读出文件屮的内容,再按筛选条件筛选后以文本方式存放到文件f2.txt 中,并实现以下功能:(1)能够统计报名成功学生仅有1人的班级以及该生的信息。(2)能够统计报名成功学生中年龄最小的男生信息、年龄最小的女生信息。(3)能够统计报名成

2、功学生屮男生的人数、女生的人数。(4)学生可以根据姓名和班号查询自己报名是否成功。筛选条件:(1)同一班中只取一名年龄最小的男学生和一名年龄最小的女学生。(2)同班同性别同年龄的学生按先报名先取的原则。 说明:(1)统程序要有界面(2)存入文件f2.txt中的数据,每行存一个学生的数据,每行之间的不同信息用空格 分隔。广头文件定义*/#include<stdio.h>#in clude<math.h># include<stri ng.h#in clude<stdlib.h>厂首先要定义学生信息结构体*/struct studentlnformatio

3、nchar name10;int age;int sex;/*姓名不超过10个字符*/*年龄*/广性别*/char classnumber7;/* 班级号 */int noornot;/*查询自己报名是否成功的函数*/*函数声明*/void menu(struct studentlnformatio n student1000,struct stu info stu4002,int flag,int m); void staclass(struct studentinformation stu4002,int m);void staage(struct studentlnformation s

4、tu4002,int m);void searchfstruct studentlnformmtion student1000,int m);void boy_girl(struct studentlnformation stu4002,int flag);void main(int argc,char *argv)int i=0/j=0,k=0/m=0/count2=0zflag,boy=0,girl=0;/*设置计数变量,看报名人数总共有多 少*/ int iijj;char c;struct studentlnformation student1000,stu4002;file *fl,

5、*fout;for(ii=0;ii<400;ii+)for(jj=0;jj<2;jj+)stuiijj.age=looo;if (argc!=3)/*argc为输入的参数个数,在此判断验证参数是否为三个*/printff输入错误!卍);printff'usage: %s <intput_file> <output_file>",argv0);if (fl=fopen(argvl,"r+")=null)printf(”文件无法打开!n”);exit(o);c=fgetc(fl);/*读取fl文件中的数据*/while(c!

6、=eof)while(c!='')studenti.namej=c;j+;c=fgetc(fl);studenti.namej=,o'if(c" *)c=fgetc(fl);studenti.sex=c-'o'if (studenti.sex=o)count0+;elsecountl+;c=fgetc(fl);studenti.age=o;c=fgetc(fl);while(c!='')studenti.age=studenti.age*10+c-'0'c=fgetc(fl);c=fgetc(fl);while(

7、c!=10&&c!二eof)/*其中 eof 为文件结束否studenti.ciassnumberk=c;k+;c=fgetc(fl);studenti.ciassnumberk='o'studenti.noornot =-l;i+;j=0;k=0;if(c=10)c=fgetc(fl);fclose(fl);/*数据读取后关闭fl文件*/flag=count0+countl;/*对读取的数据进行处理*/for(i=0;i<flag;i+)if (studenti.noornot =-1)stumstudenti.sex.age =studenti.age

8、;stumstudenti.sex.sex =studenti.sex; strcpy(stumstudenti.sex.ciassnumber ,studenti.ciassnumber); strcpy(stumstudenti.sex.name ,studenti.name );studenti.noornot=l;boy=i;for(j=i+l;j<flag;j+) k=strcmp(stumstudenti.sex.ciassnumber,studentj.ciassnumber); if (strcmp(stumstudenti.sex.ciassnumber/student

9、j.ciassnumber)=o) if (studentj.sex=studentboy.sex)if(studentj.age <studentboy.age )strcpy(stum studentboy.sex. name,studentj.name);stumstudentboy.sex.age=studentj.age;studentboy.noornot =0;boy=j;studentboy.noornot =1;elsestudentj.noornot=0;else if (studen tj .sex!二 student boy .sex)if(stu m stude

10、nt 0 .sex .age =1000)strcpy(stumstudentj.sex.ciassnumber ,studentj.ciassnumber); strcpy(stumstudentj.sex.name ,studentj.name ); stumstudentj.sex.age =studentj.age; stumstudentj.sex.sex =studentj.sex; studentj.noornot=l;girl=j;elseif(stumstudentj.sex.age!=1000&&studentj.age<stumstudentj.se

11、x.age)strcpy(stum studentgirl.sex. name,studentj. name); stumstudent girl.sex .age=studentj. age; studentgirl.noornot =0;girl=j;studentgirl.noornot =1;elsestudentj.noornot=0; else;m+;else;fout=fopen(argv2/'w+");for(i=0;i<m;i+)for(j=0;j<2;j+)讦(stuij.age!=1000)fprintf(fout,"%s %d %

12、d %sn",stuij.name,stuij.sex/stuij.age,stuij.ciassnumber);fclose(fout);menu (stud en t,stu,flag,m);void menu(struct stulnfo student1000,struct stu info stu4002,int flag,int m)int n;system(hcolor cam);printf("n");printf(htt中国地质大学(武汉)n");printf(httnh);printf(ntt 1.统计报名成功学生仅有1人的班级以及该

13、生的信息n");printf(httnh);printf("tt2.统计报名成功学生屮年龄最小的男女生信息n“);printf(httnn);printfcaat 3.统计报名成功学生屮男生的人数、女生的人数。“);printf(httn");printf(“tt4.学生可以根据姓名和班号查询自己报名是否成功。n“);printf(httnn);printf(utt 0.退出n");printf(-ttnn);printf("tt作者:* (2012/2/23) nh);p r i ntf(htt *printf(htt请按照提示选择你所需要的

14、功能m);scanffd&n);while(n<0| |n>4)printf(”tt输入错误请重新输入:"); scanf(吆d”,&n);switch(n)case 0:exit(0);case 1:staclass(stu,m);men u(student,stu,flag,m); break;case 2:staage(stu,m);menu (student,stu,flag,m);break;case 3:boy_girl(stu,m);menu (student,stu, flag, m);break;case 4:search(student

15、,flag);men u(stud en t,stu,flag,m);break;/*报名人数不足一人的班级及*/void staclass(struct studentlnformation stu4002,int m)int i=0;for(i=0;i<m;i+)if(stuio.age =1000)printf("%s %d %d %sn"zstuil.name,stuil.sexzstuil.age,stuil.ciassnumber); else if(stuil.age=1000)printf("%s %d %d %sn"/stuio.

16、name/stuio.sex/stuio.age/stuio.ciassnumber); else;/*分别统计报名学生中最小男生和女生的年龄*/void staage(struct studentlnformation stu4002,int m)int boyzgirl,i=0;boy=stu00.age;girl=stuol.age;for(i=l;i<m;i+)if(stui0.age<boy)boy=stui0.age;if (stuil.age<girl)girl=stuil.age;printf("tt 最小男生年龄是:d 岁。n",boy)

17、;printf("tt 最小女生年龄是:d 岁。ngirl);/*统计报名学生成功学生中男生和女生的人数各为多少功能*/void boy_girl(struct studentinformation stu4002,int m)int boy=0,girl=0,i=0;for(i=0;i<m;i+)if (stui0.age!=1000)boy+;if (stuil.age!=1000)girl+;printf(htt报名成功的男生人数是:%do nuzboy);printf(ntt报名成功的女生人数是:%do nnzgirl);/*查询自己报名是否成功功能*/void search(struct studentlnformation student1000,int flag)char namell,classno7;int i=o,flag=o;/*设置一个标志变量flag来查看学生是否报名成功*/printf(htt 请输入姓名和班号:ntttttttttttf);scanf("%s%s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论