《C语言程序设计》李学刚数字资源9章 参考答案 2同步训练答案 同步训练61答案.docx
- 文档编号:7881375
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:16
- 大小:23.61KB
《C语言程序设计》李学刚数字资源9章 参考答案 2同步训练答案 同步训练61答案.docx
《《C语言程序设计》李学刚数字资源9章 参考答案 2同步训练答案 同步训练61答案.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》李学刚数字资源9章 参考答案 2同步训练答案 同步训练61答案.docx(16页珍藏版)》请在冰豆网上搜索。
《C语言程序设计》李学刚数字资源9章参考答案2同步训练答案同步训练61答案
同步训练6-1答案
一、单项选择题
1.已定义:
floata[5];则数组a可引用的元素有(D)。
A.a[1]~a[5]B.a[0]~a[5]C.a[1]~a[4]D.a[0]~a[4]
2.已定义:
inta[15];则数组a占用的内存单元数是(C)。
A.15B.30C.60D.120
3.若有以下定义:
doublew[10];则数组w的元素下标范围是(B)。
A.[0,10]B.[0,9]C.[1,10]D.[1,9]
4.设有程序,则在程序中的两个括号中应填入(C)。
#include
intmain()
{
inti,a[5];printf{"Pleaseinputnumber:
\n"};
for(i=0;i<=4;i++)scanf("%d",());
……
printf("输出数组:
\n");
for(i=0;i<4;i++)printf("%d",());
return0;
}
A.a[i]和&a[i]B.&a[i]和&a[i]
C.&a[i]和a[i]D.a[i]和a[i]
5.阅读程序,以下程序的输出结果是(D)。
f(intb[],intn)
{
inti,r=1;
for(i=0;i<=n;i++)r=r*b[i];
returnr;
}
intmain()
{
intx,a[]={2,3,4,5,6,7,8,9};
x=f(a,3);
printf("%d\n",x);
return0;
}
A.720B.6C.24D.120
6.已知int类型变量在内存中占用4个字节,定义数组intb[8]={2,3,4};则数组b在内存中所占字节数为(D)。
A.5B.12C.16D.32
7.以下程序段给数组所有元素输入数据,应在圆括号中填入的是(D)。
#include
intmain()
{
inta[10],i=0;
while(i<10)
scanf("%d",());
……
}
A.&a[++i]B.&a[i+1]C.&a[i]D.&a[i++]
8.若有以下说明:
inta[10]={1,2,3,4,5,6,7,8,9,10};charc='a';则数值为4的表达式是(D)。
A.a['f'-c]B.a[4]C.a['d'-'c']D.a['d'-c]
9.以下定义语句中,错误的是(B)。
A.inta[]={6,7,8};B.intn=5,a[n];
C.chara[]="string";D.chara[5]={'0','1','2','3','4'};
10.以下描述中正确的是(D)。
A.数组名后面的常量表达式用一对圆括弧括起来
B.数组下标从1开始
C.数组下标的数据类型可以是整型或实型
D.数组名的规定与变量名相同
11.用数组名作为函数调用时的实参,实际上传送给形参的是(A)。
A.数组首地址B.数组的第一个元素值
C.数组中全部元素的值D.数组元素的个数
12.若定义数组并初始化chara[10]={'0','1','2','3','4','5','6','7','8','9'};
以下正确语句是(C)。
A.scanf("%c",a[0]);B.scanf("%s",&a);
C.printf("%c",a[3]);D.printf("%s",a);
13.若定义数组inta[10],其数组元素的下标下限为(B)。
A.1B.0C.9D.10
14.若定义数组inta[10],其最后一个数组元素为(C)。
A.a[0]B.a[1]C.a[9]D.a[10]
15.若定义数组并初始化inta[10]={1,2,3,4},以下语句不成立的是(B)。
A.a[8]的值为0B.a[1]的值为1C.a[3]的值为4D.a[9]的值为0
16.若定义数组并初始化inta[10]={1,2,3,4},以下叙述成立的是(A)。
A.若引用a[10],编译时警告B.若引用a[10],连接时报错
C.若引用a[10],运行时出错D.若引用a[10],系统报错
17.指出以下错误语句(A)。
A.intn=10,a[n];B.intn,a[10];
C.inta[10]={1,2,3};D.inta[10]={1,2,3,4,5,6,7,8,9,10};
18.若定义数组并初始化inta[10]={1,2,3,4},以下叙述不成立的是(A)。
A.a[10]是a数组的最后一个元素的引用
B.a数组中有10个元素
C.a数组中每个元素都为整数
D.a数组是整型数组
19.执行下面的程序段后,变量k中的值为(A)。
intk=3,s[2];s[0]=k;k=s[1]*10;
A.不定值B.33C.30D.10
20.若有以下的定义和语句:
intstr[12]={1,2,3,4,5,6,7,8,9,10,11,12};charc='e',则数值为2的表达式是(C)。
A.str['g'-c]B.str[2]C.str['d'-'c']D.str['d'-c]
21.设已定义:
intx[2][4]={1,2,3,4,5,6,7,8};则元素x[1][1]的正确初值是(A)。
A.6B.5C.7D.1
22.设有intx[2][4]={1,2,3,4,5,6,7,8};printf("%d",x[2][4]);则输出结果是(C)。
A.8B.1C.随机数D.语法检查出错
23.设有:
inta[4][5];则数组a占用的内存字节数是(D)。
A.9B.20C.40D.80
24.以下程序的输出结果是(C)。
#include
intmain()
{
inti,a[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf("%d,",a[i][2-i]);
return0;
}
A.1,5,9B.1,4,7C.3,5,7D.3,6,9
25.指出以下错误语句(C)。
A.inta[2][3]={{1,2,3},{4,5,6}};B.intb[2][3]={1,2,3,4,5,6};
C.inta[][]={{1,2,3},{4,5,6}};D.inta[][3]={{1,2,3},{4,5,6}};
二、程序填空题
1.若有定义语句:
chars[100],d[100];intj=0,i=0;,且s中已赋字符串,请填空将字符串s拷贝到d中。
(注:
不得使用逗号表达式)
while(s[i])
{
d[j]=s[i++];
j++;
}
d[j]=0;
2.下列程序中,将k的值插入到有序数组a中,使数组依然保持升序,请填空。
#include
voidinsert(inta[],intx)
{
inti=0,j;
while(a[i] for(j=2;j>=i;j--) a[j+1]=a[j]; a[i]=x; } intmain() { inta[5]={1,4,5},i; intx; scanf("%d",&x); insert(a,x); for(i=0;i<4;i++) printf("%3d",a[i]); printf("\n"); return0; } 3.程序定义了N×N的二维数组,并在主函数中自动赋值。 请在函数fun()填空,该函数的功能是: 使数组左下半三角元素中的值全部置成0。 例如a数组中的值为 a=197 238 456 则返回主程序后a数组中的值应为 097 008 000 #include #include #defineN9 intfun(inta[][N]) { inti,j; for(i=0;i for(j=0;j<=i;j++) a[i][j]=0; return0; } intmain() { inta[N][N],i,j; printf("*****Thearray*****\n"); for(i=0;i { for(j=0;j { a[i][j]=rand()%10;/*产生一个随机的N*N矩阵*/ printf("%4d",a[i][j]); } printf("\n"); } fun(a); printf("THERESULT\n"); for(i=0;i { for(j=0;j printf("%4d",a[i][j]); printf("\n"); } return0; } 4.计算两个矩阵的乘积。 程序如下,请填空。 说明: 1.当矩阵A的列数等于矩阵B的行数时,A与B可以相乘。 2.矩阵C的行数等于矩阵A的行数,C的列数等于B的列数。 3.乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和。 #include #defineM2 #defineP3 #defineN4 voidfun(inta[M][P],intb[P][N],intc[M][N]) { inti,j,k,s; for(i=0;i { for(j=0;j { s=0; for(k=0;k s+=a[i][k]*b[k][j]; c[i][j]=s; } } } intmain() { inta[M][P],b[P][N],c[M][N]; inti,j,k; printf("Inputarraya[2][3];\n");//输入数组A的值 for(i=0;i { for(k=0;k scanf("%d",&a[i][k]); } printf("Inputarrayb[3][4];\n");//输入数组B的值 for(i=0;i { for(k=0;k scanf("%d",&b[i][k]); } fun(a,b,c); printf("Outputarrayc[2][4]: \n");//输出数组C的值 for(i=0;i { for(j=0;j { printf("%5d",c[i][j]); } printf("\n"); } return0; } 三、程序阅读题 1.以下程序运行后的输出结果是(abc)。 #include intmain() { chars[]="abcdef"; s[3]='\0'; printf("%s\n",s); return0; } 2.以下程序运行后的输出结果是(Hello)。 #include intmain() { charb[]="Hello,you"; b[5]=0; printf("%s\n",b); return0; } 3.以下程序运行后的输出结果是(1,3,7,15,)。 #include intmain() { inti,n[]={0,0,0,0,0}; for(i=1;i<=4;i++) { n[i]=n[i-1]*2+1; printf("%d,",n[i]); } return0; } 4.以下程序运行后的输出结果是(123)。 056 009 #include intmain() { inti,j,a[][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) { for(j=i+1;j<3;j++) { a[j][i]=0; } } for(i=0;i<3;i++) { for(j=0;j<3;j++) { printf("%d",a[i][j]); } printf("\n"); } return0; } 5.以下程序运行后的输出结果是(2650)。 #include intmain() { inta[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf("%d%d%d%d\n",a[0][4],a[1][2],a[2][1],a[3][0]); return0; } 四、程序设计题 1.求一个N*N矩阵对角线元素之和。 程序代码: #include #defineN5 floatsum(floata[N][N]) { floats=0; inti; for(i=0;i s=s+a[i][i]; returns; } intmain() { floata[N][N],s; inti,j; printf("请输入N*N个元素: \n"); for(i=0;i { for(j=0;j scanf("%f",&a[i][j]); } s=sum(a); printf("对角线元素之和为%\n",s); return0; } 2.将一个数组首尾互换后输出。 程序代码: #include #defineN6 voidconv(inta[]) { inti,temp; for(i=0;i { temp=a[i]; a[i]=a[N-i-1]; a[N-i-1]=temp; } } intmain() { inta[N]={11,9,8,2,1,0},i; printf("\n交换前: \n"); for(i=0;i printf("%4d",a[i]); conv(a); printf("\n交换后: \n"); for(i=0;i printf("%4d",a[i]); printf("\n"); return0; } 3.输入N个整数,分析每个整数的每一位数字,求出现次数最多的数字。 //把数组的下标0-9,和数字0-9对应起来,数组元素作为出现的个数 #include voidcount(inta[]); #defineN5 intmain() { inti,d,gw,a[10]={0}; printf("请输入%d个整数: \n",N); for(i=0;i { scanf("%d",&d); while(d>0) { gw=d%10; d=d/10; a[gw]++; } } count(a); return0; } voidcount(inta[]) { inti,maxnum; maxnum=a[0]; for(i=1;i<10;i++)//查找出现的最大次数 if(a[i]>maxnum) maxnum=a[i]; printf("出现%d次数字有: ",maxnum); for(i=0;i<10;i++)//查找出现次数最多的个位数字 if(a[i]==maxnum) printf("%d",i); printf("\n"); } 4.输入一个整数,输出每个数字对应的拼音。 当整数为负数时,先输出“fu”字。 程序代码: #include intwrite(intn); intmain() { intn; printf("请输入一个整数: "); scanf("%d",&n); if(n<0) { printf("fu"); n=-n; } write(n); return0; } intwrite(intn) { chara[][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; intt,mask=1; t=n; while(t>=10) { t=t/10; mask=mask*10;//得到位权 } while(mask>0) { t=n/mask;//得到最高位的值 printf("%s",a[t]); n=n%mask;//得到除最高位的值 mask=mask/10; } printf("\n"); return0; } 5.一个数如果恰好等于它的因子之和,这个数就称为“完数”。 例如6=1+2+3,找出100以内的所有完数。 程序代码: #include intwanshu(intt,intk[]) { inti,s; intflag=0; k[10]=-1; s=t; for(i=1;i { if((t%i)==0) { k[10]++; s=s-i; k[k[10]]=i; } } if(s==0) { flag=1; } returnflag; } intmain() { inti,j; intk[11]; for(i=2;i<=100;i++) { if(wanshu(i,k)) { printf("%d是一个完数,其因子是: ",i); for(j=0;j printf("%d,",k[j]); printf("%d\n",k[k[10]]); } } return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 C语言程序设计李学刚数字资源9章 参考答案 2同步训练答案 同步训练61答案 语言程序设计 李学刚 数字 资源 同步 训练 答案 61
![提示](https://static.bdocx.com/images/bang_tan.gif)