C语言数组实验报告.docx
《C语言数组实验报告.docx》由会员分享,可在线阅读,更多相关《C语言数组实验报告.docx(21页珍藏版)》请在冰豆网上搜索。
C语言数组实验报告
实验名:
数组
一、实验目的
1掌握数组定义的规则。
2、掌握C语言数组的基本用法。
二、实验内容
(一))题目1
1、编写程序,测试下列数组的定义方式是否正确
(1)main()
{
intn;
scanf(“%d,&n);
inta[n];
}
(2)main()
{
constintn=10;
inta[n];
}
(3)#include
#defineM10
main()
{
inta[M];
}
(4)main()
{
inta[2+2*4];
}
(5)#include
#defineM2
#defineN8
main()
{inta[M+N];
}
通过这一实验,可以说明什么问题?
2、输入和输岀信息描述及数据类型确定;
(1)
输入数据
序号
输入数据描述
数据类型
(1)
n,a[n]
int
(2)
n
constint
a[n]
int
(3)
a[M]或a[10]
int
(4)
a[2+2*4]
int
(5)
a[M+N]
int
3、程序调试
错误序
错误信息(列岀岀错语句以及岀
是否
解决方法
号
错提示)
解决
(1-1)
main.c|5|error:
expectedexpressionbefore'%'token|scanf(“%d,&n);
是
将%(两边的符号改为西文字符的引号
scanf("%d",&n);
(1-2)
main.c|6|warning:
unusedvariable'a'[-Wunused-variable]|inta[n];
是
将前面的n的输入去掉,把n改为具体数字
(5)
main.c|6|warning:
unused
是
加上个scanf(“%d',&a[M+N]);
variable'a'[-Wunused-variable]|inta[M+N];
4、相关问题回答
通过这一实验,可以说明什么问题?
1、
(2)(3)(4)(5)对,
(1)错,
(1)中a[n]的数组定义的【】里的常量表达式不能是变量。
2、一维数组定义的时候【】里的常量表达式包括常量和符号常量,但不能是变量。
(二))题目2
1、运行下面的C程序,根据运行结果,可以说明什么?
main()
{intnum[5]={1,2,3,4,5};
intii;
for(i=0;i<5;i++)
printf(“%d,num[i]);
}2、输入和输岀信息描述及数据类型确定;
(1)输入数据
数据类型
int
数据类型
int
序号输入数据描述
1num[5],i
(2)输岀数据
序号输出数据描述
1num[i]3、程序源代码(填写程序调试正确后的代码)
#include
intmain()
{
intnum[5]={1,2,3,4,5};/*
inti;
for(i=0;i<5;i++)/*
/*依次输出num[0]至num[4]*/return0;
}
定义num[5]*/
下标应该是0到4*/printf("%d",num[i]);
4、程序调试
错误错误信息(列出出错语句以及出错
序号提示)
1格式不对
2main.c|5|error:
unknowntype
name'inti'|
intii;
3main.c|7|error:
expected
expressionbefore'%'token|printf(“%d,num[i]);
4for(i=0;i<5;i++)
是否解决解决方法
是
是改为inti;
是将引号改为西文字符
是去掉等号
5、相关问题回答
运行结果:
12345
根据运行结果,可以说明什么?
说明:
数组元素的下标从0开始,比定义的时候会小一个。
(三))题目3
1、操作符&用以求一个变量的地址,这在函数scanf中已经使用过了。
现在要你设计一个程序,返回一个
3*5的二维数组各元素的地址,并由此说明二维数组中各元素是按什么顺序存诸的。
2、输入和输岀信息描述及数据类型确定;
(1)输入数据序号输入数据描述
1a【3]【5],i.j
2adress
数据类型
int
整型指针变量
(2)输岀数据序号输岀数据描述
1adress
数据类型
int
3、程序源代码(填写程序调试正确后的代码)
#include
intmain()
{
inta[3][5];
int*adress;//
inti,j;
for(i=0;i<3;i++)//
{
printf("\n");
for(j=0;j<5;j++)//
{
定义并初始化adress
每行循环
每列循环
adress=&a[i][j];//
printf("%d",adress);
将adress赋值为整型指针变量
}
return0;
}
4、测试与结果分析
(1、测试数据与结果
源文
可执行文件
测试
测试用例选取原
测试输入
测试输岀结果
是否
结果分析
件名
名
序号
因
数据
正确
1
无
无
是
无误
printf("排序后的数字为:
\n");
for(i=0;i<=9;i++)
依次输岀排序后的数字
printf("%d",a[i]);//
printf("\n");
return0;
}
2、输入和输岀信息描述及数据类型确定;
(1、输入数据
序号
输入数据描述
数据类型
1a[10],i,j,k
int
(2)输岀数据
int
a[i]
3、程序调试
错误
错误信息(列岀岀错语句以及岀错
是否
解决方法
序号
提示)
解决
1
输岀结果间无空格
是
在最后一个printf(“%(”的d后面加空格
4、测试与结果分析
(1)测试数据与结果
源文
可执行文件
测试
测试用例选取原
测试输入
测试输岀结果
是否
结果分析
件名
名
序号
因
数据
正确
1
测试用例
1121314
11213141567
是
无误
155667
788089
788980
(五))题目5
1、1983年,在ACRE林奖颁奖大会上,杰出的计算机科学家,UNIX的鼻祖,C语言的创始人之一,图林大奖得主,KenThompson上台的第一句话是:
“我是一个程序员,在我的1040表上,我自豪地写上了我的职业。
作为一个程序员,我的工作就是写程序,今天我将向大家提供一个我曾经写过的最精练的程序。
”这个程序如下:
chars[]={
‘\t',
‘0',
‘\n',
‘}',
‘;'
J5
‘\n',
‘\n',
‘/',
‘*'
‘\n',
/*(213linesdeleted)*/
0
};
/*
*Thestringisa
*representationofthebody
*ofthisprogramfrom'O'
*totheend
*/
main()
{inti;
printf(“char”};
for(i=O;s[i];i++)
printf(“n”,s[i]);
printf(“%S,s);
}
请上机运行这个程序,指岀它的功能和运行结果。
2、程序源代码(填写程序调试正确后的代码)
#include
chars[]={
'\t',
'O',
'\n',
'}',
1.1
JJ
'\n',
'\n',
'/',
'\n',
/*(213linesdeleted)*/
0
};
/*
*Thestringisa
*representationofthebody
*ofthisprogramfrom'0'
*totheend
*/
intmain()
{
inti;
printf("char\ts[]={\n");
for(i=0;s[i];i++)
printf("\t%d,\n",s[i]);
printf("%s",s);
return0;
}
3、程序调试
错误
错误信息(列岀岀错语句以及岀错
是否
解决方法
序号
提示)
解决
1
所有的引号和逗号格式不对
是
都改为西文字符
2
main.c|22|error:
expected'=',
',',';','asm'or
'__attribute__'before'{'token|
是
在main前^口int
3
main.c|23|warning:
missingterminating"character
是
改为
printf("char\ts[]={\n");
[enabledbydefault]|printf("char\ts[]={\"};
格式不完整
力口上include,return0;
(1)测试数据与结果
源文
可执行文件
测试
测试用例选取原
测试输入
测试输岀结果
是否
结果分析
件名
名
序号
因
数据
正确
1
测试用例
是
无误
4、相关问题回答
请上机运行这个程序,指岀它的功能和运行结果。
答:
功能输岀字符串的数值。
5、测试与结果分析
bars[]=<
9,
48,1W-125,59,10
10,
47,
42P
10>0
(六))题目6
1、题目内容描述
在下面的5X5魔方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些魔方矩阵中的元素读到一个二维整型数组中,然后,检验其是否为魔方矩阵,并将其按如下格式显示到
屏幕上。
17241815
23571416
46132022
101219213
11182529
2、程序源代码(填写程序调试正确后的代码)
#include
main()
{
inti,j,sum1,sum2;
intfind1=0,find2=0,m=0;
inta[5][5];
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
〃定义变量
//输入5*5个数字
for(i=0;i<5;i++)
for(j=0;j<5;j++)
〃输岀矩阵
printf("%d",a[i][j])
for(i=0;i<=4;i++)
{
if(a【i]【5]!
=a【5]【i]||a【i]【5]!
=sum1)
{
printf("此矩阵不为魔方矩阵\n");break;
}
}
if(i==5)
printf("此矩阵为魔方矩阵\n");
}
}
3、测试与结果分析
(1、测试数据与结果
源文
可执行文件
测试
测试用例选取原
测试输入
测试输岀结果
是否
结果分析
件名
名
序号
因
数据
正确
1
题目
是
无误
17
24
1
8
15
23
5
7
14
16
4
6
13
20
22
10
12
19
21
3
11
16
2S
2
?
此矩阵为魔方矩阵
(七)题目7
1、题目内容描述
餐饮服务质量调查打分
在商业和科学研究中,人们经常需要对数据进行分析并将结果以直方图的形式显示岀
来。
例如,一个公司的主管可能需要了解一年来公司的营业状况,比较一下各月份的销售收
入状况,如果仅给出一大堆数据,这显然太不直观了,如果能将这些数据以条形图(直方图)
的形式表示,那么将会大大增加这些数据的直观性,也便于数据的分析与对比。
下面以顾客
对餐饮服务打分为例,练习一下这方面的程序。
假设现在有40个学生被邀请来给自助餐厅的
食品和服务质量打分,分数为从1~10的10个等级(1意味着最低分,10表示最高分),试统计调
查结果,并用’*'打印出如下形式的统计结果直方图。
GradeCountHistogram
*****
(八)题目8
1、题目内容描述
由计算机随机生成一个各位相异的4位数字,由人来猜,每次提示:
xAxB
A前面的数字表示有几个数字猜对位置也对了
B前面的数字表示有几个数字猜对但位置不对
提示:
用数组a存计算机随机生成的4位数,用数组b存人猜的4位数,对a和b的相同位置的元素进行比较,得到A前面的数字,对a和b的不同位置的元素进行比较,得到B前面的数字。
2、输入和输岀信息描述及数据类型确定;
(1)输入数据
数据类型
int
数据类型
int
序号输入数据描述
1a[4],b[4],m,n,i,j,
(2)输岀数据
序号输出数据描述
1M,n
3、程序源代码(填写程序调试正确后的代码)
#include
#include#includeintmain()
{
inti,j,m,n;
inta[4],b[4];
m=0;
n=0;
if((a[0]!
=a[1])&&(a[0]!
=a[2])&&(a[0]!
=a[3])&&(a[1]!
=a[2])&&(a[1]!
=a[3])&&(a[2]!
=a[3])){
n++;
}
}
}
printf("%dA%dB\n",m,n);
}
printf("你答对了!
\n");〃m=4时输出
}
return0;
}
6104
请输入你猜想的数字匕
345£0A2B
请输入你猜想的数字匕
04&80A3B请输入你猜想的数字匕
46051A2E
请输入你猜想的数字匕
&140
2f|2E
请输入你猜想的数字匕
&1044R0E你答对了!