C)a>=1,a<=10D)1<=a&&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>2
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
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:
i+=1;
case11:
i+=1;
default:
i+=1;
}
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;elses2;D)if(a==0)s1;elses2;
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;i<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
voidmain()
{
inti,j,m,n;
i=8;j=10;
m=++i;n=j++;
printf(“%d,%d,%d,%d”,i,j,m,n);
}
2.下面程序段执行后,sum的值为。
#include
voidmain()
{
intsum=0,i;
for(i=1;i<=10;i++)
{
if(i%5==0)break;
elsesum+=i;
}
}
3.下面程序运行的结果是:
#include
voidmain()
{ints=0,k;
for(k=7;k>=4;k--)
{switch(k)
{case1:
case2:
case3:
s++;break;
case4:
case5:
case6:
s+=2;break;
case7:
case0:
s+=3;break;
}
}
printf(“s=%d\n”,s);
}
4.程序清单如下:
#include
voidmain()
{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.下面程序运行的结果是:
。
#include
intmax(int,int);
inta=3,b=5,c=100;
voidmain()
{ints=0;
s+=max(max(a,b),c);
printf(“s=%d\n”,s);
}
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是素数。
程序清单如下:
#include
#include
voidmain()
{intm,i,n=0;
for(m=100;m<=200;m++)
{
for(i=2;i<=m-1;i++)
if(
(1))break;
if(i>=m){printf(“%d”,m);
(2);}
if(n%10==0)(3);
}
printf(“\n”);
}
2.下列程序的功能是:
从键盘输入一行字符,统计其中单词个数,单词之间用空格分隔开。
程序清单如下:
#include
voidmain()
{charstring[81];
inti,num=0,word=0;
charc;
gets(
(1));
for(i=0;(c=string[i])
(2)‘\0’;i++)
if(c==‘’)word=0;
elseif((3))
{word=1;
(4);
}
printf(“Thereare%dwordsintheline.\n”,num);
}
3.下列程序用于输出下面的图形。
要求:
图形第一行的第一个字符输出在第40列且字符0之间以一个空格隔开。
00000
00000
00000
00000
00000
程序清单如下:
#include
voidmain()
{
inti,j;
chara[5]={‘0’,‘0’,‘0’,‘0’,‘0’},space=‘’;
for(i=1;i<=
(1);i++)
{
for(j=1;j<=
(2);j++)printf(“%c”,space);
for(j=0;j<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分)。
C语言历年题目
(一)
参考答案
一、单项选择题(共40分每题1分)
1
2
3
4
5
6
7
8
9
10
D
C
C
D
D
B
B
D
A
D
11
12
13
14
15
16
17
18
19
20
D
B
C
B
A
A
B
D
A
A
21
22
23
24
25
26
27
28
29
30
D
D
D
D
D
B
D
D
D
B
31
32
33
34
35
36
37
38
39
40
C
D
A
B
C
A
C
D
C
D
二、填空题(共10分,每空1分)
1.函数声明、函数体(答案不要求有顺序)
2.选择结构、循环结构(答案不要求有顺序)
3.字母
4.‘\0’
5.3
6.1
7.0
8.fp=fopen(“list”,“rb+”);
三、程序运行题(共20分每题4分)
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(bif(c>max)max=c;
if(cprintf(“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);
}
}