C语言复习题09年160题Word下载.docx
《C语言复习题09年160题Word下载.docx》由会员分享,可在线阅读,更多相关《C语言复习题09年160题Word下载.docx(32页珍藏版)》请在冰豆网上搜索。
C)无确定结果D)把x和y按从大到小排列
10.以下选项中非法的表达式是
A)0<
=x<
100B)i=j==0C)(char)(65+3)D)x+1=x+1
11.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<
10的是:
A)abs(x-y)<
10B)x-y>
-10&
x-y<
10C)(x-y)<
-10||!
(y-x)>
10D)(x-y)*(x-y)<
100
12.若执行以下程序段:
inta=1,b=2,m=2,n=2;
(m=a>
b)&
++n;
则n的值是:
A)1B)2C)3D)4
13.若有表达式(w)?
(-x):
(++y),则其中与w等价的表达式是:
A)w==1B)w==0C)w!
=1D)w!
=0
14.设已有定义inta=5,b=6,c=7,d=8,m=2,n=2;
则逻辑表达式(m=a>
b)&
(n=c>
d)运算后,n的值为:
A)0B)1C)2D)3
15.已有定义:
charc;
,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是:
A)isupper(c)B)’A’<
=c<
=’Z’C)’A’<
=c&
c<
=’Z’D)c<
=(‘z’-32)&
(‘a’-32)<
=c
第3章语句和控制结构
16.以下叙述中错误的是
A)C语言是一种结构化程序设计语言
B)结构化程序有顺序、分支、循环三种基本结构组成
C)使用三种基本结构构成的程序只能解决简单问题
D)结构化程序设计提倡模块化的设计方法
17.有以下程序段
intm=0,n=0;
charc='
a'
;
scanf("
%d%c%d"
&
m,&
c,&
n);
printf("
%d,%c,%d\n"
m,c,n);
若从键盘上输入:
10A10<
回车>
,则输出结果是:
A)10,A,10B)10,a,10C)10,a,0D)10,A,0
18.若有说明语句:
inta,b,c,*d=&
c;
,则能正确从键盘读入三个整数分别赋给a、b、c的语句是:
A)scanf("
%d%d%d"
a,b,*d);
B)scanf("
a,&
b,&
d);
C)scanf("
a,b,d);
D)scanf("
&
b,d)
19.若在定义语句:
inta,b,c,*p=&
之后,接着执行以下选项中的语句,则能正确执行的语句是:
A)scanf("
%d"
a,b,c);
B)scanf("
%d%d%d"
C)scanf("
p);
p);
20.有定义语句:
intx,y;
,若要通过scanf("
%d,%d"
x,&
y);
语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是:
A)1112<
B)11,12<
C)11,12<
D)11,<
12<
21.若变量已正确定义为int型,要通过语句scanf(”%d,%d,%d”,&
c);
给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是:
(□代表一个空格符)
A)□□□1,2,3<
B)1□2□3<
C)1,□□□2,□□□3<
D)1,2,3<
22.有以下程序段
intj;
floaty;
charname[50];
scanf("
%2d%f%s"
j,&
y,name);
当执行上述程序段,从键盘上输入555667777abc后,y的值为:
A)55566.0B)566.0C)7777.0D)566777.0
23.当用户要求输入的字符串中含有空格时,应使用的输入函数是:
A)scanf()B)getchar()C)gets()D)getc()
24.C语言中用于结构化程序设计的三种基本结构是:
A)顺序、选择、循环B)if、switch、breakC)for、while、do-whileD)if、for、continue
25.要使以下程序中t的输出结果为4,则输入a和b应满足的条件是:
main()
{ints=1,t=1,a,b;
%d%d"
b);
if(a>
0)s+=1;
if(a>
b)t=s+t;
elseif(a==b)t=5;
elset=2*s;
printf("
%d\n"
t);
}
A)a>
0并且a<
bB)a<
bC)a>
0并且a>
bD)a<
b
26.有以下程序段
intn,t=1,s=0;
%d"
do{s=s+t;
t=t-2;
}while(t!
=n);
为使此程序段不陷入死循环,从键盘输入的数据应该是:
A)任意正奇数B)任意负偶数C)任意正偶数D)任意负奇数
27.在循环语句的循环体中,continue语句的作用是:
A)立即终止整个循环B)继续执行continue语句之后的循环体各语句
C)结束本次循环D)结束本次循环并跳出循环
28.若变量已正确定义,有以下程序段,其输出结果是:
i=0;
doprintf("
%d,"
i);
while(i++);
%d\n"
i);
A)0,0B)0,1C)1,1D)程序进入无限循环
29.若定义inti;
,则循环语句:
for(i=2;
i==0;
)printf("
i--);
执行次数是:
A)无限次B)2次C)1次D)0次
30.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)
for(s=a,b=1;
b<
=c;
b++)s=s+1;
则与上述程序段功能等价的赋值语句是:
A)s=a+b;
B)s=a+c;
C)s=s+c;
D)s=b+c;
第4章函数与程序结构
31.对于一个正常运行的C程序,以下叙述中正确的是:
A)程序的执行总是从main函数开始,在main函数结束
B)程序的执行总是从程序的第一个函数开始,在main函数结束
C)程序的执行总是从main函数开始,在程序的最后一个函数中结束
D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束
32.以下正确的叙述是:
A)在C语言中,main函数必须位于文件的开头
B)C语言的每行中只能写一条语句
C)C语言本身没有输入、输出语句
D)main函数可以在任何地方出现
33.C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是:
A)voidB)intC)floatD)double
34.下面的函数调用语句中func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)));
,函数的实参个数是:
A)3B)4C)5D)8
35.以下叙述中错误的是
A)用户自定义的函数中可以没有return语句
B)用户自定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值
C)用户自定义的函数中若没有return语句,则应当定义函数为void类型
D)函数的return语句中可以没有表达式
36.若程序中定义了以下函数
doublemyadd(doublea,doubleb)
{return(a+b);
}
并将其放在调用语句之后,则在调用之前应该对函数进行说明,以下错误的说明是:
A)doublemyadd(doublea,b);
B)doublemyadd(double,double);
C)doublemyadd(doubleb,doublea);
D)doublemyadd(doublex,doubley);
37.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是:
A)地址传递B)双向值传递C)单向值传递D)传递方式由用户指定
38.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是:
A)函数的实参和其对应的形参共占同一存储单元
B)形参只是形式上的存在,不占用具体存储单元
C)同名的实参和形参占同一存储单元
D)函数的形参和实参分别占用不同的存储单元
39.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是:
A)函数调用可以作为独立的语句存在B)函数调用可以作为一个函数的实参
C)函数调用可以出现在表达式中D)函数调用可以作为一个函数的形参
40.凡在函数内未指定的存储类型变量,其隐含的存储类型为:
A)registerB)staticC)externD)auto
41.以下叙述中正确的是:
A)未在定义语句中赋初值的变量初值都是随机值B)全局变量的作用域一定比局部变量大
C)static类别变量的生存期贯穿于整个程序的运行期间D)函数的形参都属于全局变量
42.在一个C语言源程序文件中所定义的全局变量,其作用域为:
A)所在文件的全部范围B)所在程序的全部范围
C)所在函数的全部范围D)由具体定义位置和extern说明来决定范围
第6章数组
43.若在main()中有定义inta[5];
则数组a中所有元素的初值为:
A)不确定B)0C)1D)-1
44.若有以下定义语句:
intm[]={5,4,3,2,1},i=4;
则下面对m数组元素的引用中错误的是:
A)m[--i]B)m[2*2]C)m[m[0]]D)m[m[i]]
45.若定义a[][2]={1,2,3,4,5,6,7};
则a数组中行的大小是:
A)2B)3C)4D)无确定值
46.若有定义语句:
inta[3][6];
,按在内存中的存放顺序,a数组的第10个元素是
A)a[0][4]B)a[1][3]C)a[0][3]D)a[1][4]
47.以下能正确定义数组并正确赋初值的语句是:
A)intN=5,b[N][N];
B)inta[1][2]={{1},{3}};
C)intc[2][]={{1,2},{3,4}}D)intd[3][2]={{1,2},{3,4}};
48.以下能正确定义二维数组的是:
A)inta[][3];
B)inta[][3]=2{2*3};
C)inta[][3]={1};
D)inta[2][3]={{1},{2},{3,4}}
49.若定义a[][3]={1,2,3,4,5,6,7,8};
,则数组a中行的大小是:
50.在以下定义中,正确的说明语句为:
A)inta['
]B)inta[3,4]C)inta[][]D)int*a[10];
51.用数组名作为函数参数时,它传递给函数是:
A)数组首地址B)整个数组C)数组的第一个值D)数组的全部地址
52.以下能正确定义一维数组的选项是:
A)inta[3]={0,1,2,3};
B)chara[]={0,1,2,3,};
C)chara={'
A'
'
B'
C'
};
D)inta[3]="
012"
53.若有定义语句:
chars[10]="
1234567\0\0"
;
,则strlen(s)的值是:
A)7B)8C)9D)10
第7章指针
54.设有定义:
intn1=0,n2,*p=&
n2,*q=&
n1;
,以下赋值语句中与n2=n1;
语句等价的是:
A)*p=*q;
B)p=q;
C)*p=&
D)p=*q;
55.若有定义:
intx=0,*p=&
x;
,则语句printf("
*p);
的输出结果是:
A)随机值B)0C)x的地址D)p的地址
56.设有定义:
charp[]={’1’,’2’,’3’},*q=p;
不能计算出一个char型数据所占字节数的表达式是:
A)sizeof(p)B)sizeof(char)C)sizeof(*q)D)sizeof(p[0])
57.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为9的表达式是:
A)*p+9B)*(p+8)C)*p+=9D)p+8
58.有以下定义和语句:
inta[3][2]={1,2,3,4,5,6,},*p[3];
p[0]=a[1];
则*p[0]+1所代表的数组元素是:
A)a[0][1]B)a[1][0]C)a[1][1]D)a[1][2]
59.若有以下说明和语句,intc[4][5],(*p)[5];
p=c;
能正确引用c数组元素的是:
A)p+1B)*(p+3)C)*(p+1)+3D)*(p[0]+2)
60.若有定义语句:
inta[2][3],*p[3];
,则以下语句中正确的是:
A)p=a;
B)p[0]=a;
C)p[0]=&
a[1][2];
D)p[1]=&
a;
61.若有定义inta[3][5],i,j;
(且0<
i<
3,0<
j<
5),则地址&
a[i][j]对应元素的不正确表示是:
A)*(a+i*5+j)B)*(a[i]+j)C)*(a+i)+jD)*(*(a+i)+j);
62.以下各语句或语句组中,正确的操作是:
A)chars[5]="
abcde"
B)char*s;
gets(s);
C)chars[5];
gets(&
s);
D)char*s="
63.把字符串"
OK!
"
赋值给变量不正确的语句或语句组是:
A)chara[]="
B)chara[8]={'
O'
'
K'
!
'
\0'
};
C)char*p;
p="
D)charp;
strcpy(p,"
);
64.定义compare(char*s1,char*s2)函数,以实现比较两个字符串大小的功能。
以下程序运行结果为-32,选择正确答案填空。
main()
{printf(”%d\n”,compare(”abCd”,”abc”));
compare(char*s1,char*s2)
{while(*s1&
*s2&
){s1++;
s2++;
return*s1-*s2;
A)*s1!
=*s2B)*s1==*s2C)*s1=*s2D)s1!
=s2
65.有以下函数,关于aaa函数的功能叙述正确的是:
intaaa(char*s)
{char*t=s;
while(*t++);
t--;
return(t-s);
}
A)求串s的长度B)比较两串的大小C)将串s复制到串tD)求串s所占字节数
66.设有定义:
intn=0,*p=&
n,**q=&
p;
,则以下选项中,正确的赋值语句是:
A)p=1;
B)*q=2;
C)q=p;
D)*p=5;
67.若有定义char*language[]={"
FORTRAN"
"
BASIC"
"
PASCAL"
C"
则language[2]的值是:
A)一个字符B)一个地址C)一个字符串D)不定
68.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是:
A)p=2*(int*)malloc(sizeof(int));
B)p=(int*)malloc(2*sizeof(int));
C)p=(int*)malloc(2*2);
D)p=(int*)calloc(2,sizeof(int));
第8章结构及其地数据类型
69.若要说明一个类型名STP,使得定义语句STPs;
等价于char*s;
,以下选项中正确的是:
A)typedefSTPchar*s;
B)typedef*charSTP;
C)typedefSTP*char;
D)typedefchar*STP
70.若有定义typedefcharSTR[5][20];
STRs;
,则s是:
A)字符指针数组变量B)字符数组变量C)字符变量D)字符指针变量
71.有以上程序段:
typedefstructNODE{intnum;
structNODE*next;
}OLD;
以下正确的叙述是:
A)以上的说明形式非法B)NODE是一个结构体类型
C)OLD是一个结构体类型D)OLD是一个结构体变量
72.设有以下说明语句typedefstruct{intn;
charch[8];
}PER;
,则下面叙述中正确的是:
A)PER是结构体变量名B)PER是结构体类型名
C)typedefstruct是结构体类型D)struct是结构体类型名
73.根据下面的定义,能打印出字母M的语句是:
structperson{charname[9];
intage;
}class[10]={"
John"
17,"
Paul"
19,"
Mary"
18,"
Adam"
16};
A)printf("
%c\n"
class[3].name);
B)printf("
class[3].name[1]);
C)printf("
class[2].name[1]);
D)printf("
class[2].name[0]);
74.设有说明如下,则能正确定义结构体数组并赋初值的语句是:
typedefstruct{intn;
charc;
doublex;
}STD;
A)structSTDtt[2]={{1,'
6},{2,'
7}};
B)structtt[2]={{1,'
},{2,'
}};
C)STDtt[2]={{1,'
6},{2,'
7}};
D)STDtt[2]={1,"
A"
6,2,"
"
7};
75.若定义:
structss{charname[