c语言程序设计报告-7_第1页
c语言程序设计报告-7_第2页
c语言程序设计报告-7_第3页
c语言程序设计报告-7_第4页
c语言程序设计报告-7_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

安徽工业大学C语言实习报告专业:软件工程班级:软141姓名:吴臣学号:149074166指导老师:陈学进课题一1.熟悉变量、数组定义、使用、输入、输出等基本操作2.进行选择、循环结构程序设计练习3.掌握冒泡法排序的算法4.掌握函数的定义、调用、声明,以及参数的两种传递方式课题二1.熟悉变量的指针和指向变量的的指针变量的概念和使用.2.熟悉数组的指针和指向数组的的指针变量的概念和使用.课题三1.掌握结构体变量及数组的定义、赋值、初始化、输入、输出2.结构体数组的操作。课题四1.掌握文件指针的概念和运用2.掌握文件的相关操作:打开、读、写、关闭3.掌握文件的定位操作课题五目标:学会使用链表与指针对结构体进行插入,删除,输出。代码:#include<stdio.h>#include<stdlib.h>#include<process.h>#include<string.h>#include<conio.h>#defineN10typedefstructstudent{charname[8];unsignedNo;floatmath,Chinese,English;floatave;structstudent*next;/*保存下一个stu的地址*/}NODE,*linklist;voidzhu();voidscan(inta[],intn){inti;printf("\n请输入%d个人成绩\n",n);for(i=0;i<n;i++)scanf("%d",&a[i]);}/*****************************************************************************/voidsort(inta[],intn,charstyle){inti,j,t;if(style=='a'){for(i=0;i<n-1;i++)for(j=0;j<n-1-i;j++){if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}printf("按照升序排列的结果:\n");for(i=0;i<n;i++)printf("%d\t",a[i]);printf("\n");}if(style=='d'){for(i=0;i<n-1;i++)for(j=0;j<n-1-i;j++){if(a[j+1]>a[j]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}printf("按照降序排列的结果:\n");for(i=0;i<n;i++)printf("%d\t",a[i]);printf("\n");}}/*****************************************************************************/voidscan_1(inta[],intn){inti; printf("定义一个数组stu[10]存放10个学生的成绩,从键盘输入数据\n");for(i=0;i<n;i++)scanf("%d",&a[i]);}/*****************************************************************************/voidsort_stu(inta[],intn){inti,j,t; printf("\n将成绩数组按照从高到低进行排序\n");for(i=0;i<n-1;i++)for(j=0;j<n-1-i;j++)if(a[j+1]>a[j]){t=a[j+1];a[j+1]=a[j];a[j]=t;}}/*****************************************************************************/voidprint_stu(inta[],intn){inti; printf("\n将数组stu[10]的内容输出到屏幕上\n");for(i=0;i<n;i++)printf("%d\t",a[i]);printf("\n");}/*****************************************************************************/voidscan_str(charstr[]){inti=0;printf("输入字符串“studentscore”,复制该字符串并输出\n");fflush(stdin);gets(str);printf("输出该字符串\n");printf("%s",str);printf("\n");}/*****************************************************************************/voidscan_con(structstudent*p,intn){inti;printf("格式:姓名,学号,成绩(数学,语文,英语)\n\n");for(i=0;i<n;i++,p++){printf("请输入第%d个学生数据\n",i+1);scanf("%s%d%f%f%f",(*p).name,&(*p).No,&(*p).math,&(*p).Chinese,&(*p).English);}}/*****************************************************************************/intMax1(structstudent*p){ inti,a; floatmax1=p->math;for(i=0;i<10;i++){if((p+i)->math>max1){max1=(p+i)->math;a=i;}}returna;}intMax2(structstudent*p){ inti,b; floatmax2=p->Chinese;for(i=0;i<10;i++){if((p+i)->Chinese>max2){max2=(p+i)->Chinese;b=i;}}returnb;}intMax3(structstudent*p){ inti,c; floatmax3=p->English; for(i=0;i<10;i++){if((p+i)->English>max3){max3=(p+i)->English;c=i;}}returnc;}/*****************************************************************************/voidprint_con(structstudent*p){intm=0,c=0,e=0;m=Max1(p);c=Max2(p);e=Max3(p);printf("\n\n输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩\n");printf("maxmath:");printf("%s\t%d\t%.2f\n",(p+m)->name,(p+m)->No,(p+m)->math);printf("maxChinese:");printf("%s\t%d\t%.2f\n",(p+c)->name,(p+c)->No,(p+c)->Chinese);printf("maxEnglish:");printf("%s\t%d\t%.2f\n",(p+e)->name,(p+e)->No,(p+e)->English);}/******************************************************************************/voidprint_aver(structstudent*p,intn){inti,e=0;floatmax;for(i=0;i<n;i++){p[i].ave=(p+i)->math+(p+i)->Chinese+(p+i)->English; }for(i=0;i<n;i++){p[i].ave=(1.0/3.0)*p[i].ave;}max=p[0].ave;for(i=0;i<n;i++){ if(p[i].ave>max){max=p[i].ave;e=i;}} printf("\n输出三门课程的平均分数最高的学生的学号、姓名及其平均分\n");printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",(p+e)->No,(p+e)->name,(p+e)->math,(p+e)->Chinese,(p+e)->English,(p+e)->ave);}/*****************************************************************************/voidsort_aver(structstudent*p,intn){inti,j;structstudentt;for(i=0;i<n-1;i++)for(j=0;j<n-1-i;j++){if(p[j+1].ave>p[j].ave){t=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=t; }}printf("\n将10个学生按照平均分数从高到低进行排序\n");printf("number\t\tname\tmath\tChinese\tEnglish\tave\n");for(i=0;i<n;i++)printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",(p+i)->No,(p+i)->name,(p+i)->math,(p+i)->Chinese,(p+i)->English,(p+i)->ave);}/*****************************************************************************/voidscan_con_1(FILE*fp,structstudent*p,intn){inti;for(i=0;i<n;i++,p++){fprintf(stdout,"请输入第%d个学生数据(姓名,学号,成绩(数学,语文,英语))\n",i+1);fscanf(stdin,"%s%d%f%f%f",(*p).name,&(*p).No,&(*p).math,&(*p).Chinese,&(*p).English);}}/*****************************************************************************/voidprint_con_1(FILE*fp,structstudent*p){intm=0,c=0,e=0;m=Max1(p);c=Max2(p);e=Max3(p);fprintf(stdout,"\n\n输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩\n");fprintf(stdout,"maxmath:");fprintf(stdout,"%s\t%d\t%.2f\n",(p+m)->name,(p+m)->No,(p+m)->math);fprintf(stdout,"maxChinese:");fprintf(stdout,"%s\t%d\t%.2f\n",(p+c)->name,(p+c)->No,(p+c)->Chinese);fprintf(stdout,"maxEnglish:");fprintf(stdout,"%s\t%d\t%.2f\n",(p+e)->name,(p+e)->No,(p+e)->English);}/*****************************************************************************/voidprint_aver1(FILE*fp,structstudent*p,intn){inti,e=0;for(i=0;i<n;i++){p[i].ave=(p+i)->math+(p+i)->Chinese+(p+i)->English; }for(i=0;i<n;i++){p[i].ave=(1.0/3.0)*p[i].ave;}for(i=0;i<n;i++){ if(p[i].ave>p[0].ave)e=i;}fprintf(stdout,"\n输出三门课程的平均分数最高的学生的学号、姓名及其平均分\n");fprintf(stdout,"%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",(p+e)->No,(p+e)->name,(p+e)->math,(p+e)->Chinese,(p+e)->English,(p+e)->ave);}/*****************************************************************************/voidprint_aver_con(FILE*fp,structstudent*p,intn){inti,j,e=0;floatt=0;for(i=0;i<n;i++){p[i].ave=(p+i)->math+(p+i)->Chinese+(p+i)->English; }for(i=0;i<n;i++){p[i].ave=(1.0/3.0)*p[i].ave;}for(i=0;i<n-1;i++)for(j=0;j<n-1-i;j++){if(p[j+1].ave>p[j].ave){t=p[j].ave;p[j].ave=p[j+1].ave;p[j+1].ave=t; }}fprintf(stdout,"\n将10个学生按照平均分数从高到低进行排序\n");fprintf(stdout,"number\t\tname\tmath\tChinese\tEnglish\tave\n");for(i=0;i<n;i++)fprintf(stdout,"%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",(p+i)->No,(p+i)->name,(p+i)->math,(p+i)->Chinese,(p+i)->English,(p+i)->ave);}/*****************************************************************************/voidprint_aver_con2(FILE*fp,structstudent*p){inti;fprintf(stdout,"\n从studsort.dat文件中读取第2,4,6,8,10个学生的数据。\n");for(i=2;i<=10;i=i+2){fprintf(stdout,"%d\t%s\t%.2f\t%.2f\t%.2f",(p+i-1)->No,(p+i-1)->name,(p+i-1)->math,(p+i-1)->Chinese,(p+i-1)->English);fprintf(stdout,"\n");}}/******************************************************************************//*structstu*h;===>NoDE*horlinklisth;等价;定义一个单链表*/linklistcreate(intn){linklisth,f,p;inti;h=(linklist)malloc(sizeof(NODE));/*申请空间*/f=p=h;printf("请输入姓名,学号以及三门课成绩\n");scanf("%s%d%f%f%f",(*p).name,&(*p).No,&(*p).math,&(*p).Chinese,&(*p).English);for(i=1;i<n;i++){f=p;p=(linklist)malloc(sizeof(NODE));/*申请空间*/scanf("%s%d%f%f%f",(*p).name,&(*p).No,&(*p).math,&(*p).Chinese,&(*p).English);f->next=p;}p->next=NULL;return(h);}/*****************************************************************************/voidpt(linklisth){linklistp=h;printf("\n输出的结果是:\n");while(p!=NULL){printf("%s\t%d\t%.2f\t%.2f\t%.2f\n",p->name,p->No,p->math,p->Chinese,p->English);p=p->next;}}/*****************************************************************************/linklistdel_xh(linklisth,intnum){ linklistcurrent_node=h;linklistprevious=0; while(current_node!=0&&(current_node->No!=num)){ previous=current_node; current_node=current_node->next;}if(current_node!=0&&previous==0){ h=current_node->next; deletecurrent_node; printf("学号:%d成功删除\n",num);}elseif(current_node!=0&&previous!=0){ previous->next=current_node->next; deletecurrent_node; printf("学号:%d成功删除\n",num);}elseprintf("对不起,链表中没有这个人员的信息\n");return(h);}/*****************************************************************************/linklistdel_xm(linklisth,charstr[]){linklistcurrent_node=h;linklistprevious=0; while(current_node!=0&&strcmp(current_node->name,str)!=0){ previous=current_node; current_node=current_node->next;}if(current_node!=0&&previous==0){ h=current_node->next; deletecurrent_node; printf("姓名:%s成功删除\n",str);}elseif(current_node!=0&&previous!=0){ previous->next=current_node->next; deletecurrent_node; printf("姓名:%s成功删除\n",str);}elseprintf("对不起,链表中没有这个人员的信息\n");return(h);}/*************************链表的插入*****************************************/linklistinsert(linklisthead,linkliststud){linklistp1,p2,p3;p1=head;p2=stud;while((p2->No>p1->No)&&(p1->next!=NULL)){ p3=p1; p1=p1->next;}if(p2->No<=p1->No){if(head==p1)head=p2; elsep3->next=p2; p2->next=p1; }else{p1->next=p2;p2->next=NULL;}return(head);}/*****************************************************************************/voidcase1(){charstyle;intstu[N]={0};/*n个学生成绩从高到低排名*/printf("pleaseinputa(升序)ord(降序)\t");scanf("%c",&style);scan(stu,N);sort(stu,N,style);printf("按任意键返回主菜单:\n");getch();system("cls");zhu();}/*****************************************************************************/voidcase2(){ charstu_score[20]={0}; intstu[N];/*定义一个数组stu[10]存放10个学生的成绩,从键盘输入数据*/scan_1(stu,N);/*将数组stu[10]的内容输出到屏幕上*/print_stu(stu,N);/*将成绩数组按照从高到低进行排序*/sort_stu(stu,N);/*将数组stu[10]的内容输出到屏幕上(排序后)*/print_stu(stu,N);/*输入字符串“studentscore”,复制该字符串并输出*/scan_str(stu_score);printf("\n");printf("按任意键返回主菜单:\n");getch();system("cls");zhu();}/*****************************************************************************/voidcase3(){ structstudents[N];floata[N]={0};/*从键盘输入10个学生的以上内容*/scan_con(s,N);/*输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩*/print_con(s);/*输出三门课程的平均分数最高的学生的学号、姓名及其平均分*/print_aver(s,N);/*将10个学生按照平均分数从高到低进行排序*/sort_aver(s,N);printf("\n");printf("按任意键返回主菜单:\n");getch();system("cls");zhu();}/*****************************************************************************/voidcase4(){ structstudents[N]; FILE*fp;/*从键盘输入10个学生的以上内容,存入文件stud.dat,关闭文件*/if((fp=fopen("stud.dat","w"))==NULL){printf("FILEOPENERROR!\n");exit(0);}scan_con_1(fp,s,N);/*打开stud.dat文件,将数据读出,查看是否正确写入,关闭文件。*/print_con_1(fp,s);fclose(fp);/*打开文件stud.dat文件,读出数据,将10个学生按照平均分数从高到低进行排序,分别将结果输出到屏幕上和另一文件studsort.dat中。*/if((fp=fopen("stud.dat","r"))==NULL){printf("FILEOPENERROR!\n");exit(0);}print_aver_con(fp,s,N);fclose(fp);print_aver_con2(fp,s);printf("\n");printf("按任意键返回主菜单:\n");getch();system("cls");zhu();}/*****************************************************************************/voidcase5(){ints,m,j,i=0;chark[8];linklistl,h,p;NODEstu;printf("请输入学生人数\n");scanf("%d",&m);l=create(m);pt(l);printf("请根据学号或姓名修改数据:\n1.学号\t2.姓名\n");printf("你的选择:\t");scanf("%d",&j);if(j>=1&&j<=2){switch(j){case1:{printf("\n请输入要删除的学号\t");scanf("%d",&s);printf("\n");h=del_xh(l,s);pt(h);printf("\n");}break;case2:{printf("\n请输入要删除的姓名\t");scanf("%s",k);printf("\n");h=del_xm(l,k);pt(h);printf("\n");}break;}}p=h;while(p!=NULL){ i++; p=p->next;}if(i<m){printf("请输入新的数据:\t\n");printf("格式:姓名,学号,成绩\n");scanf("%s%d%f%f%f",&,&stu.No,&stu.math,&stu.Chinese,&stu.English);h=insert(h,&stu);pt(h);}printf("按任意键返回主菜单:\n");getch();system("cls");zhu();}/*****************************************************************************/voidcase6(){printf("\n\n\n\t****************************************************************\n"); printf("\t\tcopyrightfrom苏昶东\n");printf("\t\t学号:139074091班级:计133\n");printf("\t****************************************************************\n");printf("按任意键返回主菜单:\n");getch();system("cls");zhu();}/*****************************************************************************/intmain(){intj;printf("\n\n\n\t=======================================================\n");printf("\t=======================================================\n");printf("\t**************欢迎进入学生管理系统*********************\n");printf("\t=======================================================\n");printf("\t=======================================================\n\n\n");char f[]="888888"; printf("请输入密码并以回车键结束:");scanf("%s",f); if(strcmp(f,"888888")==0) { system("cls"); zhu();//密码正确时进入系统 } else j=1; printf("密码错误!请重新选择按键!\n"); printf("请输入第2次\t"); scanf("%s",f); while(strcmp(f,"888888")!=0&&j<=4){ printf("密码错误!请重新选择按键!\n"); printf("请输入第%d次\t",j+2); scanf("%s",f);j++; } if(j>4){printf("输错次数大于6次\n");getch();exit(0);} system("cls"); zhu();//密码正确时进入系统 return0;}/*****************************************************************************/voidzhu(){inti; while(1){printf("\t****************************************************************\n"); printf("\t\t1:根据条件进行学生成绩排名\n\t\t2:用指针优化学生成绩排名\n\t\t3:学生成绩单制作\n\t\t"); printf("4:学生成绩文件管理\n\t\t5:修改学生信息(链表)\n\t\t6:查看版本信息\n\t\t7:离开\n"); printf("\t****************************************************************\n\n"); printf("\t\t请选择:\t"); scanf("%d",&i); switch(i) { case1:system("cls");case1();break; case2:system("cls");case2();break;case3:system("cls");case3();break; case4:system("cls");case4();break; case5:system("cls");case5();break; case6:system("cls");case6();break; case7:exit(0);break; default: {system("cls"); printf("\n输入错误,请重新输入\n"); printf("按任意键返回主菜单:\n");getch();system("cls");zhu(); } } }}/*****************************************************************************/截图:

温馨提示

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

评论

0/150

提交评论