C语言-数组-实验题目及答案.doc_第1页
C语言-数组-实验题目及答案.doc_第2页
C语言-数组-实验题目及答案.doc_第3页
C语言-数组-实验题目及答案.doc_第4页
C语言-数组-实验题目及答案.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

实验六 数组程序设计【实验目的】1、 掌握使用一维数组编程方法2、 掌握使用二维数组进行程序设计【实验内容】一、上机验证程序,并分析结果要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。1、#include int main() int a =1,2,3,4,5 , i, j, s=0 ; j = 1; for ( i = 4 ; i=0 ; i-) s = s+ ai * j ; j = j * 10 ; printf( s= %d n , s ); return 0;分析结果运行结果二、程序改错题1.下面程序的功能,是从键盘输入一个数组(数组长度为10),查找数组中正数的个数。源代码如下,程序中存在错误,请将其改正。#include int main() int a(10);/*定义数组*/ int count,i;/* i循环变量 count 正数个数*/ for(i=0;i=10;i+) /*循环输入*/ scanf(%d,ai); count=1; for(i=0;i0)count+; printf(数组中正数有:%d个n,count); return 0;三 编写程序1 编写程序要求输入30个学生的单科成绩,输出高于平均分的成绩。#include #define N 30int main() float scoreN,sum=0,aver; int i; for(i=0;i30;i+) scanf(%f,&scorei); sum=sum+scorei; aver=sum/30; printf(平均分为:%.2fn,aver); for(i=0;iaver) printf(%.2f ,scorei); printf(n); return 0;2 编写程序:假设有13位评委参与评分工作。计算每位歌手最终得分的方法是:去掉一个最高分和一个最低分,然后计算剩余11个分数的平均值,所得结果就是选手的最终得分。#include#define N 13int main() int scoreN,sum=0,i,high,low; for(i=0;iN;i+) printf(请输入第%d位评委成绩:,i+1); scanf(%d,&scorei); sum+=scorei; high=score0; low=score0; for(i=0;iN;i+) if (highscorei) low=scorei; printf(歌手最后得分为:%gn,(float)(sum-high-low)/(N-2);3. 假设给定一个书籍编号的数组(数组大小和数据自己设定),查找某本书是否在此数组中个,如果有,显示查找成功以及该书在数组中的下标,否则显示查找失败。#include#define N 5int main()int aN,i,flag=0,s;printf(请输入书籍编号:n);for (i=0;iN;i+)scanf(%d,&ai);printf(请输入需要查找的书籍编号:n);scanf(%d,&s);for (i=0;iN;i+)if(ai=s)flag=1; break; if(flag) printf(查找成功!编号为%d的书籍的位置是%dn,s,i+1);elseprintf(查找失败!请确认书籍编号是否正确!n);return 0;4. 编写程序验证冒泡法排序#include int main() int a11,i,j,t; printf(Input 10 numbers:n); for(i=1;i11;i+) scanf(%d,&ai); printf(n); for(i=1;i=9;i+) for(j=1;jaj+1) t=aj; aj=aj+1; aj+1=t; printf(The sorted numbers:n); for(i=1;i11;i+)printf(%d ,ai); return 0;5. 编写程序验证选择法排序方法一:#include int main() int a11,i,j,k,temp; printf(Input 10 numbers:n); for(i=1;i11;i+) scanf(%d,&ai); for(i=1;i10;i+) k=i; for(j=i+1;j11;j+) if(ajak) k=j; if(i!=k) temp=ai; ai=ak; ak=temp; printf(The sorted numbers:n); for(i=1;i11;i+)printf(%d ,ai); return 0;方法二:#include #define NUM 10 /* 参与排序的数据个数 */int main() int dataNUM; /* 存放参与排序的所有整数 */ int i, j, minValue, temp; /* 通过键盘输入待排序的整型数列 */ printf(nEnter %d integers., NUM); for (i=0; iNUM; i+) scanf(%d, &datai); /* 选择排序 */ for (i=0; iNUM-1; i+) minValue = i;for (j=i+1; jNUM; j+) /* 选择iNUM-1之间的最小数值 */if (datajdataminValue)minValue = j;if (minValue!=i) /* 交换 */temp = datai;datai = dataminValue;dataminValue = temp; /* 输出排序后的结果 */ printf(nOrdering list is:n); for (i=0; iNUM; i+) printf(%5d, datai); return 0;6. 编写程序验证二分查找#include #define NUM 10int main( ) int valueNUM = 12, 23, 30, 45, 48, 50, 67, 82, 91, 103; /* 非递减整型数列 */ int low, high, mid, key; printf(nEnter a key:); /* 输入查找的数值 */ scanf(%d, &key); /* 利用二分查找在有序数列中查找key */ low = 0;high = NUM-1; while (low=high) mid = (low+high)/2;if (valuemid=key)break;if (valuemidkey) low = mid+1;else high = mid-1; /* 输出查找结果 */ if (low=high) printf(n%d is found at %d., key, mid);/* 确认break出口 */ else printf(n%d is not found., key);/* 确认循环正常出口 */ return 0;7.将一个数组的值按逆序重新存放,例如,原来顺序为:8,10,4,23,1。要求改为:1,23,4,10,8。方法一 #include #define N 10int main() int aN,i,j,temp; for(i=0;iN;i+) scanf(%d,&ai); for(i=0,j=N-1;ij;i+,j-) temp=ai; ai=aj; aj=temp; for(i=0;iN;i+) printf(%d ,ai); printf(n); return 0; 方法二:#include #define N 10int main() int aN,i,temp; for(i=0;iN;i+) scanf(%d,&ai); for(i=0;iN/2;i+) temp=ai; ai=aN-i-1;/*第一个和最后一个交换,第二个和倒数第二个交换,.一直到N/2的时候,也就是数组的一半的时候*/ aN-i-1=temp; for(i=0;iN;i+) printf(%d ,ai); printf(n);return 0;8. 输入nn阶,编程计算其两条对角线上各元素之和。 方法一:#include #define N 3int main()int aNN,i,j,sum1=0,sum2=0,sum=0;printf(请输入%d行%d列的矩阵:n,N,N);for (i=0;iN;i+)for(j=0;jN;j+)scanf(%d,&aij);for (i=0;iN;i+)sum1=sum1+aii;sum2=sum2+aiN-1-i;sum=sum1+sum2;if(N%2=1)sum=sum-aN/2N/2;printf(主对角线元素之和为%d;n副对角线元素之和为%d;n主副对角线元素之和为%dn,sum1,sum2,sum);方法二:#include#define N 10int main()int aNN,i,j,n,sum=0;printf(请输入阶乘:);scanf(%d,&n);for(i=0;i=n-1;i+) for(j=0;j=n-1;j+) scanf(%d,&aij); if(i=j|i+j=n-1) sum+=aij; printf(对角线的和为 %dn,sum);选做题P85页-例4-1:10名候选人参与竞选,编写程序,输入一组选举人的投票信息,统计每个候选人的得票数目及选举结果。P87页例4-2:编写程序统计从键盘输入一行文本中每个英文字母出现的频率。3.模拟掷骰子游戏100次,编程统计并输出骰子的6个面各自出现的次数。方法一:#include#include#include#define N 100int main()int sN;int a,b,c,d,e,f,i;srand(time(NULL);for(i=0;iN;i+)si=rand()%6+1;a=b=c=d=e=f=0;for(i=0;iN;i+)if(si=1)a+;else if(si=2)b+;else if(si=3)c+;else if(si=4)d+;else if(si=5)e+;else if(si=6)f+;printf( 1点出现的次数为:%dn,a);printf( 2点出现的次数为:%dn,b);printf( 3点出现的次数为:%dn,c);printf( 4点出现的次数为:%dn,d);printf( 5点出现的次数为:%dn,e);printf( 6点出现的次数为:%dn,f);方法二:#include #include #include #define N 100int main() int r6=0;int i;srand(time(NULL);for(i=0;iN;i+)rrand()%6+;for(i=0;i6;i+)printf(%d点:%5d次n,i+1,ri);return 0;4.打印出以下杨辉三角形(要求打印出10行)。 1 11 121 1331 1464

温馨提示

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

评论

0/150

提交评论