C语言数组实验报告.doc

上传人:w****2 文档编号:6464340 上传时间:2020-02-27 格式:DOC 页数:12 大小:135.50KB
返回 下载 相关 举报
C语言数组实验报告.doc_第1页
第1页 / 共12页
C语言数组实验报告.doc_第2页
第2页 / 共12页
C语言数组实验报告.doc_第3页
第3页 / 共12页
点击查看更多>>
资源描述
实验名: 数组一、 实验目的1、掌握数组定义的规则。2、掌握C语言数组的基本用法。二、实验内容(一)) 题目 11、编写程序,测试下列数组的定义方式是否正确(1) main() int n; scanf(“%d”,&n); int an; (2) main() const int n=10; int an; (3) #include #define M 10 main() int aM; (4) main() int a2+2*4; (5) #include #define M 2 #define N 8 main() int aM+N; 通过这一实验,可以说明什么问题?2、输入和输出信息描述及数据类型确定;(1)、输入数据序号输入数据描述 数据类型(1)n,anint(2)nancons tintint(3)aM或a10int(4)a2+2*4int(5)aM+Nint3、程序调试错误序号错误信息(列出出错语句以及出错提示)是否解决解决方法(1-1)main.c|5|error: expected expression before % token|scanf(“%d”,&n);是将%d两边的符号改为西文字符的引号scanf(%d,&n);(1-2)main.c|6|warning: unused variable a -Wunused-variable|int an;是将前面的n的输入去掉,把n改为具体数字(5)main.c|6|warning: unused variable a -Wunused-variable|int aM+N;是加上个scanf(“%d”,&aM+N);4、相关问题回答通过这一实验,可以说明什么问题?1、(2)(3)(4)(5)对,(1)错,(1)中an的数组定义的【】里的常量表达式不能是变量。2、一维数组定义的时候【】里的常量表达式包括常量和符号常量,但不能是变量。(二)) 题目 21、运行下面的C程序,根据运行结果,可以说明什么? main( ) int num5=1,2,3,4,5; inti i; for(i=0;i5;i+) printf(“%d”,numi); 2、输入和输出信息描述及数据类型确定;(1)、输入数据序号输入数据描述 数据类型1num5,iint(2)输出数据序号输出数据描述 数据类型1numiint3、程序源代码(填写程序调试正确后的代码)#include int main( ) int num5=1,2,3,4,5; /*定义num5*/ int i; for(i=0;i5;i+) /*下标应该是0到4*/ printf(%d,numi); /*依次输出num0至num4*/ return 0;4、程序调试错误序号错误信息(列出出错语句以及出错提示)是否解决解决方法1格式不对是2main.c|5|error: unknown type name inti|inti i;是改为 int i;3main.c|7|error: expected expression before % token|printf(“%d”,numi);是将引号改为西文字符4for(i=0;i5;i+)是去掉等号5、相关问题回答运行结果:12345根据运行结果,可以说明什么?说明:数组元素的下标从0开始,比定义的时候会小一个。(三)) 题目 31、操作符&用以求一个变量的地址,这在函数scanf中已经使用过了。现在要你设计一个程序,返回一个3 * 5 的二维数组各元素的地址,并由此说明二维数组中各元素是按什么顺序存诸的。2、输入和输出信息描述及数据类型确定;(1)、输入数据序号输入数据描述 数据类型1a35,i.jint2adress整型指针变量(2)输出数据序号输出数据描述 数据类型1adressint3、程序源代码(填写程序调试正确后的代码)#include int main() int a35;int *adress; /定义并初始化adressint i,j;for(i=0;i3;i+) /每行循环 printf(n);for(j=0;j5;j+) /每列循环adress=&aij; /将adress赋值为整型指针变量printf(%d ,adress); return 0;4、测试与结果分析(1)、测试数据与结果源文件名可执行文件名测试序号测试用例选取原因测试输入数据测试输出结果是否正确结果分析1无无是无误(四)) 题目 4为一个起泡排序程序设计测试用例,并测试之。1、程序源代码(填写程序调试正确后的代码)#include int main( ) int a10; /定义一维数组a10 int i,j,k; printf(请输入10个数字:n); for(i=0;i=9;i+) scanf(%d,&ai); /依次输入数组的数字 printf(n); /换行 for(j=0;j9;j+) /进行9次循环,实现9趟比较 for(i=0;iai+1) /相邻两数比较 k=ai; ai=ai+1; ai+1=k; /若后一个比前一个大,则交换位置 printf(排序后的数字为:n); for(i=0;i=9;i+) printf(%d ,ai); /依次输出排序后的数字 printf(n); return 0;2、输入和输出信息描述及数据类型确定;(1)、输入数据序号输入数据描述 数据类型1a10,i,j,kint(2)输出数据序号输出数据描述 数据类型1aiint3、程序调试错误序号错误信息(列出出错语句以及出错提示)是否解决解决方法1输出结果间无空格是在最后一个printf(“%d”的d后面加空格4、测试与结果分析(1)、测试数据与结果源文件名可执行文件名测试序号测试用例选取原因测试输入数据测试输出结果是否正确结果分析1测试用例1 12 13 14 15 56 67 78 89 801 12 13 14 15 67 78 80 89是无误(五)) 题目 51、1983年,在ACM图林奖颁奖大会上,杰出的计算机科学家,UNIX 的鼻祖,C 语言的创始人之一,图林大奖得主,Ken Thompson 上台的第一句话是:“我是一个程序员,在我的1040表上,我自豪地写上了我的职业。作为一个程序员,我的工作就是写程序,今天我将向大家提供一个我曾经写过的最精练的程序。”这个程序如下:char s = t,0,n,;,n,n,/,*,n,/* (213 lines deleted)*/ 0 ;/* * The string is a * representation of the body * of this program from 0 * to the end */ main( ) int i; printf(“char ts=” ; for (i=0;si;i+) printf(“t%d,n”,si); printf(“%s”,s); 请上机运行这个程序,指出它的功能和运行结果。2、程序源代码(填写程序调试正确后的代码)#includechar s =t,0,n,;,n,n,/,*,n,/* (213 lines deleted)*/0;/* The string is a* representation of the body* of this program from 0* to the end*/int main( ) int i; printf(char ts=n ); for (i=0;si;i+) printf(t%d,n,si); printf(%s,s); return 0;3、程序调试错误序号错误信息(列出出错语句以及出错提示)是否解决解决方法1所有的引号和逗号格式不对是都改为西文字符2main.c|22|error: expected =, , ;, asm or _attribute_ before token|是在main前加int3main.c|23|warning: missing terminating character enabled by default|printf(char ts= ;是改为printf(char ts=n );4格式不完整是加上include,return 0;4、相关问题回答请上机运行这个程序,指出它的功能和运行结果。答:功能输出字符串的数值。5、测试与结果分析(1)、测试数据与结果源文件名可执行文件名测试序号测试用例选取原因测试输入数据测试输出结果是否正确结果分析1测试用例是无误(六)) 题目 61、题目内容描述在下面的 55 魔方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些魔方矩阵中的元素读到一个二维整型数组中, 然后, 检验其是否为魔方矩阵,并将其按如下格式显示到屏幕上。17 24 1 8 1523 5 7 14 16 4 6 13 20 2210 12 19 21 311 18 25 2 92、程序源代码(填写程序调试正确后的代码)#includemain()int i,j,sum1,sum2;int find1=0,find2=0,m=0; /定义变量 int a55;for(i=0;i5;i+) for(j=0;j5;j+) scanf(%d,&aij); /输入5*5个数字for(i=0;i5;i+) for(j=0;j5;j+) printf(%d,aij); /输出矩阵 printf(n);for(sum1=0,i=0;i=4;i+)/计算对角线元素和sum1+=aii;for(sum2=0,i=0,j=4;i=4;i+,j-)sum2+=+aij;/计算对角线元素和for(i=0;i=4;i+)for(j=0;j=4;j+)printf(%dt,aij);/打印魔方矩阵printf(n);if(sum1!=sum2)printf(此矩阵不为魔方矩阵n); /判断对角线和是否相等m=1;for(i=0;i=4;i+)for(j=0;j=4;j+)ai5+=aij;a5j+=aij;/判断各行列和是否相等if(m=0)for(i=0;i=4;i+)if(ai5!=a5i | ai5!=sum1)printf(此矩阵不为魔方矩阵n);break;if(i=5)printf(此矩阵为魔方矩阵n);3、测试与结果分析(1)、测试数据与结果源文件名可执行文件名测试序号测试用例选取原因测试输入数据测试输出结果是否正确结果分析1题目是无误(七) 题目 71、题目内容描述餐饮服务质量调查打分在商业和科学研究中,人们经常需要对数据进行分析并将结果以直方图的形式显示出来。例如,一个公司的主管可能需要了解一年来公司的营业状况,比较一下各月份的销售收入状况, 如果仅给出一大堆数据, 这显然太不直观了, 如果能将这些数据以条形图 (直方图)的形式表示,那么将会大大增加这些数据的直观性,也便于数据的分析与对比。下面以顾客对餐饮服务打分为例, 练习一下这方面的程序。 假设现在有40个学生被邀请来给自助餐厅的食品和服务质量打分,分数为从110的10个等级(1意味着最低分,10表示最高分),试统计调查结果,并用*打印出如下形式的统计结果直方图。Grade Count Histogram1 5 *2 10 *3 7 *.2、输入和输出信息描述及数据类型确定;(1)、输入数据序号输入数据描述 数据类型1score40,i,j,grade,count11int(2)输出数据序号输出数据描述 数据类型1grade,countgradechar3、程序源代码(填写程序调试正确后的代码)#include int main()int score40,i,j,grade;int count11=0; /定义并初始化数组count【11】for(i=0;i40;i+) printf(please input score%d:,i+1);scanf(%d,&scorei); /输入每个分数switch(scorei) /统计每个分数的个数 case 1:count1+; break; /评分为1时,数组中count1加一 case 2:count2+; break; /评分为2时,数组中count2加二 case 3:count3+; break; case 4:count4+; break; case 5:count5+; break; case 6:count6+; break; case 7:count7+; break; case 8:count8+; break; case 9:count9+; break; case 10:count10+; break; default:printf(Input error!n); /其余情况printf(GradetCounttHistogramn); /输出表头for(grade=1;grade=10;grade+) /统计每个分数的个数printf(%dt%dt,grade,countgrade); /输出分数和每个分数的个数for(j=0;jcountgrade;j+)printf(%c,*); /根据评分的个数输出*数printf(n);return 0;4、测试与结果分析(1)、测试数据与结果测试序号测试用例选取原因测试输入数据测试输出结果是否正确结果分析1测试用例8个2,9个3,5个4,13个6,3个7,23,76如下图是无误2测试用例2个1,4个2,3个3,1个4,5个5,6个6,5个7,2个8,6个9,3个10,78,0,22如下图是无误 (八) 题目 81、题目内容描述由计算机随机生成一个各位相异的4位数字,由人来猜,每次提示:xAxBA前面的数字表示有几个数字猜对位置也对了B前面的数字表示有几个数字猜对但位置不对提示:用数组a存计算机随机生成的4位数,用数组b存人猜的4位数,对a和b的相同位置的元素进行比较,得到A前面的数字,对a和b的不同位置的元素进行比较,得到B前面的数字。2、输入和输出信息描述及数据类型确定;(1)、输入数据序号输入数据描述 数据类型1a4,b4,m,n,i,j,int(2)输出数据序号输出数据描述 数据类型1M,nint3、程序源代码(填写程序调试正确后的代码)#include#include#includeint main()int i,j,m,n;int a4,b4;m=0; n=0;srand(time(NULL); /产生随机数if(a0!=a1)&(a0!=a2)&(a0!=a3)&(a1!=a2)&(a1!=a3)&(a2!=a3) for(i=0;i4;i+) ai=rand()%10; printf(%d ,ai); /输出不同的四个个位数 printf(n); while(m!=4) /当m不等于4的时候循环 printf(请输入你猜想的数字:n); for(j=0;j4;j+) scanf(%d,&bj); printf(n); for(i=0;i4;i+) if(ai=bi) m+; /位置和数字都对 for(i=0;i4;i+) for(j=0;j4;j+) if(ai=bj)&(i!=j) /位置不对但数字对 n+; printf(%d A %d Bn,m,n); printf(你答对了!n); /m=4时输出 return 0;3、测试与结果分析(1)、测试数据与结果源文件名可执行文件名测试序号测试用例选取原因测试输入数据测试输出结果是否正确结果分析1测试用例是无误
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!