您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 《C语言程序设计》综合实习报告
《C语言程序设计》综合实习报告学号119074122姓名石险峰班级计114指导教师陈学进安徽工业大学计算机学院2012年6月课题一:根据条件进行学生成绩排名一、目的1.熟悉变量、数组定义、使用、输入、输出等基本操作2.进行选择、循环结构程序设计练习3.掌握冒泡法排序的算法4.掌握函数的定义、调用、声明,以及参数的两种传递方式4.掌握函数的定义、调用、声明,以及参数的两种传递方式二、实习环境个人计算机,Windows操作系统,TurboC2.0或WinTC或VisualC++等编译开发环境三、实习内容、步骤与要求1.在函数中进行10个学生成绩从高到低排名sort(inta[10])2.改进第一步的函数为sort(inta[],intn),进行n个学生成绩从高到低排名,3.改进第二步的函数为sort(inta[],intn,charstyle),将n个学生成绩从高到低排名,排名方式根据sort()函数的style参数进行,如style为‘a’按升序排,style为’d’按降序排。(a:ascending升,d:descending降)四.程序流程图、算法及运行结果Inputfor(i=0;in;i++)scanf(%d,&a[i])Sortfor(i=0;in-1;i++)for(j=0;jn-i-1;j++)charcif(c=='d')yesnoif(c=='a')if(a[j]a[j+1])交换YesIf(a[j]a[j+1])交换两者否则,不交换否则,不交换开始结束#includestdio.h#includeconio.hvoidinput(intscore[],intn){inti;for(i=0;in;i++)scanf(%d,&score[i]);printf(\n);定义input函数,建输入模块定义sort函数,利用冒泡法排序在冒泡排序的前面加上if句判断如果是d,递减排列反之递加排列建output函数输出排列后的分数在main函数中调用上述的函数}sort(intscore[],intn,charstyle){inti,j,t;for(i=0;in;i++)for(j=0;jn;j++){if(style=='a'){if(score[i]score[j]){t=score[i];score[i]=score[j];score[j]=t;}}if(style=='d'){if(score[i]score[j]){t=score[i];score[i]=score[j];score[j]=t;}}}}main(){intscore[81],i,n;charstyle;scanf(%d,&n);printf(pleaseinputdata:\n);input(score,n);getchar();printf(pleaseinputaord:);scanf(%c,&style);sort(score,n,style);for(i=0;in;i++)printf(%d,score[i]);getch();}五、知识点、难点及解决办法。知识点:1对函数的应用要熟练2对数组的应用要熟练3对排序的冒泡法懂得利用与运用难点:1函数之间的调用及返回需谨慎2对输入值的判断进行不同函数的调用解决方法:注意形参与实参的对应,注意返回值的利用六、编程小结或体会。体会:现在的程序已经不仅仅满足与制作程序了,还需要我们去构建程序的模块,以及一些菜单的制作有时也是需要的。课题二:根据条件进行学生成绩排名一、目的1.熟悉变量的指针和指向变量的的指针变量的概念和使用.2.熟悉指针和链表使用.二、实习环境个人计算机,Windows操作系统,TurboC2.0或WinTC或VisualC++等编译开发环境三、实习内容、步骤与要求1.定义一个链表存放10个学生的学号、姓名、成绩,从键盘输入数据。2.将链表的内容输出到屏幕上3.按学号进行查找、插入、删除4.将链表的内容输出到文件cx.txt四、程序流程图、算法及运行结果Y开始利用malloc和结构体、指针,构建链表,这是creat模块构建print模块,其作用是输出链表建search模块,利用while循环,循环条件为h-num!=NULL建insert模块,输入要插入的对象m,定义p=h,p=p-next(m-numq-num)&&(m-nump-num)P!=NULLq-next=m;m-next=p;break;q=q-next;p=p-next;主函数流程图:定义结构体Main():intn,i,x;DATh,p;scanf(%d,&n);h=creat(n);print(h);scanf(%d,&x);p=search(h,x);是if(p)否输出printf(Nonum);scanf(%d,&x);dele(h,x);print(h);insert(h);print(h);getch();Creatm-numq-numq-next=m;m-next=NULL;构建delete模块,while(p-next!=q)p=p-next;p-next=q-next;Main函数中调用上述模块,再添加文件即可结束DATh,p,q;inti;h=(DAT)malloc(sizeof(NODE));scanf(%d%s%d,&h-num,h-name,&h-score);p=q=h;for(i=2;in;i++)p=(DAT)malloc(sizeof(NODE));scanf(%d%s%d,&p-num,p-name,&p-score);q-next=p;q=p;p-next=NULL;PrintDATp;p=h;while(p!=NULL)printf(%6d%6s%6d\n,p-num,p-name,p-score)p=p-next;SearchDATp;p=h;p=p-next;while(p-num!=x&&p!=NULL)是if(p)否return(p);return(NULL);DeleDATp,q;q=search(h,x)p=h;p=p-next;p-next=q-next;free(q);p-next!=qInsertDATp,q,j;p=q=h;j=(DAT)malloc(sizeof(NODE));scanf(%d%s%d,&j-num,j-name,&j-score);p=p-next;if((j-numq-num)&&(j-nump-num))是否q-next=j;j-next=p;break;q=q-next;p=p-next;是p==NULL否j-numq-num是q-next=j;j-next=NULL;编译预处理#includestdio.h;定义结构体,typedefstructstu,结构体成员为:intnum;charname[20];intscore;structstu*next;结构体外:NODE,*DAT;在主函数中,先定义intn,i,x;DATh,p;然后执行语句printf(请输入学生人数:),scanf(%d,&n);调用函数h=creat(n);print(h);再执行printf(请输入要查的学号:\n);scanf(%d,&x);再调用函数p=search(h,x);执行判断语句if(p),如果成立则printf(%6d%6s%6d\n,p-num,p-name,p-score),如果不成立则printf(Nonum);接着执行printf(请输入要删除的学号:\n);scanf(%d,&x);依次调用函数dele(h,x);print(h);insert(h);print(h);getch();程序结束。代码:#includestdio.h#includeconio.htypedefstructdt{intnum;charname[10];intscore;structdt*next;}NODE,*DAT;DATcreate(intn){DATh,p,q;inti;h=(DAT)malloc(sizeof(NODE));scanf(%d%s%d,&h-num,&h-name,&h-score);h-next=NULL;p=q=h;for(i=2;i=n;i++){p=(DAT)malloc(sizeof(NODE));scanf(%d%s%d,&p-num,&p-name,&p-score);q-next=p;q=p;}p-next=NULL;return(h);}voidprint(DATh){DATp;p=h;while(p!=NULL){printf(%8d%8s%8d\n,p-num,p-name,p-score);p=p-next;}printf(\n);}DATsearch(intx,DATh){DATp;p=h;while(p-num!=x&&p!=NULL)p=p-next;if(p)return(p);elsereturn(NULL);}voiddel(inty,DATh){DATp,q;p=h;q=search(y,h);while(p-next!=q)p=p-next;p-next=q-next;free(q);}DATinsert(DATz,DATh){DATp0,p1,p2;p1=h;p0=z;if(h==NULL){h=p0;p0-next=NULL;}else{while((p0-nump1-num)&&(p1-next!=NULL)){p2=p1;p1=p1-next;}if(p0-num=p1-num){if(h==p1)h=p0;elsep2-next=p0;p0-next=p1;}else{p1-next=p0;p0-next=NULL;}}returnh;}voidsave(DATh){FILE*fp;DATp;inti;p=h;if((fp=fopen(G:\\stu_dat,wb))==NULL){printf(cannotopenfile\n);return;}while(p!=NULL){fwrite(p,sizeof(NODE),1,fp);p=p-next;}fclose(fp);}main(){intn,x,y;DATh,p,z;z=(DAT)malloc(sizeof(NODE));scanf(%d,&n);h=create(n);print(h);printf(intputsearchdata:);scanf(%d,&x);p=search(x,h);if(p){printf(%8d%8s%8d\n,p-num,p-name,p-score);}elseprintf(NOsearchdata\n);printf(intputdeletedata:);scanf(%d,&y);del(y,h);print(h);printf(inputinsertdata:);getchar();scanf(%d%s%d,&z-num,&z-name,&z-score);h=insert(z,h);print(h);save(h);getch();}五、知识点、难点及解决办法。知识点:1链表的制作,查找,插入及删除功能2结构体的制作3指针的应用4函数的使用5链表的头指针,结点的概念。难点:1链表的各种功能函数2指针在链表中的应用解决方法:谨慎使用链表六、编程小结或体会。现在的程序不仅仅满足于主函数的构建,同时还需要附加其他功能,以实现不同的作用,这就需要我们去构建函数以实现这些功能。课题三:学生成绩单制作一、目的1.掌握结构体变量及数组的定义、赋值、初始化、输入、输出2.结构体数组的操作。二、实习环境个人计算机,Windows操作系统,TurboC2.0或Wi
本文标题:《C语言程序设计》综合实习报告
链接地址:https://www.777doc.com/doc-3375427 .html