C语言练习3数组参考答案.docx
- 文档编号:484888
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:23
- 大小:22.57KB
C语言练习3数组参考答案.docx
《C语言练习3数组参考答案.docx》由会员分享,可在线阅读,更多相关《C语言练习3数组参考答案.docx(23页珍藏版)》请在冰点文库上搜索。
C语言练习3数组参考答案
C语言(数组)
一、选择题
1.设有程序:
main()
{inti,a[11];
printf("给数组赋值:
\n");
for(i=0;i<=10;i++)
scanf("%d",());
......
printf("输出数组:
\n");
for(i=0;i<=10;i++)
printf("%d,",());
}
则在程序中的两个园括号中分别应填入:
C
A)&a[i]和&a[i]
B)a[i]和&a[i]
C)&a[i]和a[i]
D)a[i]和a[i]
2.设已定义:
inta[15];则数组a占用的内存单元数是(C).
A)15B)16C)30D)32
3.阅读程序:
main()
{inta[2]={0},i,j,k=2;
for(i=0;i for(j=0;j printf("%d\n",a[k]); } 以上程序的输出结果是(D). A)1B)3C)2D)不确定的值 4.阅读程序: f(intb[],intn) {inti,r=1; for(i=0;i<=n;i++)r=r*b[i]; returnr; } main() {intx,a[]={2,3,4,5,6,7,8,9}; x=f(a,3); printf("%d\n",x); } 以上程序的输出结果是(D). A)720B)6C)24D)120 5.以下定义语句中,错误的是(B). A)inta[]={6,7,8}; B)intn=5,a[n]; C)chara[]="string"; D)chara[5]={'0','1','2','3','4'}; 6.以下描述中正确的是(D). A)数组名后面的常量表达式用一对圆括弧括起来 B)数组下标从1开始 C)数组下标的数据类型可以是整型或实型 D)数组名的规定与变量名相同 7.若定义数组并初始化chara[10]={'0','1','2','3','4','5','6','7','8','9'};指出以下错误语句(AB). A)scanf("%c",a[0]); B)scanf("%s",&a); C)printf("%c",a[3]); D)printf("%s",a); 8.若定义数组inta[10],其最后一个数组元素为(C). A)a[0] B)a[1] C)a[9] D)a[10] 9.若定义数组并初始化inta[10]={1,2,3,4},以下语句哪一个不成立(B)? A)a[8]的值为0 B)a[1]的值为1 C)a[3]的值为4 D)a[9]的值为0 10.指出以下错误语句(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}; 11.请读程序: main() {intn[2],i,j,k; for(i=0;i<2;i++)n[i]=0; k=2; for(i=0;i for(j=0;j printf("%d\n",n[k]); } 上面程序的输出结果是(A). A)不确定的值B)3C)2D)1 12.若有以下的定义和语句: 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] 13.设有数组定义: inta[5];则下列给数组元素赋值错误的是(B). A)a[3]=93; B)scanf("%c",a[3]); C)a[3]=getchar(); D)a[3]='a'+3; 14.以下数组定义中错误的是(D). A)#defineN30 inta[N+30]; B)#defineN30 inta[N];C)inta[30]; D)inta[N]; 15.在定义一个一维数组时,不能用来表示数组长度的是(D). A)常量B)符号常量C)常量表达式D)已被赋值的变量 16.若float型变量占用4个字节,有定义floata[20]={1.1,2.1,3.1};则数组a在内存中所占的字节数是(D). A)12B)20C)40D)80 17.设已定义: intx[2][4]={1,2,3,4,5,6,7,8};则元素x[1][1]的正确初值是(A). A)6B)5C)7D)1 18.设有定义: inta[][3]={{1,2,3},{4,5,6},{7,8,9}};则a[1][2]的初值为(C). A)2B)4C)6D)8 19.设有: inta[4][5];则数组a占用的内存字节数是(C). A)12B)24C)40D)20 20.以下数组定义中,不正确的是(B). A)intb[3][4]; B)intc[3][]={{1,2},{1,2,3},{4,5,6,7}}; C)intb[200][100]={0}; D)intc[][3]={{1,2,3},{4,5,6}}; 21.定义数组: intx[2][3];则数组x的维数是 (2). A)1B)2C)3D)6 22.若定义数组并初始化intb[2][3]={1,2,3,4,5,6},以下语句哪一个成立(C)? A)表达式b[1][2]的值为1 B)表达式b[1][2]的值为4 C)表达式b[1][2]的值为6 D)表达式b[1][2]的值为2 23.若定义数组并初始化inta[2][3]={{1,2,3},{4,5,6}}; for(i=0;i<2;i++) for(j=0;j<3;j++) printf("%d",a[i][j]);语句的结果是哪一个(C)? A)1,2,3,4,5,6 B)123456 C)123456 24.若定义数组并初始化inta[2][3]={{1,2,3},{4,5,6}};以下语句哪一个不成立(B)? A)a数组中有6个元素 B)a[2][3]是a数组的最后一个元素的引用 C)a数组中每个元素都为整数 D)a数组是整型数组 25.定义如下变量和数组: inti; intx[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是(C). for(i=0;i<3;i++)printf("%d",x[i][2-i]); A)159B)147C)357D)369 26.如有以下定义: doubles[][5]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};则数值为2的元素是(C). A)s[1][3]B)s[0][3]C)s[0][2]D)s[1][2] 27.以下程序的输出结果是(A). main() {inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for(i=1;i<3;i++) for(j=0;j<=i;j++) s+=a[i][j]; printf("%d",s); } A)18B)19C)20D)21 28.若已有charb[10][50];则该二维字符数组在内存所占字节数为(D). A)10B)50C)60D)500 29.设有: chara[10];下列语句那个是正确的(D)? A)scanf("%s",a[0]); B)scanf("%s",&a); C)printf("%s",a[0]) D)printf("%s",a) 30.阅读程序: main() {chara[10]; inti; for(i=1;i<=5;i++) scanf("%c",&a[i]); printf("%c",a[0]); } 设从键盘输入字符串: abcde,则程序的输出结果是(C). A)aB)空格C)不确定D)0 31.合法的数组定义是(D). A)inta[]="string"; B)inta[5]={0,1,2,3,4,5}; C)chara="string"; D)chara[]={'0','1','2','3'}; 32.设有数组定义: charstring[]="China";则数组string所占的空间为(B). A)5个字节 B)6个字节 C)7个字节 D)10个字节 33.定义字符数组c: charc[]={"clanguage"};数组c在内存中所占字节数是(C). A)9 B)10 C)11 D)12 34.指出以下错误语句(C). A)chara[10]={'0','1','2','3','4','5','6','7','8','9'}; B)chara[10]={'0','1','2','3'}; C)chara[2]={"1","2"}; D)chara[2]={'a’,'b’}; 35.若定义数组并初始化chara[10]={"hello"},该数组的元素个数是(A). A)10 B)5 C)6 D)7 36.若定义数组并初始化chara[10]={"HELLO"},该数组的元素中a[2]是(A). A)'L' B)'E' C)'H' D)'O' 37.若定义数组并初始化intb[10]={1,2,3,4},以下哪几个语句成立(ACD)? A)b[8]的值为0 B)b[1]的值为1 C)b[3]的值为整数 D)b[10]不是b数组中的元素 38.若定义数组inta[10];指出下列错误语句: ABCD A)a数组共有10个元素,其引用方法是: a[1],a[2]...a[10]; B)a数组是整型数组,其元素自动初始化为0; C)a数组最后一个元素的引用方法是a[10]; D)a数组第一个元素的引用方法是a[1]; 二、判断题 1.数组是数目固定的若干变量的有序集合,数组中各元素的类型可以不同。 错 2.数组是C语言的一种构造数据类型,其元素的类型可以是整型、实型、字符型甚至结构类型。 对 3.设需定义一个有15个元素的数组a,并对其前5个元素赋初值,可用如下语句实现: inta[]={1,2,3,4,5};错 4.数组定义时,只允许使用常量表达式定义数组的大小,其值必须是正整数,而不能用变量来定义数组长度。 对 5.C语言数组的下标从0开始,下标必须是整数型的常量或变量。 对 6.数组是数目固定、类型相同的若干变量的有序集合。 数组中的每一个数(变量)称为数组元素,数组中的所有元素都属于同一种数据类型。 对 7.数组元素下标的下界是固定的,总是为0。 对 8.一维数组在引用时下标的范围是: 0<=下标<数组的长度。 对 9.若有数组定义为: inta[100];则该数组的下界为0,上界为100。 数组元素下标范围是: 下界<=下标<上界。 对 10.设已定义: doublea[5][5];则数组a在内存中的存放顺序是: a[0][0],a[0][1],a[0][2],...,a[4][3],a[4][4]。 对 二.填空题 1.在C语言中,二维数组的元素在内存中的存放顺序是按行的顺序依次存放。 2.若有定义: doublex[3][5],则x数组中行下标的下限为0,列下标的下限为0。 3.若有定义: inta[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]的值为0,a[2][1]得到的值为6。 4.字符串”ab\n\\012\\”的长度是8。 5.下面程序段的运行结果是he。 charx[]=”theteacher”; inti=0; while(x[++i]! =’\0’) if(x[i-1]==’t’)printf(“%c”,x[i]); 6.欲为字符串S1输入”HelloWorld! ”,其语句是scanf(“%s”,S1);。 7.欲将字符串S1复制到字符串S2中,其语句是strcpy(S2,S1);。 8.如果在程序中调用了strcat函数,则需要预处理命令#include 如果调用了gets函数,则需要预处理命令#include 9.C语言数组的下标总是从0开始,不可以为负数;构成数组各个元素具有相同的数据类型。 10.字符串是以‘\0’为结束标志的一维字符数组。 有定义: chara[]=””;则a数组的长度是0。 三.程序阅读题 1.写出下面程序的运行结果。 main() {inta[6][6],i,j; for(i=1;i<6;i++) for(j=1;j<6;j++) a[i][j]=(i/j)*(j/i); for(i=1;i<6;i++){ for(j=1;j<6;j++) printf(“%2d”,a[i][j]); printf(“\n”); } } 运行结果: 2.写出下面程序的运行结果。 main() {inti=0; chara[]=”abm”,b[]=”aqid”,c[10]; while(a[i]! =’\0’&&b[i]! =’\0’){ if(a[i]>=b[i])c[i]=a[i]-32; elsec[i]=b[i]-32; i++; } c[i]=’\0’; puts(c); } 运行结果: AQM 3.当运行下面程序时,从键盘上输入AabD↙,则写出下面程序的运行结果。 main() {chars[80]; inti=0; gets(s); while(s[i]! =’\0’){ if(s[i]<=’z’&&s[i]>=’a’) s[i]=’z’+’a’-s[i]; i++; } puts(s); } 运行结果: AzyD 4.写出下面程序的运行结果。 main() {inti,c; chars[2][5]={“8980”,”9198”}; for(i=3;i>=0;i--){ c=s[0][i]+s[1][i]-2*’0’; s[0][i]=c%10+‘\0’; } for(i=0;i<=1;i++)puts(s[i]); } 运行结果: 注: s数组中每个字符的ASCII值为: 5.当运行下面程序时,从键盘上输入748915↙,则写出下面程序的运行结果。 main() {inta[6],i,j,k,m; for(i=0;i<6;i++) scanf(“%d”,&a[i]); for(i=5;i>=0;i--){ k=a[5]; for(j=4;j>=0;j--) a[j+1]=a[j]; a[0]=k; for(m=0;m<6;m++) printf(“%d”,a[m]); printf(“\n”); } } 运行结果: 四.程序填空题 1.下面程序可求出矩阵a的主对角线上的元素之和,请填 (2)空使程序完整。 main() {inta[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) if(【i==j】) sum=sum+【a[i][j]】; printf(“sum=%d”,sum); } 2.下面程序将十进制整数n转换成base进制,请填(3)空使程序完整。 main() {inti,base,n,j,num[20]; scanf(“%d”,&n); scanf(“%d”,&base); do{ i++; num[i]=【n%base】; n=【n/base】; }while(n! =0); for(【j=i;j>0;j--】) printf(“%d”,num[j]); } 3.下面程序的功能是输入10个数,找出最大值和最小值所在的位置,并把两者对调,然后输出调整后的10个数,请填(3)空使程序完整。 main() {inta[10],max,min,i,j,k; for(i=0;i<10;i++) scanf(“%d”,&a[i]); max=min=a[0]; for(i=0;i<10;i++){ if(a[i] if(a[i]>max){max=a[i];【k=i】;} } 【max=a[j];a[j]=a[k];a[k]=max;】 for(i=0;i<10;i++) printf(“%d”,a[i]); } 4.下面程序的功能是在一个字符串中查找一个指定的字符,若字符串中包含该字符则输出该字符在字符串中第一次出现的位置(下标值),否则输出-1,请填 (2)空使程序完整。 #include main() {charc=’a’;/*需要查找的字符*/ chart[50]; inti,j,k; gets(t); i=【strlen(t)】; for(k=0;k if(【t[k]==c】) {j=k;break;} elsej=-1; printf(“%d”,j); } 5.下面程序用“顺序查找法”查找数组a中是否存在某一关键字,请填 (2)空使程序完整。 main() {inta[10]={25,57,48,371,123,291,18,22,44}; inti=0,x; scanf(“%d”,&x); 【a[10]=x】; while(a[i]! =x)i++; if(【i<10】)printf(“found=%d\n”,i); elseprintf(“can\’tfound! \n”); } 6.以下程序是将字符串b的内容连接字符数组a的内容后面,形成新字符串a,请填 (2)空使程序完整。 main() {chara[40]=”Great”,b[]=”Wall”; inti=0,j=0; while(a[i]! =’\0’)i++; while(【b[j]! ='\0'】){ a[i]=b[j];i++;j++; } 【a[i]='\0'】; printf(“%s\n”,a); } 五、编程题 [1]输入一行数字字符,请用数组元素作为计数器来统计每个数字字符的个数。 用下标为0元素统计字符“0”的个数,下标为1的元素统计字符“1”的个数,...。 #include #defineN80 voidmain() { charchs[N]; inti,count[10]; printf("Inputastring: "); scanf("%s",chs); for(i=0;i<10;i++)count[i]=0; for(i=0;i { count[chs[i]-'0']++; } for(i=0;i<10;i++) if(count[i])printf("%dcounts: %d\n",i,count[i]); } [2]编写程序求任意方阵每行、每列、两对角线元素之和。 #include #defineN5 #defineM5 voidmain() { inta[N][M]={{3,4,7,8,9}, {6,8,2,1,3}, {8,5,4,3,2}, {7,6,9,1,5}, {5,6,4,1,7}}; ints1[N];//存放每行的和 ints2[M];//存放每列的和 intsum1=0,sum2=0;//存放两对角线的和 inti=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 练习 数组 参考答案