C语言数组实验报告Word下载.docx

上传人:b****5 文档编号:19788320 上传时间:2023-01-10 格式:DOCX 页数:20 大小:37.62KB
下载 相关 举报
C语言数组实验报告Word下载.docx_第1页
第1页 / 共20页
C语言数组实验报告Word下载.docx_第2页
第2页 / 共20页
C语言数组实验报告Word下载.docx_第3页
第3页 / 共20页
C语言数组实验报告Word下载.docx_第4页
第4页 / 共20页
C语言数组实验报告Word下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

C语言数组实验报告Word下载.docx

《C语言数组实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《C语言数组实验报告Word下载.docx(20页珍藏版)》请在冰豆网上搜索。

C语言数组实验报告Word下载.docx

a[M]或a[10]

(4)

a[2+2*4]

(5)

a[M+N]

3、程序调试

错误序号

错误信息(列出出错语句以及出错提示)

是否解决

解决方法

(1-1)

main.c|5|error:

expectedexpressionbefore'

%'

token|

将%d两边的符号改为西文字符的引号scanf("

%d"

&

(1-2)

main.c|6|warning:

unusedvariable'

a'

[-Wunused-variable]|

将前面的n的输入去掉,把n改为具体数字

inta[M+N];

加上个scanf(“%d”,&

a[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]);

}

1

num[5],i

(2)输出数据

输出数据描述

num[i]

3、程序源代码(填写程序调试正确后的代码)

#include<

intmain()

{

intnum[5]={1,2,3,4,5};

/*定义num[5]*/

inti;

for(i=0;

i++)/*下标应该是0到4*/printf("

num[i]);

/*依次输出num[0]至num[4]*/

return0;

4、程序调试

格式不对

2

unknowntypename'

inti'

|

改为inti;

3

main.c|7|error:

将引号改为西文字符

4

i++)

去掉等号

5、相关问题回答

运行结果:

12345

根据运行结果,可以说明什么?

说明:

数组元素的下标从0开始,比定义的时候会小一个。

(三))题目3

1、操作符&

用以求一个变量的地址,这在函数scanf中已经使用过了。

现在要你设计一个程序,返回一个

3*5的二维数组各元素的地址,并由此说明二维数组中各元素是按什么顺序存诸的。

a[3][5],i.j

adress

整型指针变量

intmain()

inta[3][5];

int*adress;

//定义并初始化adress

inti,j;

3;

i++)//每行循环

{

printf("

\n"

);

for(j=0;

j<

j++)//每列循环

{

adress=&

a[i][j];

//将adress赋值为整型指针变量

printf("

%d"

adress);

}

4、测试与结果分析

(1)、测试数据与结果

源文件名

可执行文件名

测试序号

测试用例选取原因

测试输入数据

测试输出结果

是否正确

结果分析

无误

(四))题目4

为一个起泡排序程序设计测试用例,并测试之。

1、程序源代码(填写程序调试正确后的代码)

inta[10];

//定义一维数组a[10]

inti,j,k;

printf("

请输入10个数字:

=9;

scanf("

a[i]);

//依次输入数组的数字

//换行

for(j=0;

9;

j++)//进行9次循环,实现9趟比较

9-j;

i++)//在每一趟中进行9-j次比较

if(a[i]>

a[i+1])//相邻两数比较

k=a[i];

a[i]=a[i+1];

a[i+1]=k;

//若后一个比前一个大,则交换位置

排序后的数字为:

a[i]);

//依次输出排序后的数字

a[10],i,j,k

a[i]

 

输出结果间无空格

在最后一个printf(“%d”的d后面加空格

测试用例

1121314155667788980

11213141567788089

(五))题目5

1、1983年,在ACM图林奖颁奖大会上,杰出的计算机科学家,UNIX的鼻祖,C语言的创始人

之一,图林大奖得主,KenThompson上台的第一句话是:

“我是一个程序员,在我的1040表上,

我自豪地写上了我的职业。

作为一个程序员,我的工作就是写程序,今天我将向大家提供一

个我曾经写过的最精练的程序。

”这个程序如下:

chars[]={

‘\t’,

‘0’,

‘\n’,

‘}’,

‘;

’,

‘/’,

‘*’,

/*(213linesdeleted)*/

0

};

/*

*Thestringisa

*representationofthebody

*ofthisprogramfrom‘0’

*totheend

*/

{inti;

printf(“char\ts[]={\”};

for(i=0;

s[i];

printf(“\t%d,\n”,s[i]);

printf(“%s”,s);

请上机运行这个程序,指出它的功能和运行结果。

2、程序源代码(填写程序调试正确后的代码)

#include<

chars[]={

'

\t'

0'

\n'

}'

;

/'

*'

/*(213linesdeleted)*/

};

/*

*Thestringisa

*representationofthebody

*ofthisprogramfrom'

*totheend

*/

char\ts[]={\n"

);

for(i=0;

\t%d,\n"

s[i]);

%s"

s);

所有的引号和逗号格式不对

都改为西文字符

main.c|22|error:

expected'

='

'

'

asm'

or'

__attribute__'

before'

{'

在main前加int

main.c|23|warning:

missingterminating"

character[enabledbydefault]|

printf("

char\ts[]={\"

};

改为

格式不完整

加上include,return0;

答:

功能输出字符串的数值。

5、测试与结果分析

(六))题目6

1、题目内容描述

在下面的5×

5魔方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些魔方矩阵中的元素读到一个二维整型数组中,然后,检验其是否为魔方矩阵,并将其按如下格式显示到屏幕上。

17241815

23571416

46132022

101219213

11182529

main()

inti,j,sum1,sum2;

intfind1=0,find2=0,m=0;

//定义变量

inta[5][5];

j++)

a[i][j]);

//输入5*5个数字

a[i][j]);

//输出矩阵

for(sum1=0,i=0;

=4;

i++)//计算对角线元素和

sum1+=a[i][i];

for(sum2=0,i=0,j=4;

i++,j--)

sum2+=+a[i][j];

//计算对角线元素和

%d\t"

a[i][j]);

//打印魔方矩阵

if(sum1!

=sum2)

此矩阵不为魔方矩阵\n"

//判断对角线和是否相等

m=1;

a[i][5]+=a[i][j];

a[5][j]+=a[i][j];

//判断各行列和是否相等

}

if(m==0)

for(i=0;

if(a[i][5]!

=a[5][i]||a[i][5]!

=sum1)

{

break;

}

if(i==5)

此矩阵为魔方矩阵\n"

3、测试与结果分析

题目

(七)题目7

餐饮服务质量调查打分

在商业和科学研究中,人们经常需要对数据进行分析并将结果以直方图的形式显示出

来。

例如,一个公司的主管可能需要了解一年来公司的营业状况,比较一下各月份的销售收

入状况,如果仅给出一大堆数据,这显然太不直观了,如果能将这些数据以条形图(直方图)

的形式表示,那么将会大大增加这些数据的直观性,也便于数据的分析与对比。

下面以顾客

对餐饮服务打分为例,练习一下这方面的程序。

假设现在有40个学生被邀请来给自助餐厅的

食品和服务质量打分,分数为从1~10的10个等级(1意味着最低分,10表示最高分),试统计调

查结果,并用‘*’打印出如下形式的统计结果直方图。

GradeCountHistogram

15*****

210**********

37*******

...

score[40],i,j,grade,count[11]

grade,count[grade]

char

intscore[40],i,j,grade;

intcount[11]={0};

//定义并初始化数组count【11】

40;

pleaseinputscore[%d]:

"

i+1);

scanf("

score[i]);

//输入每个分数

switch(score[i])//统计每个分数的个数

case1:

count[1]++;

break;

//评分为1时,数组中count[1]加一

case2:

count[2]++;

//评分为2时,数组中count[2]加二

case3:

count[3]++;

case4:

count[4]++;

case5:

count[5]++;

case6:

count[6]++;

case7:

count[7]++;

case8:

count[8]++;

case9:

count[9]++;

case10:

count[10]++;

default:

Inputerror!

//其余情况

Grade\tCount\tHistogram\n"

//输出表头

for(grade=1;

grade<

=10;

grade++)//统计每个分数的个数

%d\t%d\t"

grade,count[grade]);

//输出分数和每个分数的个数

count[grade];

%c"

//根据评分的个数输出*数

8个2,9个3,5个4,13个6,3个7,23,76

如下图

2个1,4个2,3个3,1个4,5个5,6个6,5个7,2个8,6个9,3个10,78,0,22

(八)题目8

由计算机随机生成一个各位相异的4位数字,由人来猜,每次提示:

xAxB

A前面的数字表示有几个数字猜对位置也对了

B前面的数字表示有几个数字猜对但位置不对

提示:

用数组a存计算机随机生成的4位数,用数组b存人猜的4位数,对a和b的相同位置的元素进行比较,得到A前面的数字,对a和b的不同位置的元素进行比较,得到B前面的数字。

a[4],b[4],m,n,i,j,

M,n

stdlib.h>

time.h>

inti,j,m,n;

inta[4],b[4];

m=0;

n=0;

srand(time(NULL));

//产生随机数

if((a[0]!

=a[1])&

&

(a[0]!

=a[2])&

=a[3])&

(a[1]!

(a[2]!

=a[3]))

4;

a[i]=rand()%10;

//输出不同的四个个位数

while(m!

=4)//当m不等于4的时候循环

请输入你猜想的数字:

b[j]);

if(a[i]==b[i])

m++;

//位置和数字都对

if((a[i]==b[j])&

(i!

=j))//位置不对但数字对

n++;

%dA%dB\n"

m,n);

}

你答对了!

//m=4时输出

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 解决方案

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1