中国刑事警察学院历年C语言程序设计

本试卷为中国刑事警察学院历年C语言程序设计,题目包括:单项选择题。

覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,程序题,结构体,文件。

本卷包括如下题型:

一、单项选择题

C语言程序设计

一、单项选择题 (共50题,每题2分,共计100分)

(  C  )
1、以下叙述中正确的是________。
A、C程序中的注释只能出现在程序的开始位置和语句的后面
B、C程序书写格式严格,要求一行内只能写一个语句
C、C程序书写格式自由,一个语句可以写在多行上
D、用C语言编写的程序只能放在一个程序文件中
(  D  )
2、有以下程序
void fun(int*a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/
{
int t,i,j;
for(i=0;i<n一1;j++) for(j=i+1;j<n;j++) if(a[i]
}
main()
{
int c[10]={1,2,3,4,5.6,7,8,9,0 },i;
fun(c+4.6): for(i=0;i<10;i++)printf("%d,",c[i]);
printf("n"):
}
}
程序运行的结果是________。
A、1,2,3,4,5,6,7,8,9,0,
B、0,9,8,7,6,5,1,2,3,4,
C、0,9.8,7.6,5,4,3,2,1.
D、1,2,3,4,9,8,7,6,5,0,
(  B  )
3、以下选项中,合法的一组c语言数值常量是________。
A、028
.5e-3
-0xf
B、12.
OXa23
4.5eO
C、.l77
4cl.5
Oabc
D、0x8A
10,000
3.e5
(  C  )
4、以下正确的函数定义形式是________.
A、double fun(int x,int y)
B、double fun(int x; int y)
C、double fun(int x, int y);
D、double fun(int x,y);
(  B  )
5、设有定义:float a=2,b=4,h=3; ,以下c语言表达式与代数式 计算结果不相符的是________。
A、(a+b)*h/2
B、(1/2)*(a+b)*h
C、(a+b)*h*1/2
D、h/2*(a+b)
(  C  )
6、有以下程序
main( )
{
char k;
int i;
for(i=1;i<3;i++)
{
scanf("%c",&k);
switch(k)
{
case ‘0’: printf("another\n");
case ‘1’: printf("number\n");
}
}
}
程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是________。
A、another
number
B、another
number
another
C、another
number
number
D、number
number
(  C  )
7、有以下函数定义:
void fun(int n, double x)
{
……
}
若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是________。
A、fun(int y,double m);
B、k=fun(10,12.5);
C、fun(x,n);
D、void fun(n,x);
(  D  )
8、以下函数findmax拟实现在数组中查找最大值并作为函数值返回, 但程序中有错导致不能实现预定功能
#define MIN -2147463647
int findmax(int x[],int n)
{
int i,max;
for(i=0;i<n;i++)
{
max=MIN;
if(max<x[i]) max=x[i];
}
return max;
}
造成错误的原因是________。
A、定义语句int i,max中max未赋值
B、赋值语句max=MIN;中,不应该给max赋MIN值
C、语句if(max<x[i]) max=x[i];中判断条件设置错误
D、赋值语句max=MIN;放错了位置
(  A  )
9、有以下程序
#include <stdio.h>
main()
{
int a1,a2;
char c1,c2;
scanf("%d%c%c",&a1,&c1,&a2,&c2);
printf(%d,%c,%d,%c,a1,c1,a2,c2);
}
若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,程序输出的结果是:12,a,34,b则正确的输入格式是(以下︿代表空格,<cr>代表回车)
A、12a34b<CR>
B、12︿a︿34︿b<CR>
C、12,a,34,b<CR>
D、12︿a34︿b<CR>
(  C  )
10、若 a 为整型变量,则以下语句 。 a=-2l; printf("%d\n",a);
A、赋值不合法
B、输出为不确定的值
C、输出值为 -2
D、输出值为 2
(  C  )
11、以下对 c 语言中共用体类型数据的叙述正确的是______。
A、可以对共用体变量名直接赋值
B、一个共用体变量中可以同时存放其所有成员
C、一个共用体变量中不可以同时存放其所有成员
D、共用体类型定义中不能出现结构体类型的成员
(  D  )
12、以下函数 func() 的功能是:使具有 n 个元素的一维数组 b 的每个元素的值都增加 2 ,划线处应填入 _____.
func(int b[ ],int n)
{
int ;
for(i=0;i<n;i++) __________;
}
A、b[i++]
B、b[i]++
C、b[i+=2]
D、b[i]+=2
(  A  )
13、按照标识符的要求,下列选项中,( )符号不能组成标识符。
A、连接符
B、下划线
C、大小写字母
D、数字字符
(  B  )
14、下面各选项中,均是c语言合法标识符的选项组是________。
A、33 we auto
B、_23 me _3ew
C、_43 3e_ else
D、ER-DF 32
(  A  )
15、若有以下类型说明语句: char w; int x; float y,z; 则表达式w*x+z-y的结果为_______类型。
A、float
B、char
C、int
D、double
(  B  )
16、在下列叙述中,错误的一条是________。
A、scanf()函数可以用来输入任何类型的多个数据
B、数组名作函数参数时,也采用“值传递”方式
C、如果形参发生改变,不会改变主调函数的实参值
D、函数的实参与形参的类型应一致
(  C  )
17、在下列各项中,运算级别最低的为________。
A、算术运算符
B、关系运算符
C、逻辑运算符
D、圆括号( )
(  B  )
18、设宏定义#define PI 3.1415926,用宏名PI替换的是________。
A、算术表达式
B、字符串
C、单精度实型数
D、双精度实型数
(  A  )
19、已知char a; int b; float c; double d; 则表达式a*b+c-d的结果为________。
A、double
B、int
C、float
D、char
(  D  )
20、以下选项中非法的表达式是________。
A、0
B、i=j==0
C、(char)(65+3)
D、x+1=x+1
(  B  )
21、已知 #int t=0; while(t=1) {...} 则以下叙述正确的是________。
A、循环控制表达式的值为0
B、循环控制表达式的值为1
C、循环控制表达式不合法
D、以上说法都不对
(  D  )
22、下列不是循环语句的是________。
A、while语句
B、do…while语句
C、for语句
D、if…else语句
(  B  )
23、结构化程序设计的3种结构是________。
A、顺序结构,分支结构,跳转结构
B、顺序结构,选择结构,循环结构
C、分支结构,选择结构,循环结构
D、分支结构,跳转结构,循环结构
(  D  )
24、要定义整型数组x,使之包括初值为0的三个元素,下列语句中错误的是________。
A、int x[3]=0,0,0;
B、int x[]=0;
C、static int x[3]=0;
D、int x[]=
(  C  )
25、若定义下列结构体,结构体变量p的出生年份赋值正确的语句是________。
struct st
{
int x;
int y;
int z;
}
struct worker
{
char name[20];
char sex;
struct st birth;
} p;
A、x=1987
B、birth.x=1987;
C、p.birth.x=1987;
D、x=1987;
(  D  )
26、下列说法正确的是________。
A、在C程序中,main()函数必须位于程序的最前面
B、在C程序中,一条语句只能写一行而不能写多行
C、C程序是以行为基本单位的
D、C语言本身没有输入输出语句
(  C  )
27、下面程序的输出结果是______。
main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int(*p)[4]=a,i,j,k=0;
for(i=0;i<3;i++) for(j=0;j<2;j++) k=p[i][j];
printf("%d\n",k);
}
A、17
B、18
C、19
D、23
(  D  )
28、下列选项中不是字符常量的是________。
A、'\V'
B、'\x2a'
C、'a'
D、"\0"
(  A  )
29、以下程序的输出结果是 long fun(int n) {
long s;
if(n==1||n==2)s=2;
else s=n-fun(n-1);
return s;
}
main() {
printf("%ld\n",fun(3));
}
A、1
B、2
C、3
D、4
(  A  )
30、以下程序运行后,输出结果是
#define PT 5.5
#define S(x) PT*x*x
#include<stdio.h>
main()
{
int a=1,b=2;
printf("%4.1f\n",s(a+b));
}
A、49.5
B、9.5
C、22
D、45.0
(  C  )
31、下列关于c语言字符数组描述正确的是________。
A、字符数组可以存放字符串
B、字符数组的下标是从0开始的
C、字符数组不能输出字符串
D、字符数组可以没有'\0'
(  D  )
32、下列字符常量的写法中,正确的是________。
A、'abc'
B、'\5A'
C、A
D、'\73'
(  C  )
33、\、/、mod、*等4个算术运算符中,优先级最低的是________。
A、\
B、/
C、Mod
D、*
(  B  )
34、c语言中下面哪个不是循环语句?
A、do while
B、if
C、while
D、for
(  B  )
35、下列说法中正确的是________。
A、在switch语句中一定要使用break语句
B、在switch语句中不一定要使用break语句
C、break语句是switch语句的一部分
D、break只能用于switch语句中
(  C  )
36、c语言中下面哪个不是条件语句?
A、if
B、if else
C、NSLog
D、switch
(  B  )
37、以下程序的输出结果是_______。
main()
{
char h[]="america",*q;
q=h+2;
printf("%c",*q++);
printf("%c",*q++);
}
A、me
B、er
C、ca
D、ri
(  C  )
38、有以下程序
main()
{
char *s[]={"one","two","three"},*p;
p=s[1];
printf("%c,%s\n",*(p+1),s[0]);
}
执行后输出结果是______。
A、n,two
B、t,one
C、w,one
D、o,two
(  D  )
39、有以下程序______。
#include <stdio.h>
main()
{
file *fp;
int k,n,a[6]={1,2,3,4,5,6};
fp=fopen("d2.dat","w");
fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);
fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]);
fclose(fp);
fp=fopen("d2.dat","r");
fscanf(fp,"%d%d",&k,&n);
printf("%d%d\n",k,n);
close(fp);
}
程序运行后的输出结果是______。
A、1 2
B、1 4
C、123 4
D、123 456
(  D  )
40、对于64位系统,int类型能够表示的数的范围为
A、0~2的32次方
B、0~2的32次方-1
C、-2的31次方~2的31次方
D、-2的31次方~2的31次方-1
(  B  )
41、判断实数 x 属于闭区间 [a, b ] 的表达式为 ▁▁▁▁▁设a为整型变量,不能正确表达数学关系10<a<15的c语言表达是________。
A、a>10&&a<15
B、a>10||a<15
C、!(a<=10||a>=15)
D、!(a<=10)&&!(a>=15)
(  B  )
42、c语言中,运算符>=属于
A、算术运算符
B、关系运算符
C、逻辑运算符
D、条件运算符
(  D  )
43、若有以下定义和语句: int a[10]={1,2,3,4,5,6,7,8,9,10}
, *p=a;
不能表示a数组元素的表达式是________。
A、*p
B、a[9]
C、*p++
D、a[*p-a]
(  A  )
44、若有 int a[10], *p=a;
,且 a 数组已赋值,则与 a[4]不等价的表达式为________。
A、p+4
B、*(p+4)
C、*(a+4)
D、p[4]
(  D  )
45、以下叙述正确的是________。
A、在C程序中,每行中只能写一条语句
B、若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C、C程序中,无论是整数还是实数,都能被准确无误地表示
D、在C程序中,%是只能用于整数运算的运算符
(  B  )
46、有以下程序
struct stu
{
char num[10];
float score[3];
};
main( )
{
struct stu s[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p;
int i;
float sum=0;
p=s;
for(i=0;i<3;i++)sum=sum+p->score[i];
printf("%.2f\n",sum);
}
程序运行后的输出结果是________。
A、270
B、270.00
C、285.00
D、285
(  C  )
47、c语言规定,在一个源程序中,main函数的位置________。
A、必须在最开始
B、必须在其他函数的后面
C、可以任意
D、必须在最后
(  C  )
48、判断 i 和 j 至少有一个值为非0的表达式是____。
A、i!=0 && j!=0
B、i+j!=0
C、i || j
D、i&&j
(  C  )
49、下面程序的运行结果是________。
#include<stdio.h>
main()
{
int a[6],i;
for(i=1;i<6;i++)
{
a[i]=9*(i-2+4*(i>3))%5;
printf("%2d",a[i]);
}
}
A、-4 0 4 0 4
B、-4 0 4 0 3
C、-4 0 4 4 3
D、-4 0 4 4 0
(  D  )
50、若d 为double 型变量,则表达式d=1,d+5,d++ 的值是________.
A、1
B、6)0
C、2)0
D、1)0