上机报告数组答案C语言doc.docx
《上机报告数组答案C语言doc.docx》由会员分享,可在线阅读,更多相关《上机报告数组答案C语言doc.docx(9页珍藏版)》请在冰豆网上搜索。
![上机报告数组答案C语言doc.docx](https://file1.bdocx.com/fileroot1/2023-1/11/98be14c3-d2c3-4e02-be77-e91f17439efa/98be14c3-d2c3-4e02-be77-e91f17439efa1.gif)
上机报告数组答案C语言doc
C语言上机报告数组
1、上机内容
完成实验指导书P261实验6的实验内容
(1),
(2),(3),(4)的实验内容。
(先自己编程,答案见指导书的习题解答)
2、上机作业(请先自行计算后再上机验证。
)
一、完成下列选择题
1.以下为一维整型数组a的正确说明是・
a)inta(10);b)intn=10,a[n];不能用变量
c)intn;d)#defineSIZE10;
scanf(”%d”,&n);intafSIZE];
inta[n];不能用变量
2.以下对二维数组a的正确说明是.
a)inta[3][];b)floata(3,4);
c)doublea[11[4]d)floata(3)(4);
3.以下能对一维数组a进行正确初始化的语句是。
A)inta[3]={0,0,0,0,0};超过数组长度B)inta[10]={);应至少有一个数据
C)inta[]={0};D)inta[IO]=(IO*l};
4.有以下程序段intk=0;while(k=l)k++;while循环执行的次数是
A)无限次while(k=l)总成立B)有语法错,不能执行C)一次也不执行
D)执行1次
5.运算完下面的C语言程序段以后,a的值是,b的值是,c的值是
intx=10,y=9;
inta,b,c;
a=(--x=y++)?
--x:
++y;
b=x++;c=y;
A、6913B、8711C、881()D、8710
6.若有说明:
inta[3][4]={0}测下而正确的叙述是。
A)只有元素a[0][0]nT得到初值0
B)此说明语句不正确
C)数组a中各元素都可得到初值,但其值不一定为0
D)数组a中每个元素均可得到初值0
7有如下程序
main()
{inti,sum;
for(i=1;iv=3;sum++)
sum+=i;
printf(”%d”,sum);}该程序的执行结果是
A)6B)3C)死循环,(i的值没有变)D)0
8以下程序的输出结果是
main()
{inti,a[10];
for(i=9;i>=0;i—)
a[i]=10-i;
printf(H%d%d%d,,,a[2],a[5],a[8]);}
A)258B)741C)852第•个循环q[9]—q[o]:
1234567890D)369
9、下面程序段的输出结果是。
charc[5]={'a','b','\0','c','\0'};
printf("%s",c);
A)B)ab第一个,\0'本字符申结束C)abcD)abc
10^设有数组定义:
charstr[]="Chinae”;则数组str所占空间为
A)5个字节B)6个字节C)7个字节"Chinae+‘\0'”D)8个字节11、下列描述中不正确的是
A)字符型数组中可以存放字符申
B)可以对字符型数组进行整体输入、输出。
利用函数puts,gets
0可以对整型数组进行整体输入、输出
D)不能在赋值语句中通过赋值运算符〃/对字符型数组进行整体赋值char*p=''sina"
12、以下定义语句,charb=‘\123‘;变量b—
A)包含4个字符B)包含3个字符
0包含2个字符D)包含1个字符'S'
13、以下语句的执行结果是(以下□代表空格):
chars[10];
s="abcd〃;s是数组首地址,不能再赋值
printfs);
A)输出abedB)输出aC)输出abcdD□□□□D)编译不通过
14.判断两个字符出si和s2相等,应当使用()。
A.if(si=s2)B.if(si=s2)
C.if(!
strcmp(sl,s2))D.if(strcmp(sl,s2))如果两字符申相等,strcmp(sl,s2)值为0,故应加上!
15二维数组a有m行n列,则在a[i][j]之前的元素个数为()。
A.j*n+iB.i*n+jC.i*n+jTD.i*n+j+l
16、下面程序段的输出结果是。
chara[7]=”abcdef”;
charb[4]="ABC”;
strcpy(a,b);〃执行后,数组a中的元素为’A''B''C'O''e''f'printf("%c”,a[5]);
A)B)\OC)eD)f
17、以下程序的输出结果是25
^include〃stdio.h〃
ttdefineN3
voidmain(){inta,b=0;
intc[10]={l,2,3,4,5,6,7,8,9,0};
for(a=0;a<10;++a)//a从0循环至9
if((a%2)=0)〃如果a是偶数,执行,成立条件为定0,2,4,6,8
b+=c[a];〃b二c[0]+c[2]+c[4]+c[6]+c[8]二1+3+5+7+9=25
18、以下程序的输出结果是^include〃stdio.h〃
voidmain()
{intn[3],i,j,k二2;
for(i=0;in[i]-0;//n[0],n[l]为0
for(i=0;ifor(j=0;jj第2循环、n[l]=n[0]+l=l+l=2;*/n[j]=n[i]+l;
〃i第二循环i=l
/*j从0—1循环两次j第1循环、n[0]=n[l]+l=2+l=3;
j第2循环、n[l]=n[l]+l=2+l=3;*/
printfn[0]);
}
19、以下程序的输出结果是
^include"stdio.h〃voidmain()
inty二8;
for(;y>0;y―)
{
if(y%3==0)//如果y%3=0成迂,则执行可成立的值为6,3
{
printf(〃%d〃,一y);//执行y=yT,再打印在屏幕上。
(所以打印6T
=5,3-1=2)
continue;
}
}
}
20、下面叙述正确的是。
A)两个字符出所包含的字符个数相同时,才能比较字符出
B)字符个数多的字符申比字符个数少的字符申大
C)字符串|”STOP与”STOP”相等
D)字符串”That"小于字符串”The"
二、程序填空题
(1)下面程序的功能是输入10个数,找出最大值和最小值所在的位置,并把两者对•调,然后输出调整后的10个数,请填空使程序完整。
voidmain()
(inta[10]={11,12,13,14,15,16,17,18,19,20};
intmax,min,i=0,j=0,k;
max=min=a[0];
for(i=0;i<10;i++)
(
if(a[i](
min=a[i];
〃记录最小值的元素下标
〃记录最大值的元素下标
【1】j=i;
}
if(a[i]>max)
(
max=a[i];
【2】k=i;
【3】a[j]=max;〃将最大值赋值给最小值的元素
【4】a「k]=min;〃将最小值赋值给最大值的元素
for(i=0;i<10;i++)
printf(”%d\t”,a[i]);
}
2)以下程序是将字符申b的内容连接字符数组a的内容后面,形成新字符中a,请填空使程序完整。
voidmain()
{
chara[40]=z/Great/,,b[]="Wall〃;
inti=0,j=0;
while(a.[i]!
='\0')
i++;〃找出数组a中字符申的结束符'\0'位置。
while(b[j]!
='\0,)
(
a[i]=b[j];
i++;j++;
}
Mi]='\o';//添加字符申的结束符'\o'
printf(z/%s\n,z,a);
三、编程练习。
:
1.韩信有一队兵,他想知道有多少人,便让士兵排队报数:
按从1至5报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;按从1至7报数,最末一个士兵报的数为4;最后再按从1至11报数,最末一个士兵报的数为I0o编程求韩信至少有多少兵?
^include〃stdio.h〃
voidmain()
{
inta;
for(a=11;;a++)
if(a%5==l&&a%6==5&&a%7==4&&a%ll==10)break;
printf(〃%d〃,a);
2、10个小孩围成一圈分糖果,老师顺次分给每个人的糖块数为12,2,8,22,16,4,10,6,14,20o然后按下列规则调整,所有小孩同时.把自己的糖果分一半给右边的小孩,糖块数变为奇数的人,再向老师补要一块,问经过多少次调整后,大家的糖块一样多,且每人多少块。
提示:
用一个包含11个变量的数组。
最后一个变量a[10]用于改变第一个人的糖数。
^include"stdio.h〃
^include"string.h〃voidmain()
{intaril]={12,2,8,22,16,4,10,6,14,201
〃围成一圈,最后一•个人的糖数=第一•个人的糖数
for(i=1;i<10;i++)
{if(a[0]!
=a[i])//如果有一个人的糖数不一样,
(flag。
;break;}//标志flag=1,同时退出本循环
elseflag";}//所有人的人糖数相等,标志flag^jO
}while(flag!
=O);//当所彳j人的人糖数相等结束大循环。
printfC分糖%d次后大家糖数一样多〃,n);}
3从键盘任意输入10个不相同的整数,然后,输入要查找的数x,如果在这10个数中找到x,则打印“Found!
”;如果找不到,则打印“Notfound!
”。
fidefineM10
^include"stdio.h〃
voidmain()
(
inta[M],i,x,flag=0;//flag做为查找标识
for(i=0;i(printf(〃a[i]=:
〃);
scanf&a[i]);}
putsC请输入一个数:
”)•、
scanf(〃%d”,&x);
for(i=0;iif(x=a[i])
flag二1;//如果找到,则标识flag=l
if(flag)
printf("Found");
else
printf("Nofound");
}
或
ttdefineM3
^include〃stdio.h〃
voidmain()
{
inta[M],i,x;
for(i=0;i{printf(〃a[i]二:
”);
scanf(〃%d”,&a[i]);)
puts(〃请输入一个数:
〃);
scanf(〃%d〃,&x);
for(i=0;iif(x==a[i])
{printf("Found");break;}
if(i==M)printfC'noFound");
}
4编写一个程序,将字符数组s2中的全部字符拷贝到字符数组si中,不用strcpy函数。
拷贝时,'\0‘也要拷贝过去。
‘\0’后面的字符不拷贝。
^defineM10
ttdefineN10
^include〃stdio.h〃
voidmain()
{
chara[M],b[N];
inti;
printfC请输入一个字符申:
”);gets(a);
for(i=0;(b[i]=a[i])!
=,\0,;i++);
printfC输入的字符申是:
〃);
puts(a);
printfC新的字符串是:
〃);
puts(b);