c语言练习题Word格式文档下载.docx
《c语言练习题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c语言练习题Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。
8.以下程序段给数组所有的元素输入数据,请选择正确答案填入#include<
stdio.h>
main()
{
inta[10],i=0;
while(i<
10)scanf("
);
I
}
D.&
a[++i]
A.a+(i++)B.&
a[i+1]C.a+i
9.执行下面的程序段后,变量k中的值为(A)。
intk=3,s[2];
s[0]=k;
k=s[1]*10;
D.10
A.不定值B.33C.30
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]);
D.369
A.258B.741C.852
11.以下程序运行后,输出结果是(D)。
intn[5]={0,0,0},i,k=2;
for(i=0;
i<
k;
i++)n[i]=n[i]+1;
%d\n"
n[k]);
D.0
A.不确定的值B.2C.1
12.以下程序运行后,输出结果是(B)。
inty=18,i=0,j,a[8];
do
{a[i]=y%2;
i++;
y=y/2;
}while(y>
=1);
for(j=i-1;
j>
j--)printf("
a[j]);
\n"
);
A.10000B.10010
13.以下程序运行后,输出结果是(A)。
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]<
a2[j])a[k]=a1[i++];
a[k]);
14.以下程序运行后,输出结果是
(B)。
inti,k,a[10],p[3];
k=5;
for(i=0;
10;
i++)
a[i]=i;
3;
p[i]=a[i*(i+1)];
k);
15.以下程序运行后输出结果是(D)。
main()
intn[3],i,j,k;
n[i]=0;
k=2;
for(j=0;
j<
j++)
n[j]=n[i]+1;
n[1]);
}
D.3
A.2B.1C.0
16.下列程序的主要功能是输入10个整数存入数组a,再输入一个整数x,在数组a中查找X。
找到则输出x在10个整数中的序号(从1开始);
找不到则输出0。
程序缺少的是(B)。
inti,a[10],x,flag=0;
a[i]);
x);
i++)if
{flag=i+1;
break;
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)。
21.
D.t[0,0]
A.t[2][4]B.t[5][0]C.t[0][0]
22.在定义intn[5][6]后第10个元素是(C)。
D.n[1][4]
A.n[2][5]B.n[2][4]C.n[1][3]
23.若二维数组c有m列,则计算任一元素c[i][j]在数组中的位置的公式为(A)。
(假设c[0][0]位于数组的第一个位置)
A.i*m+jB.j*m+iC.i*m+j-1
24.若有以下定义语句,则表达式“x[1][1]*x[2][2]”的值是
floatx[3][3]={{1.0,2.0,3.0},{4.0,5.0,6.0}};
A.0.0B.4.0C.5.0
25.以下程序运行后,输出结果是(A)。
inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};
%d%d%d%d\n"
a[0][3],a[1][2],a[2][1],a[3][0]);
A.0650B.1470C.5430
26.以下程序运行后,输出结果是(B)。
intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
inti,s=0;
i++)s+=aa[i][1];
printf(“%n”d,s);
A.11B.19C.13
27.
D.i*m+j+1
(B)。
D.6.0
D.输出值不定
有以下程序
inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
for(i=1;
for(j=0;
=i;
j++)s+=a[i][j];
s);
该程序的输出结果是(A)。
A.18B.19C.20D.21
28.若定义如下变量和数组:
则下面语句的输出结果是(C)。
inti;
intx[3][3]={1,2,3,4,5,6,7,8,9};
i++)printf("
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'
o'
!
'
};
B.charstr[10];
str="
"
;
C.charstr[10];
strcpy(str,"
D.charstr[10]="
32.合法的数组定义是(D)。
A.inta[]="
string"
C.ints="
33.下列语句中,不正确的是(C)。
A.staticchara[2]={1,2};
C.staticchara[2]={'
1'
2'
3'
34.若给出以下定义:
charx[]="
abcdefg"
chary[]={'
'
b'
f'
g'
则正确的叙述为(C)。
A.数组x和数组y等价
C.数组x的长度大于数组y的长度
B.inta[5]={0,1,2,3,4,5};
D.chara[]={0,1,2,3,4,5};
B.staticchara[2]={'
D.staticchara[2]={'
35.若有数组定义:
chararray[]="
China"
则数组
B.数组x和数组y的长度相同
D.数组x的长度小于数组y的长度
array所占的空间为(C)。
A.4个字节
B.5个字节
C.6个字节
D.7个字节
36.若有定义和语句:
chars[10];
s="
abcd"
printf("
%s\n"
则结果是(以下」代表空格)(D)。
A.输出abedB.输出aC.输出abedLJLJLJLJD.编译不通过
37.下面程序运行后,输出结果是(C)。
ehareh[7]={"
65ab21"
eh[i]>='
0'
&
eh[i]<='
9'
i+=2)
s=10*s+eh[i]-'
A.12ba56B.6521C.6D.62
38.运行下面的程序,如果从键盘上输入:
123<空格>456<空格>789<回车>,输出结果是(D)。
A.123,456,789B.1,456,789
D.1,23,456
C.1,23,456,789
ehars[100];
inte,i;
seanf("
%e"
e);
seanf("
i);
%s"
%c,%d,%s\n"
c,i,s);
39.运行下面的程序,如果从键盘上输入
ab<
回车>
c<
def<
回车>
则输出结果为(C)。
D.abcdef
A.aB.aC.ab
bbc
ccd
dd
e
f
#include<
#defineN6
charc[N];
inti=0;
for(;
N;
c[i]=getchar(),i++);
for(i=0;
i++)putchar(c[i]);
40.运行下面的程序,如果从键盘上输入:
ABC时,输出的结果是(D)。
#include<
string.h>
charss[10]="
12345"
strcat(ss,"
6789"
);
gets(ss);
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)。
charstr[12]={'
s'
t'
r'
i'
n'
strlen(str));
A.6B.7C.11D.12
43.若有以下程序片段:
charstr[]="
ab\n\012\\\"
上面程序片段的输出结果是()。
A.3B.4C.6
44.若有以下程序段,输出结果是()。
chars[]="
\\141\141abc\t"
printf("
strlen(s));
A.9B.12C.13
45.设有staticcharstr[]="
Beijing"
则执行printf("
strlen(strcpy(str,"
)));
后的输出结果为()。
A.5B.7C.12
46.以下程序运行后,输出结果是()。
main()
charcf[3][5]={"
AAAA"
"
BBB"
CC"
\"
%s\"
ch[1]);
A."
B."
C."
BBBCC"
47.以下程序运行后,输出的结果是()。
#include<
D.12
D.14
D."
B.ABCD
EFG
IJ
D.FGH
KL
()。
charw[][10]={"
ABCD"
EFGH"
IJKL"
MNOP"
},k;
for(k=1;
printf("
w[k][k]);
A.ABCD
FGH
M
C.EFG
JK
O
48.以下程序运行后,输出结果是
main()
{chararr[2][4];
strcpy(arr,"
you"
strcpy(arr[1],"
me"
arr[0][3]='
'
%s\n"
arr);
C.meD.err
A.you&
meB.you
4.2填空题
2.C程序在执行过程中,不检查数组下标是否
3.
在定义时对数组的每一个元素赋值叫数组的;
C语言规定,只有存储类
型和存储类型的数组才可定义时赋值。
4.下面程序的运行结果是。
#defineN5
inta[N]={1,2,3,4,5},i,temp;
N/2;
{temp=a[i];
a[i]=a[N-i-1];
a[N-i-1]=temp;
%d"
a[i]);
5.以下程序以每一行输出4个数据的形式输出a数组。
inta[20],i;
20;
i++)scanf("
【1】);
{if(【2】)【3】;
%3d"
a[i]);
6.以下程序分别在a数组和b数组中放入an+1和bn+1个由小到大的有序数,程序把两个
数组中的数按由小到大的顺序归并到c数组中。
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]<
b[j]){c[k]=【1】;
k++;
【2】;
else{c[k]=【3】;
【4】;
%4d"
c[i]);
7.以下程序的功能是:
从键盘上输入若干个学生的成绩,计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。
请填空。
floatx[1000],sum=0.0,ave,a;
intn=0,i;
Entermark:
);
scanf("
%f"
,&
a);
while(a>
=0.0&
n<
1000)
{sum+=【1】;
x[n]=【2】;
n++;
a);
ave=【3】;
Output:
\n"
ave=%f\n"
,ave);
n;
if(【4】)printf("
%f\n"
x[i]);
8.以下程序把一个整数转换成二进制数,所得二进制数的每一位放在一维数组中,输出此二进制数。
注意:
二进制数的最低位在数组的第一个元素中。
intb[16],x,k,r,i;
pleaseinputbinarynumtox"
x);
k=-1;
{r=x%【1】;
b[++k]=r;
x/=【2】
while(x>
for(i=k;
【3】;
i--)
b[i]);
9.输入10个整数,用选择法排序后按从小到大的次序输出。
#defineN10
inti,j,min,temp,a[N];
【1】);
【2】;
i++)
{min=i;
for(j=i;
if(a[min]>
a[j])【3】;
temp=a[i];
a[i]=a[min];
a[min]=temp;
%5d"
10.当先后输入1,3,4,12,23时,屏幕上出现;
再输入12时,屏幕上出现
inti,j,number,top,bott,min,loca,a[N],flag;
charc;
pleaseinput5numbersa[i]>
a[i-1]\n"
a[0]);
i=1;
N)
{scanf("
if(a[i]>
=a[i-1])i++;
}printf("
flag=1;
while(flag)
{scanf("
number);
loca=0;
top=0;
bott=N-1;
if((number<
a[0])||(number>
a[N-1]))loca=-1;
while((loca==0)&
(top<
=bott)){min=(bott+top)/2;
if(number==a[min]){loca=min;
%disthe%dthnumber\n"
number,loca+1);
elseif(number<
a[min])bott=min-1;
elsetop=min+1;
if(loca==0||loca==-1)printf("
%disnotinthelist\n"
number);
c=getchar();
if(c=='
N'
||c=='
n'
)flag=0;
11.以下程序运行结果是.
inta[3][3]={1,2,3,4,5,6,7,8,9},i,s1=0,s2=1;
=2;
i++){s1=s1+a[i][i];
s2=s2*a[i][i];
s1=%d,s2=%d"
s1,s2);
12.以下程序完成功能是:
计算两个3*4阶矩阵相加,并打印出结果。
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(j=0;