2023年C语言练习3数组=参考答案_第1页
2023年C语言练习3数组=参考答案_第2页
2023年C语言练习3数组=参考答案_第3页
2023年C语言练习3数组=参考答案_第4页
2023年C语言练习3数组=参考答案_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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,",());}则在程序中的两个园括号中分别应填入:CA)&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)15 B)16 C)30 D)323.阅读程序:main(){inta[2]={0},i,j,k=2;for(i=0;i<k;i++) for(j=0;j<k;j++)a[j]=a[i]+1;printf("%d\n",a[k]);}以上程序的输出结果是(D).A)1 B)3 C)2 D)不拟定的值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)720 B)6 C)24 D)1205.以下定义语句中,错误的是(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]的值为0B)a[1]的值为1C)a[3]的值为4D)a[9]的值为010.指出以下错误语句(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<k;i++)for(j=0;j<k;j++)n[j]=n[i]+1;printf("%d\n",n[k]);}上面程序的输出结果是(A).A)不拟定的值B)3C)2D)112.若有以下的定义和语句: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)#defineN30inta[N+30];B)#defineN30inta[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)8017.设已定义:intx[2][4]={1,2,3,4,5,6,7,8};则元素x[1][1]的对的初值是(A).A)6 B)5 C)7 D)118.设有定义:inta[][3]={{1,2,3},{4,5,6},{7,8,9}};则a[1][2]的初值为(C).A)2 B)4 C)6 D)819.设有:inta[4][5];则数组a占用的内存字节数是(C).A)12 B)24 C)40 D)2020.以下数组定义中,不对的的是(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)622.若定义数组并初始化intb[2][3]={1,2,3,4,5,6},以下语句哪一个成立(C)?A)表达式b[1][2]的值为1B)表达式b[1][2]的值为4C)表达式b[1][2]的值为6D)表达式b[1][2]的值为223.若定义数组并初始化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,6B)123456C)12345624.若定义数组并初始化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)159 B)147 C)357 D)36926.如有以下定义: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)2128.若已有charb[10][50];则该二维字符数组在内存所占字节数为(D).A)10B)50C)60D)50029.设有: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)a B)空格 C)不拟定 D)031.合法的数组定义是(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)9B)10C)11D)1234.指出以下错误语句(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)10B)5C)6D)736.若定义数组并初始化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]的值为0B)b[1]的值为1C)b[3]的值为整数D)b[10]不是b数组中的元素38.若定义数组inta[10];指出下列错误语句:ABCDA)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<string.h>。假如调用了gets函数,则需要预解决命令#include<stdio.h>。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);

}运营结果:AQM3.当运营下面程序时,从键盘上输入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);

}运营结果:AzyD4.写出下面程序的运营结果。

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]<min){min=a[i];【j=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<string.h>main(){charc=’a’;/*需要查找的字符*/

chart[50];

inti,j,k;

gets(t);

i=【strlen(t)】;

for(k=0;k<i;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<stdio.h>#defineN80voidmain(){ charchs[N]; inti,count[10]; printf("Inputastring:"); scanf("%s",chs); for(i=0;i<10;i++)count[i]=0; for(i=0;i<N;i++) { count[chs[i]-'0']++; } for(i=0;i<10;i++) if(count[i])printf("%dcounts:%d\n",i,count[i]);}[2]编写程序求任意方阵每行、每列、两对角线元素之和。#include<stdio.h>#defineN5#defineM5voidmain(){ 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=0,j=0; for(i=0;i<N;i++)s1[i]=0; for(i=0;i<M;i++)s2[i]=0; for(i=0;i<N;i++)//计算每行的和 for(j=0;j<M;j++) { s1[i]+=a[i][j]; } for(j=0;j<M;j++)//计算每列的和 for(i=0;i<N;i++) { s2[j]+=a[i][j]; } for(i=0;i<N;i++)//计算对角线的和 { sum1+=a[i][i]; } for(i=0;i<N;i++)//计算每行的和 { sum2+=a[i][M-1-i]; } printf("每行和:"); for(i=0;i<N;i++)printf("%d",s1[i]); printf("\n每列和:"); for(i=0;i<M;i++)printf("%d",s2[i]); printf("\n对角线和:"); printf("%d,%d",sum1,sum2);}[3]编写程序求两个矩阵的和。#include<stdio.h>#defineN4#defineM5voidmain(){ inta[N][M]={ {3,4,7,8,9}, {6,8,2,1,3}, {8,5,4,3,2}, {7,6,9,1,5}}; intb[N][M]={ {2,4,7,5,9}, {7,8,2,5,3}, {9,5,4,3,2}, {8,6,9,1,5}}; intc[N][M],i,j; for(i=0;i<N;i++)//计算矩阵的和 for(j=0;j<M;j++) { c[i][j]=a[i][j]+b[i][j]; } for(i=0;i<N;i++) { for(j=0;j<M;j++) { printf("%d",c[i][j]); } printf("\n"); }}[4]编写程序打印出以下形式的乘法九九表。**AMULTIPCATIONTABLE**(1)(2)(3)(4)(5)(6)(7)(8)(9)(1)123456789(2)24681012141618(3)369121518212427(4)4812162024283236(5)51015202530354045(6)61218243036424854(7)71421283542495664(8)81624324048566472(9)91827364554637281#include<s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论