c语言练习题.docx
《c语言练习题.docx》由会员分享,可在线阅读,更多相关《c语言练习题.docx(27页珍藏版)》请在冰豆网上搜索。
c语言练习题
4.1选择题
1.以下关于数组的描述正确的是(c)。
A.数组的大小是固定的,但可以有不同的类型的数组元素
B.数组的大小是可变的,但所有数组元素的类型必须相同
C.数组的大小是固定的,所有数组元素的类型必须相同
D.数组的大小是可变的,可以有不同的类型的数组元素
2.以下对一维整型数组a的正确说明是(D)。
A.inta(10);B.intn=10,a[n];
C.intn;D.#defineSIZE10
scanf("%d",&n);inta[SIZE];
inta[n];
3.在C语言中,引用数组元素时,其数组下标的数据类型允许是(C)。
A.整型常量
B.整型表达式
C.整型常量或整型表达式
D.任何类型的表达式
4.以下对一维数组m进行正确初始化的是(C)。
A.intm[10]=(0,0,0,0);B.intm[10]={};
C.intm[]={0};D.intm[10]={10*2};
5.若有定义:
intbb[8];。
则以下表达式中不能代表数组元bb[1]的地址的是(c)。
A.&bb[0]+1B.&bb[1]C.&bb[0]++D.bb+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;iprintf("%d\n",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("%d\n",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;ifor(j=0;jn[j]=n[i]+1;
printf("%d\n",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("%d\n",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)。
A.inta[2][3];
Bintb[][3]={0,1,2,3};
C.intc[100][100]={0};
D.intd[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%d\n",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(“%d\n”,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("%d\n",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)。
A.charstr[10]={'H','e','l','l','o','!
'};
B.charstr[10];str="Hello!
";
C.charstr[10];strcpy(str,"Hello!
");
D.charstr[10]="Hello!
";
32.合法的数组定义是(D)。
A.inta[]="string";B.inta[5]={0,1,2,3,4,5};
C.ints="string";D.chara[]={0,1,2,3,4,5};
33.下列语句中,不正确的是(C)。
A.staticchara[2]={1,2};B.staticchara[2]={'1','2'};
C.staticchara[2]={'1','2','3'};D.staticchara[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("%s\n",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("%d\n",s);
}
A.12ba56B.6521C.6D.62
38.运行下面的程序,如果从键盘上输入:
123<空格>456<空格>789<回车>,输出结果是(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,%s\n",c,i,s);
}
39.运行下面的程序,如果从键盘上输入:
ab<回车>
c<回车>
def<回车>
则输出结果为(C)。
A.aB.aC.abD.abcdef
bbc
ccd
dd
e
f
#include
#defineN6
main()
{
charc[N];
inti=0;
for(;ifor(i=0;iprintf("\n");
}
40.运行下面的程序,如果从键盘上输入:
ABC时,输出的结果是(D)。
#include
main()
{
charss[10]="12345";
strcat(ss,"6789");
gets(ss);printf("%s\n",ss);
}
A.ABCB.ABC9C.123456ABCD.ABC456789
41.判断两个字符串是否相等,正确的表达方式是(C)。
A.while(s1==s2)B.while(s1=s2)
C.while(strcmp(s1,s2)==0)D.while(strcmp(s1,s2)=0)
42.以下程序的输出结果是(A)。
main()
{
charstr[12]={'s','t','r','i','n','g'};
printf("%d\n",strlen(str));
}
A.6B.7C.11D.12
43.若有以下程序片段:
charstr[]="ab\n\012\\\"";
printf("%d",strlen(str));
上面程序片段的输出结果是()。
A.3B.4C.6D.12
44.若有以下程序段,输出结果是()。
chars[]="\\141\141abc\t";
printf("%d\n",strlen(s));
A.9B.12C.13D.14
45.设有staticcharstr[]="Beijing";
则执行printf("%d\n",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("%s\n",&w[k][k]);
}
A.ABCDB.ABCD
FGHEFG
KLIJ
M
C.EFGD.FGH
JKKL
O
48.以下程序运行后,输出结果是()。
main()
{
chararr[2][4];
strcpy(arr,"you");strcpy(arr[1],"me");
arr[0][3]='&';
printf("%s\n",arr);
}
A.you&meB.youC.meD.err
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=%f\n",ave);
for(i=0;iif(【4】)printf("%f\n",x[i]);
}
8.以下程序把一个整数转换成二进制数,所得二进制数的每一位放在一维数组中,输出此二进制数。
注意:
二进制数的最低位在数组的第一个元素中。
#include
main()
{
intb[16],x,k,r,i;
printf("pleaseinputbinarynumtox");scanf("%d",&x);
printf("%d\n",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;iscanf("%d",【1】);
printf("\n");
for(i=0;【2】;i++)
{min=i;
for(j=i;jif(a[min]>a[j])【3】;
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
for(i=0;iprintf("%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;iflag=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%dthnumber\n",number,loca+1);}
elseif(numberelsetop=min+1;
}
if(loca==0||loca==-1)printf("%disnotinthelist\n",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];};
p