C语言历年题目一Word文档下载推荐.docx
《C语言历年题目一Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言历年题目一Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
=a<
=10B)1<
a<
10
C)a>
=1,a<
=10D)1<
=a&
&
=10
11.执行下列程序段,x的值为5的程序段是D。
A)m=5;
B)m=5;
C)m=5;
D)m=5;
m++;
++m;
x=++m;
x=m++;
x=m;
x=m;
12.若定义inta=3,b=4,c=5;
,则表达式a||b+c&
b==c的值是B。
A)0B)1C)2D)3
13.与y=(x>
0?
1:
0);
等价的是C。
A)if(x>
0)y=1;
B)if(x)y=1;
elsey=0;
C)y=1;
if(x<
=0)y=0;
D)if(x<
=0)y=1;
14.在for(表达式1;
表达式2;
表达式3)循环中,B常用于表示循环条件判断。
A)表达式1B)表达式2C)表达式3D)都不是
15.下列程序段表示的数学关系是A。
y=-1;
if(x!
=0)
if(x>
0)y=1;
elsey=0;
A)-1x=0B)1x=0C)0x>
0D)-1x<
2
y=1x>
0y=-1x>
0y=1x<
0y=0x=2
0x<
00x<
0-1x=01x>
16.inta[6]={1,2,3},则a[0]到a[5]各元素的值是A。
A)1,2,3,0,0,0B)1,2,3,3,3,3
C)1,2,3,1,2,3D)1,2,3,a[3]到a[5]不确定
17.下列程序段执行后,z的结果是B。
#definep(x)x*x
intx=5,y=3,z;
z=p(x+y);
A)64B)23C)46D)32
18.有以下定义,且满足0<
i<
5,则D是对数组元素地址的正确表示。
inta[]={1,2,3,4,5},*p,i;
p=a;
A)&
(a+i)B)a++C)&
pD)&
p[i]
19.下列程序段执行后,i的值是A。
inti=100,*p;
p=&
i;
i=*p+10;
A)110B)100C)120D)90
20.在数组名作函数实参时,传递给函数形参的是A。
A)数组首地址B)数组全部元素C)数组第1个元素D)数组最后一个元素
21.下列的函数原型声明,D是正确的。
A)voidf(intx;
inty);
B)voidf(x,y);
C)voidf(intx,y);
D)voidf(int,int);
22.若inti=10;
执行下列程序后,变量i的正确结果是_D_____。
switch(i)
{case9:
i+=1;
case10:
case11:
default:
}
A)10B)11C)12D)13
23.以下判断两个字符串相等的正确方法是____D_____。
A)if(str1=str2)B)if(str1==str2)
C)if(strcpy(str1,str2)=0)D)if(strcmp(str1,str2)==0)
24.C语言对嵌套if语句的规定是:
else总是_D_____配对。
A)与之前最近的ifB)与第一个if
C)与缩进位置相同的ifD)与其之前最近的且尚为配对的if
25.在下面的条件语句中(其中s1和s2表示C语言的语句),只有一个在功能上与其它三个语句不等价,它是___D___。
A)if(a)s1;
elses2;
B)if(a==0)s2;
elses1;
C)if(a!
=0)s1;
D)if(a==0)s1;
26.以下错误的描述是__B____。
A)break语句不能用于循环语句和switch语句外的任何其它语句。
B)在switch语句中使用break语句或continue语句的作用相同。
C)在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环。
D)在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环。
27.以下四个关于C语言的结论中,只有一个是错误的,它是___D___。
A)可以用while语句实现的循环一定可以用for语句实现
B)可以用for语句实现的循环一定可以用while语句实现
C)可以用do-while语句实现的循环一定可以用while语句实现
D)do-while语句与while语句的区别仅是关键字“while”出现的位置不同
28.以下不是死循环的语句是___D___。
A)for(;
;
x+=i);
B)while
(1)x++;
C)for(i=10;
i--)sum+=i;
D)for(;
(c=getchar())!
='
\n'
)printf("
%c"
c);
29.定义inti=1;
,执行语句while(i++<
5);
后,i的值为___D___。
A)3B)4C)5D)6
30.下面程序段中,for语句的循环次数是__B____。
sum=0;
for(i=0;
100;
i+=2)sum+=i;
A)100B)50C)49D)99
31.在C语言中,引用数组元素时,其数组下标的数据类型允许是____C_____。
A)整型常量B)整型表达式
C)整形常量或整形表达式D)任何类型的表达式
32.若有定义:
inta[10],则对数组a元素的正确引用是___D_____。
A)a[10B)a[3.5]C)a(5)D)a[10-10]
33.以下能对二维数组a进行正确初始化的语句是____A____。
A)inta[2][]={{1,0,1},{5,2,3}};
B)inta[][3]={{1,2,3},{4,5,6}};
C)inta[2][4]={{1,2,3},{4,5},{6}};
D)inta[][3]={{1,0,1},{},{1,1}};
34.若二维数组a有m列,则在a[i][j]之前的元素个数为___B___。
A)j*m+iB)i*m+jC)i*m+j-1D)i*m+j+1
35.以下说法中正确的是__C__。
A)C语言程序总是从第一个函数开始执行
B)在C语言程序中,要调用的函数必须在main()函数中定义
C)C语言程序总是从main()函数开始执行
D)C语言程序中的main()函数必须放在程序的开始部分
36.下列叙述中正确的是__A___。
A)函数定义不能嵌套,函数调用能嵌套B)函数定义和函数调用都不能嵌套
C)函数定义能嵌套,函数调用不能嵌套D)函数定义与函数调用都能嵌套
37.以下说法中正确的是__C___。
A、#define和printf都是C语句B、#define是C语句,而printf不是
C、printf是C语句,#define不是D、#define和printf都不是C语句
38.以下关于函数叙述中,正确的是__D___。
A)在函数体中可以直接引用另一个函数中声明为static类别的局部变量的值
B)在函数体中至少必须有一个return语句
C)在函数体中可以定义另一个函数
D)在函数体中可以调用函数自身
39.在C语言中,若对函数类型未加显式说明,则函数的隐含类型是__C____。
A)voidB)doubleC)intD)char
40.下面不正确的描述为___D___。
A)调用函数时,实参可以是表达式
B)调用函数时,实参与形参可以共用内存单元
C)调用函数时,将为形参分配内存单元
D)调用函数时,实参与形参的类型必须完全相同
二、填空题(共10分每空1分)
答案必须填在答题卡的填空题部分,否则不得分。
1.函数由主要由___函数声明_______、____函数体_____组成。
2.结构化程序设计中的三种基本结构是顺序结构、_选择结构____、_循环结构
3.C语言的标识符只能由大小写字母,数字和下划线三种字符组成,而且第一个字符必须为______________。
4.字符串是以__________为结束标志的一维字符数组。
5.定义inta[]={1,2,3,4,5,6},*p=a;
表达式(*++p)++的值是____________。
6.若x=5,y=10,则x>
y和x<
=y的逻辑值分别为0和_______。
7.C语言中,数组是一种重要的数据结构,它的下标总是从_______开始。
8.若有定义FILE*fp;
,要求以二进制读写方式(rb+)打开文件list,正确打开文件list的语句是。
三、程序运行题(共20分每题4分)
答案必须填在答题卡的程序运行题部分,否则不得分。
1.下面程序的运行的结果是。
#include<
stdio.h>
voidmain()
{
inti,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf(“%d,%d,%d,%d”,i,j,m,n);
2.下面程序段执行后,sum的值为。
intsum=0,i;
for(i=1;
=10;
i++)
if(i%5==0)break;
elsesum+=i;
}
3.下面程序运行的结果是:
{ints=0,k;
for(k=7;
k>
=4;
k--)
{switch(k)
{case1:
case2:
case3:
s++;
break;
case4:
case5:
case6:
s+=2;
case7:
case0:
s+=3;
printf(“s=%d\n”,s);
4.程序清单如下:
{intsum=0,number,i=1,finished=0;
while(i<
=8&
!
finished)
{scanf(“%d”,&
number);
if(number>
0)sum+=number;
elseif(number==0)finished=1;
i++;
printf(“sum=%d,number=%d”,sum,number);
若运行该程序,并输入数据为:
56–37–40,则结果为。
5.下面程序运行的结果是:
。
intmax(int,int);
inta=3,b=5,c=100;
{ints=0;
s+=max(max(a,b),c);
intmax(intx,inty)
{inta=15,b=20,max;
max=(a>
b)?
a:
b;
return(max);
四、完善程序题(共20分每空2分)
每空必须且只能填写一个语句或一个表达式,答案必须填在答题卡的完善程序题部分,否则不得分。
1.打印输出100~200间的所有素数,要求每行输出10个素数。
其中判定m是否为素数的方法:
用2到m-1范围内的各整数去除m,若都除不尽,则m是素数。
程序清单如下:
math.h>
{intm,i,n=0;
for(m=100;
m<
=200;
m++)
for(i=2;
=m-1;
if(
(1))break;
if(i>
=m){printf(“%d”,m);
(2);
if(n%10==0)(3);
printf(“\n”);
2.下列程序的功能是:
从键盘输入一行字符,统计其中单词个数,单词之间用空格分隔开。
{charstring[81];
inti,num=0,word=0;
charc;
gets(
(1));
(c=string[i])
(2)‘\0’;
if(c==‘’)word=0;
elseif((3))
{word=1;
(4);
printf(“Thereare%dwordsintheline.\n”,num);
3.下列程序用于输出下面的图形。
要求:
图形第一行的第一个字符输出在第40列且字符0之间以一个空格隔开。
00000
inti,j;
chara[5]={‘0’,‘0’,‘0’,‘0’,‘0’},space=‘’;
=
(1);
{
for(j=1;
j<
=
(2);
j++)printf(“%c”,space);
for(j=0;
5;
j++)printf(“%c%c”,a[j],space);
(3);
五、编程题(共10分第1题4分,第2题6分)
答案必须填在答题卡的编程题部分,否则不得分。
1.编程序,从键盘输入三个整数,求出其中的最大数和最小数(4分)。
2.用π/4≈1-1/3+1/5-1/7+…公式求π的近似值,直到最后一项的绝对值小于10-6为止(6分)。
参考答案
1
3
4
5
6
7
8
9
D
C
B
A
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
二、填空题(共10分,每空1分)
1.函数声明、函数体(答案不要求有顺序)
2.选择结构、循环结构(答案不要求有顺序)
3.字母
4.‘\0’
5.3
6.1
7.0
8.fp=fopen(“list”,“rb+”);
1.9,11,9,102.10
3.s=94.sum=18,number=05.s=20
四、完善程序题(共20分,每空2分)
1.
(1)m%i==0
(2)n++(3)printf(“”\n)
2.
(1)string
(2)!
=(3)word==0(4)num++
3.
(1)5
(2)38+i(3)printf(“\n”)
五、编程序(共10分第1题4分,第2题6分)
第1题:
程序清单
#include<
voidmain()
{
inta,b,c,max,min;
printf(“Pleaseinputthreenumbers:
\n”);
scanf(“%d,%d,%d”,&
a,&
b,&
c);
max=a;
min=a;
if(b>
max)max=b;
if(b<
min)min=b;
if(c>
max)max=c;
if(c<
min)min=c;
printf(“Max=%d,Min=%d\n”,max,min);
第2题:
#include<
main()
ints;
floatn,t,Pi;
t=1;
Pi=0;
n=1.0;
S=1;
while((fabs(t))>
1e-6)
{Pi=Pi+t;
n=n+2;
s=-S;
t=S/n;
Pi=Pi*4;
printf("
Pi=%10.6f\n"
,Pi);