




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-.z.设计报告实验目的:通过上机实习,熟练掌握循环语句、选择语句、指针以及构造体的运用技巧。在实习中通过实际操作,编写程序,发现问题,最后解决问题,提升对c语言实用性的理解,在实践中稳固各知识点。C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点,上机实习可以帮助我们更好地理解这种构造式的中级语言以及其各式各样的数据类型和高效率的运算程序,为我们进一步学习C++打下坚实根底。同时,在实习过程中,通过互相发现问题,共同解决问题,不仅锻炼了我们的合作能力,而且也让我们发现了一些自己的个人误区以及其他人容易犯的错误,从而在今后的学习中更加慎重,到达事半功倍的效果;通过询问教师,也让我们养成了不耻下问的好习惯,这将很有利于以后的学习。二,总体设计:1,学生成绩排名1,流程图:I=0I=0再输入一个学生的成绩再输入一个学生的成绩I<10""假?I<10""冒泡法排序冒泡法排序a[i]a[10-i]I由0变到4进展5次循环输出a[0]到a[10]shu输出a[0]到a[9]I由0变到8执行9次循环进展9-I次比拟真a[j]>a[I+I]假a[j]a[j+1]赋值真?a[i]a[10-i]I由0变到4进展5次循环输出a[0]到a[10]shu输出a[0]到a[9]I由0变到8执行9次循环进展9-I次比拟真a[j]>a[I+I]假a[j]a[j+1]赋值I=0I=0输出I<11""输出I<11""假?完毕真?完毕<通过冒泡法对数组进展排序><测试时由于循环语句循环次数的错误导致局部数据没有排序,修改FOR语言中的条件即可调试成功>2,程序:#include<stdio.h>intmain(){ inta[11],i,j,t,b,c,temp1,temp2,temp3;//定义一个数组a[11],用以存放学生的成绩 printf("从键盘输入10个学生成绩:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]);//输入10个学生成绩 for(i=0;i<9;i++) for(j=0;j<9-i;j++) if(a[j]<a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;}//采用冒泡法,将学生成绩按照从高到低进展排序printf("10个学生成绩数组:\n"); for(i=0;i<10;i++) printf("%5d",a[i]);printf("\n"); printf("再输入一个学生的成绩\n");scanf("%d",&b);//再输入一个学生的成绩 c=a[9]; if(b<c)//将此成绩按照排序规律插入原学生成绩数组 a[10]=b; else {for(i=0;i<10;i++) {if(a[i]<b) {temp1=a[i];a[i]=b; for(j=i+1;j<11;j++) {temp2=a[j];a[j]=temp1;temp1=temp2; }break; } } }printf("11个学生成绩数组:\n");//输入11个学生成绩for(i=0;i<11;i++) printf("%5d",a[i]);printf("\n");for(i=0;i<5;i++)//排好序的成绩单进展反序存放 { temp3=a[i]; a[i]=a[10-i]; a[10-i]=temp3; }printf("排好序的成绩单进展反序存放为:\n");for(i=0;i<11;i++)//输出反序存放后的学生成绩数组 printf("%5d",a[i]);printf("\n");return0;}3,运行结果:2,根据条件进展学生成绩排名1,流程图:I=0,i++输入nSort1sort2I=0,i++输入nII=0,i++I<10""假?I<10""I<nI<n输出a[0]到a[9]I由0变到8执行9次循环进展9-I次比拟真a[j]>a[I+I]假a[j]a[j+1]赋值真?输出a[0]到a[9]I由0变到8执行9次循环进展9-I次比拟真a[j]>a[I+I]假a[j]a[j+1]赋值赋值赋值I由0变到n-1执行n次循环I由0变到n-1执行n次循环进展n-1-I次比拟真a[j]>a[I+I]假a[j]a[j+1]输出a[0]到a[n-1]输出a[0]到a[n-1]Style=97赋值I<nI=0,i++输入nStyle=97赋值I<nI=0,i++输入nSort3假?SStyle=100假?真?真?I由0变到n-1执行n次循环进展n-1-I由0变到n-1执行n次循环进展n-1-I次比拟真a[j]<a[I+I]假a[j]a[j+1]I由0变到n-1执行n次循环进展n-1-I次比拟真a[j]>a[I+I]假a[j]a[j+1]输入aord输入aord输出a[0]到a[n-1]输出a[0]到a[n-1]2,程序:#include<stdio.h>voidsort1(inta[10])//定义函数{inti,j,t; printf("输入10个学生成绩:\n");for(i=0;i<10;i++) scanf("%d",&a[i]);//输入n个学生成绩for(i=0;i<10;i++)//冒泡法对n个数字排序 for(j=0;j<9-i;j++) if(a[j]<a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;}printf("10个学生成绩从高到低排名是:\n");for(i=0;i<10;i++)//输出结果 printf("%5d",a[i]); printf("\n");}voidsort2(inta[],intn)//定义函数{ inti,j,t;printf("请输入学生个数n:\n");scanf("%d",&n); printf("输入n个学生成绩:\n");for(i=0;i<n;i++) scanf("%d",&a[i]);for(i=0;i<n;i++)//冒泡法对n个数字排序 for(j=0;j<n-i-1;j++) if(a[j]<a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;} printf("n个学生成绩从高到低排名是:\n");for(i=0;i<n;i++)//输出结果 printf("%5d",a[i]); printf("\n");}voidsort3(inta[],intn,charstyle){charc;getchar(c);printf("请输入style类型:aord\n"); style=getchar(); printf("请输入学生个数n:\n"); scanf("%d",&n); printf("输入n个学生成绩:\n");inti,j,t;for(i=0;i<n;i++) scanf("%d",&a[i]); if(style==97) {printf("对n个数字升序排列为:\n"); for(i=0;i<n;i++)//冒泡法对n个数字升序排列 for(j=0;j<n-i-1;j++) if(a[j]>a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;} }elseif(style==100) {printf("对n个数字降序排列为:\n"); for(i=0;i<n;i++)//冒泡法对n个数字降序排列 for(j=0;j<n-i-1;j++) if(a[j]<a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;} } printf("n个学生成绩排名是:\n");for(i=0;i<n;i++)//输出结果 printf("%5d",a[i]); printf("\n");}intmain()//主函数{{printf("sort1:\n");//调用sort1函数inta[10]; sort1(a);} {printf("sort2:\n");//调用sort2函数 inta[30000],n; sort2(a,n);} {printf("sort3:\n");//调用sort3函数 inta[30000],n; charstyle; sort3(a,n,style);} return0;}<这个程序中输入字符时由于前面的程序的干扰,第一个输入字符语句会直接跳过,所以要另加一个空白的输入字符的语言,从而使程序中输入字符的语句能够正常运行><由于数组的长度必须要定义,而且不能用变量定义,鉴于要进展比拟的数据量n是一个整形的数,定义数组为一个较长数组即可>3,运行结果:3,用指针优化学生成绩排名流程图:Sortcopymain2,程序:#include<stdio.h>#include<string.h>voidsort(int*p)//定义函数sort{//将成绩数组按照从高到低进展排序,要求用函数实现 inti,j,t; for(i=0;i<9;i++) for(j=0;j<9-i;j++) if(*(p+j)<*(p+j+1)) {t=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=t;}}voidcopy(char*a,char*b)//定义函数copy{for(;*a!='\0';a++,b++)//复制该字符串,用函数实现 {*b=*a;} *b='\0';}intmain(){ inti,j,t,stu[10],*p;//定义一个数组stu[10]存放10个学生的成绩p=stu; printf("请输入10个数据:\n"); for(i=0;i<10;i++)//从键盘输入数据,用指针实现 scanf("%d",p+i); printf("数组stu[10]的内容为:\n"); for(i=0;i<10;i++)//将数组stu[10]的内容输出到屏幕上,用指针实现 printf("%5d",*(p+i)); printf("\n"); for(i=0;i<9;i++)//将成绩数组按照从高到低进展排序,用指针实现 for(j=0;j<9-i;j++) if(*(p+j)<*(p+j+1)) {t=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=t;} printf("成绩数组按照从高到低进展排序为:\n");p=stu;for(i=0;i<10;i++) printf("%5d",*(p+i)); printf("\n"); p=stu; sort(p);//调用函数sort printf("第三步内容放在函数中实现为:\n");for(i=0;i<10;i++) printf("%5d",*(p+i)); printf("\n"); printf("采用指针方法,输入字符串studentscore:\n"); char*a="studentscore"; charb[14]; copy(a,b);//调用函数copy printf("%s\n",b); return0;}<指针的传递是双向的,在赋值中有多种方法,比方说对数组直接赋值,或者直接对指针变量进展赋值><复制该字符串,用函数实现时是用循环语句把一个字符串的每一个字符赋值给另一个字符串>运行结果:4,学生成绩单制作流程图:RReturn0<构造体语言具有简洁,方便,模块化的特点,在初始化及输出过程中要注意输入输出方式><在输入字符串的时候,输入语句中不应有&>程序:#include<stdio.h>StructStudent//定义构造体 { charnumber[10]; charname[10]; intscore[3 ]; floataverage; }student[10];intmain(){ inti,j,t; for(i=0;i<10;i++)//初始化构造体 {printf("\n输入student%d成绩:\n",i+1); printf("number:"); scanf("%s",student[i].number); printf("name:");//存放10个学生的**,,三门课的成绩 scanf("%s",student[i].name); for(j=0;j<3;j++) {printf("score%d:",j+1); scanf("%d",&student[i].score[j]); } student[i].average=(student[i].score[0]+student[i].score[1]+student[i].score[2])/3.0; printf("average:%f",student[i].average);} printf("\n"); printf("输出数学成绩最高的学生的**、、以及该门课程的成绩:\n");//输出单门课成绩最高的学生的**、、以及该门课程的成绩 intma*=0,ma*_math=0,ma*_chinese=0,ma*_english=0,ma*_average=0,ma*_i=0; for(i=0;i<10;i++) { if(ma*_math<student[i].score[0]) { ma*_math=student[i].score[0]; ma*_i=i;} }printf("number=%s,name=%s,ma*_math=%d\n",student[ma*_i].number,student[ma*_i].name,student[ma*_i].score[0]);printf("输出中文成绩最高的学生的**、、以及该门课程的成绩:\n"); for(i=0;i<10;i++) { if(ma*_chinese<student[i].score[1]) { ma*_chinese=student[i].score[1]; ma*_i=i;} }printf("number=%s,name=%s,ma*_chinese=%d\n",student[ma*_i].number,student[ma*_i].name,student[ma*_i].score[1]);printf("输出中文成绩最高的学生的**、、以及该门课程的成绩:\n"); for(i=0;i<10;i++) { if(ma*_english<student[i].score[2]) { ma*_english=student[i].score[0]; ma*_i=i;} }printf("number=%s,name=%s,ma*_english=%d\n",student[ma*_i].number,student[ma*_i].name,student[ma*_i].score[2]);printf("输出三门课程的平均分数最高的学生的**、姓名及其平均分:\n"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机电工程2025年项目管理试题及答案
- 网络技术与企业发展关系试题及答案
- 信息系统项目管理师研究方法试题及答案
- 深入探讨2025年西方政治制度改革的试题及答案
- 机电工程行业背景试题及答案总结
- 美国与欧洲政治体制比较试题及答案
- 全面掌握网络工程师考试试题及答案
- 项目进度管理中的工具与方法试题及答案
- 客户关系管理 试卷 A卷答案
- 网络安全技术的应用与探索试题及答案
- 《无脊椎动物的演化》课件
- 建筑施工资料员培训课件:提升工程档案管理技能
- 全域旅游视角下浙江白水洋镇乡村旅游发展路径优化研究
- 2024北京西城区五年级(下)期末数学试题及答案
- 【课件】2025年安全生产月主题宣讲(一)
- 燕舞集团招聘试题及答案
- 2024园艺师考试栽培方法试题及答案
- 工程结算审核实务:重点难点解析及解决方案
- 小学数学课堂互动教学模式探究
- 外架承包合同完整版
- CHINET2024年全年细菌耐药监测结果
评论
0/150
提交评论