
c语言练习题
sqm-分类的英文
2023年2月19日发(作者:家居建材行业现状)4.1选择题
1.以下关于数组的描述正确的是(c)。
A.数组的大小是固定的,但可以有不同的类型的数组元素
B.数组的大小是可变的,但所有数组元素的类型必须相同
C.数组的大小是固定的,所有数组元素的类型必须相同
D.数组的大小是可变的,可以有不同的类型的数组元素
2.以下对一维整型数组a的正确说明是(D)。
(10);=10,a[n];
;D.#defineSIZE10
scanf("%d",&n);inta[SIZE];
inta[n];
3.在C语言中,引用数组元素时,其数组下标的数据类型允许是(C)。
A.整型常量
B.整型表达式
C.整型常量或整型表达式
D.任何类型的表达式
4.以下对一维数组m进行正确初始化的是(C)。
[10]=(0,0,0,0);[10]={};
[]={0};[10]={10*2};
5.若有定义:intbb[8];。则以下表达式中不能代表数组元bb[1]的地址的是(c)。
A.&bb[0]+1B.&bb[1]C.&bb[0]+++1
6.假定int类型变量占用两个字节,其有定义:intx[10]={0,2,4};,则数组x在内存
中所占字节数是(B)。
A.3B.6C.10D.20
7.若有以下说明:
inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};
charc='a',d,g;
则数值为4的表达式是(D)
A.a[g-c]B.a[4]C.a['d'-'c']D.a['d'-c]
8.以下程序段给数组所有的元素输入数据,请选择正确答案填入(A)。
#include
main()
{
inta[10],i=0;
while(i<10)scanf("%d",________);
┇
}
A.a+(i++)B.&a[i+1]C.a+iD.&a[++i]
9.执行下面的程序段后,变量k中的值为(A)。
intk=3,s[2];
s[0]=k;k=s[1]*10;
A.不定值B.33C.30D.10
10.以下程序的输出结果是(C)
main()
{
inti,a[10];
for(i=9;i>=0;i--)a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);
}
A.258B.741C.852D.369
11.以下程序运行后,输出结果是(D)。
main()
{
intn[5]={0,0,0},i,k=2;
for(i=0;i printf("%dn",n[k]); } A.不确定的值B.2C.1D.0 12.以下程序运行后,输出结果是(B)。 main() { inty=18,i=0,j,a[8]; do {a[i]=y%2;i++; y=y/2; }while(y>=1); for(j=i-1;j>=0;j--)printf("%d",a[j]); printf("n"); } A.10000B.10010C.00110D.10100 13.以下程序运行后,输出结果是(A)。 main() { inta[10],a1[]={1,3,6,9,10},a2[]={2,4,7,8,15},i=0,j=0,k; for(k=0;k<4;k++) if(a1[i] elsea[k]=a2[j++]; for(k=0;k<4;k++)printf("%d",a[k]); } A.1234B.1324C.2413D.4321 14.以下程序运行后,输出结果是(B)。 main() { inti,k,a[10],p[3]; k=5; for(i=0;i<10;i++)a[i]=i; for(i=0;i<3;i++)p[i]=a[i*(i+1)]; for(i=0;i<3;i++)k+=p[i]*2; printf("%dn",k); } A.20B.21C.22D.23 15.以下程序运行后输出结果是(D)。 main() { intn[3],i,j,k; for(i=0;i<3;i++) n[i]=0; k=2; for(i=0;i for(j=0;j n[j]=n[i]+1; printf("%dn",n[1]);} A.2B.1C.0D.3 16.下列程序的主要功能是输入10个整数存入数组a,再输入一个整数x,在数组a中查找 x。找到则输出x在10个整数中的序号(从1开始);找不到则输出0。程序缺少的是(B)。 main() { inti,a[10],x,flag=0; for(i=0;i<10;i++) scanf("%d",&a[i]); scanf("%d",&x); for(i=0;i<10;i++)if_______{flag=i+1;break;} printf("%dn",flag); } A.x!=a[i]B.!(x-a[i])C.x-a[i]D.!x-a[i] 17.若说明:inta[2][3];则对a数组元素的正确引用是(C)。 A.a(1,2)B.a[1,3]C.a[1>2][!1]D.a[2][0] 18.若有定义:intb[3][4]={0};则下述正确的是(D)。 A.此定义语句不正确 B.没有元素可得初值0 C.数组b中各元素均为0 D.数组b中各元素可得初值但值不一定为0 19.若有以下数组定义,其中不正确的是(D)。 [2][3]; Bintb[][3]={0,1,2,3}; [100][100]={0}; [3][]={{1,2},{1,2,3},{1,2,3,4}}; 20.若有以下的定义:intt[5][4];能正确引用t数组的表达式是(C)。 A.t[2][4]B.t[5][0]C.t[0][0]D.t[0,0] 21.在定义intm[][3]={1,2,3,4,5,6};后,m[1][0]的值是(C)。 A.4B.1C.2D.5 22.在定义intn[5][6]后第10个元素是(C)。 A.n[2][5]B.n[2][4]C.n[1][3]D.n[1][4] 23.若二维数组c有m列,则计算任一元素c[i][j]在数组中的位置的公式为(A)。 (假设c[0][0]位于数组的第一个位置) A.i*m+jB.j*m+iC.i*m+j-1D.i*m+j+1 24.若有以下定义语句,则表达式“x[1][1]*x[2][2]”的值是(B)。 floatx[3][3]={{1.0,2.0,3.0},{4.0,5.0,6.0}}; A.0.0B.4.0C.5.0D.6.0 25.以下程序运行后,输出结果是(A)。 main() { inta[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf("%d%d%d%dn",a[0][3],a[1][2],a[2][1],a[3][0]); } A.0650B.1470C.5430D.输出值不定 26.以下程序运行后,输出结果是(B)。 main() { intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}}; inti,s=0; for(i=0;i<4;i++)s+=aa[i][1]; printf(“%dn”,s); } A.11B.19C.13D.20 27.有以下程序 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("%dn",s); } 该程序的输出结果是(A)。 A.18B.19C.20D.21 28.若定义如下变量和数组:则下面语句的输出结果是(C)。 inti; intx[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++)printf("%d",x[i][2-i]); A.159B.147C.357D.369 29.下述对C语言字符数组的描述中错误的是(C)。 A.字符数组可以存放字符串 B.字符数组中的字符串可以整体输入、输出 C.可以在赋值语句中通过赋值运算符"="对字符数组整体赋值 D.不可以用关系运算符对字符数组中的字符串进行比较 30.下述对C语言字符数组的描述中正确的是(C)。 A.任何一维数组的名称都是该数组存储单元的开始地址,且其每个元素按照顺序连续占存 储空间 B.一维数组的元素在引用时其下标大小没有限制 C.任何一个一维数组的元素,可以根据内存的情况按照其先后顺序以连续或非连续的方式 占用存储空间 D.一维数组的第一个元素是其下标为1的元素 31.不能把字符串:Hello!赋给数组b的语句是(B)。 r[10]={'H','e','l','l','o','!'}; r[10];str="Hello!"; r[10];strcpy(str,"Hello!"); r[10]="Hello!"; 32.合法的数组定义是(D)。 []="string";[5]={0,1,2,3,4,5}; ="string";[]={0,1,2,3,4,5}; 33.下列语句中,不正确的是(C)。 chara[2]={1,2};chara[2]={'1','2'}; chara[2]={'1','2','3'};chara[2]={'1'}; 34.若给出以下定义: charx[]="abcdefg"; chary[]={'a','b','c','d','e','f','g'}; 则正确的叙述为(C)。 A.数组x和数组y等价B.数组x和数组y的长度相同 C.数组x的长度大于数组y的长度D.数组x的长度小于数组y的长度 35.若有数组定义:chararray[]="China";则数组array所占的空间为(C)。 A.4个字节B.5个字节C.6个字节D.7个字节 36.若有定义和语句: chars[10]; s="abcd"; printf("%sn",s); 则结果是(以下└┘代表空格)(D)。 A.输出abcdB.输出aC.输出abcd└┘└┘└┘└┘D.编译不通 过 37.下面程序运行后,输出结果是(C)。 main() { charch[7]={"65ab21"}; inti,s=0; for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2) s=10*s+ch[i]-'0'; printf("%dn",s); } A.12ba56B.6521C.6D.62 38.运行下面的程序,如果从键盘上输入:123456789,输出结果是(D)。 A.123,456,789B.1,456,789 C.1,23,456,789D.1,23,456 main() { chars[100];intc,i; scanf("%c",&c);scanf("%d",&i);scanf("%s",s); printf("%c,%d,%sn",c,i,s); } 39.运行下面的程序,如果从键盘上输入: ab c def 则输出结果为(C)。 bbc ccd dd e f #include #defineN6 main() { charc[N]; inti=0; for(;i for(i=0;i printf("n"); } 40.运行下面的程序,如果从键盘上输入:ABC时,输出的结果是(D)。 #include main() { charss[10]="12345"; strcat(ss,"6789"); gets(ss);printf("%sn",ss); } 456789 41.判断两个字符串是否相等,正确的表达方式是(C)。 (s1==s2)(s1=s2) (strcmp(s1,s2)==0)(strcmp(s1,s2)=0) 42.以下程序的输出结果是(A)。 main() { charstr[12]={'s','t','r','i','n','g'}; printf("%dn",strlen(str)); } A.6B.7C.11D.12 43.若有以下程序片段: charstr[]="abn012""; printf("%d",strlen(str)); 上面程序片段的输出结果是()。 A.3B.4C.6D.12 44.若有以下程序段,输出结果是()。 chars[]="141141abct"; printf("%dn",strlen(s)); A.9B.12C.13D.14 45.设有staticcharstr[]="Beijing"; 则执行printf("%dn",strlen(strcpy(str,"China"))); 后的输出结果为()。 A.5B.7C.12D.14 46.以下程序运行后,输出结果是()。 main() { charcf[3][5]={"AAAA","BBB","CC"}; printf(""%s"n",ch[1]); } A."AAAA"B."BBB"C."BBBCC"D."CC" 47.以下程序运行后,输出的结果是()。 #include #include main() { charw[][10]={"ABCD","EFGH","IJKL","MNOP"},k; for(k=1;k<3;k++) printf("%sn",&w[k][k]); } FGHEFG KLIJ M JKKL O 48.以下程序运行后,输出结果是()。 main() { chararr[2][4]; strcpy(arr,"you");strcpy(arr[1],"me"); arr[0][3]='&'; printf("%sn",arr); } & 4.2填空题 1.C语言中,数组元素的下标下限为__整型常量或整形表达式______。 2.C程序在执行过程中,不检查数组下标是否________。 3.在定义时对数组的每一个元素赋值叫数组的________;C语言规定,只有________存储 类型和________存储类型的数组才可定义时赋值。 4.下面程序的运行结果是________。 #defineN5 main() { inta[N]={1,2,3,4,5},i,temp; for(i=0;i {temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;} printf("n"); for(i=0;i } 5.以下程序以每一行输出4个数据的形式输出a数组。 #include main() { inta[20],i; for(i=0;i<20;i++)scanf("%d",【1】); for(i=0;i<20;i++) {if(【2】)【3】; printf("%3d",a[i]); } printf("n"); } 6.以下程序分别在a数组和b数组中放入an+1和bn+1个由小到大的有序数,程序把两个 数组中的数按由小到大的顺序归并到c数组中。 #include main() { inta[10]={1,2,5,8,9,10},an=5,b[10]={1,3,4,8,12,18},bn=5; inti,j,k,c[20],max=9999; a[an+1]=b[bn+1]=max; i=j=k=0; while((a[i]!=max)||(b[j]!=max)) if(a[i] else{c[k]=【3】;k++;【4】;} for(i=0;i } 7.以下程序的功能是:从键盘上输入若干个学生的成绩,计算出平均成绩,并输出低于平 均分的学生成绩,用输入负数结束输入。请填空。 main() { floatx[1000],sum=0.0,ave,a; intn=0,i; printf("Entermark:n");scanf("%f",&a); while(a>=0.0&&n<1000) {sum+=【1】;x[n]=【2】; n++;scanf("%f",&a); } ave=【3】; printf("Output:n"); printf("ave=%fn",ave); for(i=0;i if(【4】)printf("%fn",x[i]); } 8.以下程序把一个整数转换成二进制数,所得二进制数的每一位放在一维数组中,输出此 二进制数。注意:二进制数的最低位在数组的第一个元素中。 #include main() { intb[16],x,k,r,i; printf("pleaseinputbinarynumtox");scanf("%d",&x); printf("%dn",x); k=-1; do {r=x%【1】; b[++k]=r; x/=【2】; } while(x>=1); for(i=k;【3】;i--) printf("%d",b[i]);printf("n"); } 9.输入10个整数,用选择法排序后按从小到大的次序输出。 #defineN10 main() { inti,j,min,temp,a[N]; for(i=0;i scanf("%d",【1】); printf("n"); for(i=0;【2】;i++) {min=i; for(j=i;j if(a[min]>a[j])【3】; temp=a[i]; a[i]=a[min]; a[min]=temp; } for(i=0;i printf("%5d",a[i]); printf("n"); } 10.当先后输入1,3,4,12,23时,屏幕上出现________;再输入12时,屏幕上出现________。 #include #defineN5 main() { inti,j,number,top,bott,min,loca,a[N],flag; charc; printf("pleaseinput5numbersa[i]>a[i-1]n"); scanf("%d",&a[0]);i=1; while(i {scanf("%d",&a[i]);if(a[i]>=a[i-1])i++;}printf("n"); for(i=0;i flag=1; while(flag) {scanf("%d",&number);loca=0;top=0;bott=N-1; if((numbera[N-1]))loca=-1; while((loca==0)&&(top<=bott)) {min=(bott+top)/2; if(number==a[min]) {loca=min;printf("%disthe%dthnumbern",number,loca+1);} elseif(number elsetop=min+1; } if(loca==0||loca==-1)printf("%disnotinthelistn",number); c=getchar(); if(c==’N’||c==’n’)flag=0; } } 11.以下程序运行结果是________. #include main() { inta[3][3]={1,2,3,4,5,6,7,8,9},i,s1=0,s2=1; for(i=0;i<=2;i++){s1=s1+a[i][i]; s2=s2*a[i][i];}; printf("s1=%d,s2=%d",s1,s2); } 12.以下程序完成功能是:计算两个3*4阶矩阵相加,并打印出结果。请填空。 #include main() { inta[3][4]={{3,-2,1,2},{0,1,3,-2},{3,1,0,4}}; intb[3][4]={{-2,3,0,-1},{1,0,-2,3},{-2,0,1,-3}}; inti,j,c[3][4]; for(i=0;i<3;i++) for(j=0;j<4;j++) ________; for(i=0;i<3;i++) {for(j=0;j<4;j++) printf("%d",c[i][j]); printf("n"); } } 13.以下程序的运行结果是________. main() { inti,j,a[3][3]; for(i=0;i<3;i++) {for(j=0;j<3;j++) {if(i==3)a[i][j]=a[i-1][a[i-1][j]]+1; elsea[i][j]=j; printf("%4d",a[i][j]); } printf("t"); } } 14.阅读下列程序: #include main() { inti,j,row,column,m; staticintarray[3][3]={{100,200,300},{28,72,-30},{-850,2,6}}; m=array[0][0]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(array[i][j] {m=array[i][j];row=i;column=j;} printf("%d,%d,%dn",m,row,column); } 上述程序的输出结果是________。 15.若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该 是________。 : . chara[10],b; scanf("a=%sb=%c",a,&b); : . 16.以下程序段的输出结果是________。 main() { charb[]="Hello,you"; b[5]=0; printf("%sn",b); } 17.若有以下程序段,若先后输入: Englishå Goodå 则其运行结果是________。 main() { charc1[60],c2[3]; inti=0,j=0; scanf("%s",c1); scanf("%s",c2); while(c1[i]!='0')i++; while(c2[j]!='0')c1[i++]=c2[j++]; c1[i]='0'; printf("n%s",c1); } 18.从键盘输入由5个字符组成的单词,判断此单词是不是hello,并显示结果。 #include main() { staticcharstr[]={‘h’,’e’,’l’,’l’,’o’}; charstr1[5]; 【1】; for(i=0;i<5;i++) 【2】; flag=0; for(i=0;i<5;i++) if【3】{flag=1;break;} if(flag)printf("thiswordisnothello"); elseprintf("thiswordishello"); } 19.以下程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。 请填空。 #include #include main() { chara[]="clanguage",t; inti,j,k; k=strlen(a); for(i=0;i<=k-2;i+=2) for(j=i+2;j<=k;【1】) if(【2】) {t=a[i];a[i]=a[j];a[j]=t;} puts(a); printf("n"); } 20.输入5个字符串,将其中最小的打印出来。 main() { charstr[10],temp[10];inti; 【1】; for(i=0;i<4;i++) {gets(str); if(strcmp(temp,str)>0)【2】; } printf("nThefirststringis:%sn",temp); } 21.以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不 相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。 请填空。 #include main() { charstr1[100],str2[100],c; inti,s; printf("ninputstring1:n");gets(str1); printf("ninputstring2:n");gets(str2); i=0; while((strl[i]==str2[i]&&(str1[i]!=【1】)) i++; s=【2】; printf("%dn",s); } 22.设有下列程序: #include #include main() { inti; charstr[10],temp[10]; gets(temp); for(i=0;i<4;i++) {gets(str); if(strcmp(temp,str)<0)strcpy(temp,str); } printf("%sn",temp); } 上述程序运行后,如果从键盘上输入(在此代表回车符): C++ BASIC QuickC Ada Pascal 则程序的输出结果是________。 23.以下程序功能是:统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束 标志,请填空。 #include #include main() { intnum[26],i;charc; for(i=0;i<26;i++)num[i]=0; while(【1】!='#')/*统计从终端输入的大写字母个数*/ if(isupper(c))num[c-65]+=1; for(i=0;i<26;i++)/*输出大写字母和该字母的个数*/ if(num[i])printf("%c:%dn",i【2】,num[i]); } 24.下面程序段完成功能是:输出两个字符串中对应字符相等的字符。请填空。 charx[]="language"; chary[]="llngga"; inti=0; while(x[i]!=【1】&&y[i]!=【2】) {if(x[i]==y[i])printf("%c",【3】); elsei++; } 25.下面程序完成功能是:计算一个字符串中子串出现的次数。 #include main() { inti,j,k,count; charstr1[20],str2[20]; printf("zhuchuan:"); gets(str1); printf("zichuan:"); gets(str2); 【1】; for(i=0;str1[i];i++) for(j=i,k=0;str1[j]==str2[k];j++,k++) if(【2】) count++; printf("chuxiancishu=%dn",count); } 26.下面程序完成以下功能:从键盘输入一行字符,统计其中有多少个单词,单词之间用空 格分隔。 #include main() { chars[81]; inti,c,num=0,word=0; 【1】; for(i=0;(c=s[i])!=’0’;i++) if(c==32)【2】; elseif(word==0){word=1;【3】;} printf("thereare%dwords.n",num); } 27.下面程序完成功能是:判定用户输入的正整数是否为“回文数”,所谓“回文数”是指 正读反读都相同的数。请填空。 #include main() { intbuffer[10],i,k,flag; longnumber,n; printf("pleaseinputonenumber"); scanf("%ld",&number); k=0; n=number; do {【1】; k=k+1; n=n/10; }while(n!=0); flag=1; for(i=0;i<=(k-1)/2;i++) if(【2】) flag=0; if(flag) printf("%ldishuiwenshun",number); elseprintf("%ldisnothuiwenshun",number); }