黑龙江工程学院2022年C语言预测卷

本试卷为黑龙江工程学院2022年C语言预测卷,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言预测卷

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

(  A  )
1、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是________。
A、1
B、0
C、2
D、不知道a的值,不能确定
(  B  )
2、以下能正确定义二维数组的是________。
A、int a[][3];
B、int a[][3]={2*3};
C、int a[][3]={};
D、int a[2][3]={{1},{2},{3,4}};
(  C  )
3、若整型变量a、b、c、d中的值依次为2、2、3、4,则条件表达式a<b?a:c
A、1
B、2
C、3
D、4
(  B  )
4、main( )
{
int n;
( n=6*4,n+6),n*2;
printf("n=%d\n",n);
}
此程序的输出结果是________.
A、30
B、24
C、60
D、48
(  D  )
5、若int i=10;
执行下列程序后,变量i的正确结果是________。 switch (i)
{
case 0: i+=1;
case 10: i+=1;
case 11: i+=1;
default: i+=1;
}
A、10
B、11
C、12
D、13
(  D  )
6、c语言允许将一条语句写在两行上,下列语句不正确是________。
A、int a,
b;
B、int a
,b;
C、int
a,b;
D、int a,b
;
(  A  )
7、若有定义int a=12,n=5,则表达式a%=(n%2)运算后,a的值:
A、0
B、1
C、12
D、6
(  D  )
8、有以下程序
#include <stdio.h>
void fun(char *t, char *s)
{
while(*t!=0) t++;
while((*t++=*s++)!=0);
}
min()
{
char ss[10]="acc",aa[10]="bbxxyy";
fun(ss,aa);
printf("%s,%s﹨n",ss,aa);
}
程序的运行结果是________。
A、accxyy, bbxxyy
B、axx, bbxxyy
C、accxxyy, bbxxyy
D、accbbxxyy, bbxxyy
(  B  )
9、以下定义语句中正确的是________。
A、int a=b=0 ;
B、char A=65+1,b='b';
C、float a=1,*b=&a,*c=&b ;
D、double a=0.0,b=1.1;
(  A  )
10、设有如下程序段 char s[20]= "bejing",*p; p=s; 则执行p=s; 语句后,以下叙述正确的是________。
A、可以用*p表示s[0]
B、s数组中元素的个数和p所指字符串长度相等
C、s和p都是指针变量
D、数组s中的内容和指针变量p中的内容相等
(  D  )
11、假定等级和分数有以下对应关系: 等级: a 分数: 85 ~ 100 等级: b 分数: 60 ~ 84 等级: c 分数: 60 以下 对于等级 grade 输出相应的分数区间,能够完成该功能的程序段是 __________.
A、switch (grade)
{
case 'A':printf("85--100\n");
case 'B':printf("60--84\n");
case 'C':printf("60 以下 \n");
default:printf(" 等级错误 !\n");
}
B、switch (grade)
{
case 'A':printf("85--100\n");break;
case 'B':printf("60--84\n");
case 'C':printf("60 以下 \n");
default:printf(" 等级错误 !\n");
}
C、switch (grade)
{
case 'A':printf("85--100\n");break;
case 'B':printf("60--84\n");break;
case 'C':printf("60 以下 \n");
default:printf(" 等级错误 !\n");
}
D、switch (grade)
{
case 'A':printf("85--100\n");break;
case 'B':printf("60--84\n");break;
case 'C':printf("60 以下 \n");break;
default:printf(" 等级错误 !\n");}
(  D  )
12、以下程序的功能是 : 从键盘上输入若干个学生的成绩 , 统计并输出最高成绩和最低成绩 , 当输入负数时结束输入。请填空。 __________
#include<stdio.h>
void main( )
{
float x,amax,amin;
scanf("%f",&x);
amax=x;
amin=x;
while (________ )
{
if (x>amax) amax=x;
if (______) amin=x;
scanf("%f",&x);
}
printf("\namax=%f\namin=%f\n",amax,amin);
}
A、x<=0 x>amin
B、x> 0 x<=amin
C、x>0 x>amin
D、x>=0 x<amin
(  C  )
13、在定义 int a[5][6]; 后,数组 a 中的第 10 个元素是__________ (设 a[0][0] 为第一个元素)
A、a[2][5]
B、a[2][4]
C、a[1][3]
D、a[1][5]
(  D  )
14、以下程序执行时输入 language programming< 回车 > , 输出结果是 __________.
#include <stdio.h>
void main( )
{
char str[30];
gets(str);
printf("str=%s\n",str);
}
A、Language Programming
B、Language
C、str=Language
D、str=Language Programming
(  B  )
15、在"先判断后工作"的循环程序结构中,循环体执行的次数最少是________次。
A、1
B、0
C、2
D、不定
(  B  )
16、设有以下语句,则z的二进制值是 char x=3,y=6,z; z=x^y<<2:
A、00010100
B、00011011
C、00011100
D、00011000
(  C  )
17、下列属于不合法的c语言整型常量的选项是________。
A、-32679
B、0Xabc
C、069
D、3e2
(  C  )
18、设有如下定义:
struct sk
{
int n;
float x;
} data,*p;
若要使p指向data中的n域,正确的赋值语句是________。
A、p=&datn;
B、*p=datn;
C、p=(struct sk*)&datn;
D、p=(struct sk*)datn;
(  A  )
19、若有定义语句:int a=3,b=2,c=1; 以下选项中错误的赋值表达式是______。
A、a=(b=4)=3;
B、a=b=c+1;
C、a=(b=4)+c;
D、a=1+(b=c=4);
(  C  )
20、下面不属于条件语句关键字的是________。
A、else
B、switch
C、while
D、if
(  B  )
21、在传值调用中,要求________。
A、形参和实参类型任意,个数相等
B、形参和实参类型一致,个数相等
C、形参和实参类型一致,个数不等
D、形参和实参类型任意,个数任意。
(  B  )
22、在以下各标识符中,合法的用户标识符是________。
A、001
B、table__1
C、0__t
D、k%
(  B  )
23、以下关于switch语句和break语句的描述中,正确的是______。
A、在switch语句中必须使用break语句
B、在switch语句中,可以根据需要使用或不使用break语句
C、break语句只能用于switch语句中
D、break语句是switch语句的一部分
(  B  )
24、下面函数的功能是________。 a(s1,s2) char s1[],s2[]; while(s2++=s1++);
A、字符串比较
B、字符串复制
C、字符串链接
D、字符串反向
(  B  )
25、有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是________。
struct node
{
char data;
struct node *next;
}
a,b,*p=&a,*q=&b;
A、3 4 7 5
B、3 5 7 4
C、1 2 3 4
D、1 2 3 5
(  B  )
26、有以下程序:
main()
{
int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},ij;
for(i=0;i<4;i++)
{
for(j=0;j<=i;j++) printf("%4c",’);
for(j=______;j<4;j++) printf("%4d",num[i][j]);
printf("\n");
}
}
若要按以下形式输出数组右上半三角 1 2 3 4 6 7 8 11 12 16 则在程序下划线处应填入的是 ______ 。
A、i-1
B、i
C、i+1
D、4-i
(  C  )
27、有以下程序:
main()
{
char str[]="xyz", *ps=str;
while(*ps) ps++;
for(ps--;ps-str>=o;ps--) puts(ps);
}
执行后的输出结果是________。
A、yz
xyz
B、z
yz
C、z
yz
xyz
D、x
xy
xyz
(  D  )
28、如果需要打开一个已经存在的非空文件"file"并进行修改,正确的语句是________。
A、fp=fopen("FILE","r");
B、fp=fopen("FILE","a+");
C、fp=fopen("FILE","w+");
D、fp=fopen("FILE","r+");
(  D  )
29、若x,y均定义成int型,z定义为double型,以下不合法的scanf函数调用语句是________。
A、scanf(“%d %x, %le”, &x, &y, &z);
B、scanf(“%2d *%d, %lf” &x, &y, &z);
C、scanf(“%x %*d %o”, &x, &y);
D、scanf(“%x %o%6.2f”, &x, &y, &z);
(  A  )
30、若有下面的说明和定义:
struct test
{
int m1;
char m2;
float m3;
union uu
{
char u1[5];
int u2[2];
}
ua;
}
myaa;
则sizeof(struct test)的值是________。
A、20
B、16
C、14
D、9
(  C  )
31、若有以下定义,则正确的语句是________。
union data
{
int i;
char c;
float f;
} a;
int n;
A、c=5;
B、a={
2,'a',1.2};
C、printf("%d\n",a);
D、n=a;
(  B  )
32、执行下面程序片段的结果是______。int x=23;
do
{
printf("%2d",x--);
}
while(!x);
A、打印出321
B、打印出23
C、不打印任何内容
D、陷入死循环
(  D  )
33、下列叙述中正确的是______。
A、C语言编译时不检查语法
B、C语言的子程序有过程和函数两种
C、C语言的函数可以嵌套定义
D、C语言中,根据函数能否被其它源文件调用,被区分为内部函数和外部函数
(  C  )
34、以下程序中函数f的功能是将n个字符串,按由大到小的顺序进行排序。
#include <string.h>
void f(char p[][10],int n)
{
char t[20];
int i,j;
for(i=0;i<n-1;i++)
for (j=i+1;j<n;j++)if(strcmp(p[i],p[j])<0)
{
strcpy(t,p[i]);
strcpy(p[i],p[j]);
strcpy(p[j],t);
}
}
main()
{
char p[][10]={"abc","aabdfg","abbd","dcdbe","cd"};
f(p,5);
printf("%d\n",strlen(p[0]));
}
程序运行后的输出结果是______。
A、6
B、4
C、5
D、3
(  C  )
35、设有数据定义语句"int a[200]; ",下列数组元素引用中下标不越界的是________。
A、a[-1]
B、a[201]
C、a[0]
D、a[200]
(  A  )
36、printf函数中用到格式符%-6s,其中数字6表示输出的字符串占用6列。如果字符串长度小于6,则输出按方式 ________。
A、从左起输出该字符串,右补空格
B、从右起输出该字符串,左补空格
C、0
D、输出错误信息
(  C  )
37、计算表达式*执行下面的程序段,变量 b 的值将变为 ▁▁▁▁▁。double a = 3, b; b = 1 / 2 + a;
A、0.0
B、0.2
C、3.0
D、3.5
(  C  )
38、下列不正确的转义字符是________。
A、\\'
B、\"
C、074'
D、\0'
(  D  )
39、以下关于注释的叙述中错误的是________。
A、注释的边界符号“/”和“*”之间不允许加入空格
B、C 语言允许注释出现在程序中任意合适的地方
C、注释的内容仅用于阅读,对程序的运行不起作用
D、注释的边界符号“/*”和“*/”必须成对出现且可以嵌套
(  A  )
40、以下选项中不合法的标识是________。
A、&a
B、FOR
C、print
D、_00
(  B  )
41、软件设计中模块划分应遵循的准则是________。
A、低内聚低耦合
B、高内聚低耦合
C、低内聚高耦合
D、高内聚高耦合
(  B  )
42、int (*p)[6]; 它的含义为________。
A、具有6个元素的一维数组
B、定义了一个指向具有6个元素的一维数组的行指针变量
C、指向整型指针变量
D、指向6个整数中的一个的地址
(  A  )
43、若有double *p,x[10]; int i=5; 使指针变量p指向元素x[5]的语句为________。
A、p=&x[i];
B、p=x;
C、p=x[i];
D、p=&(x+i)
(  D  )
44、下面说法中错误的是________。
A、共用体变量的地址和它各成员的地址都是同一地址
B、共用体内的成员可以是结构变量,反之亦然
C、在任一时刻,共用体变量的各成员只有一个有效
D、函数可以返回一个共用体变量
(  C  )
45、判断两个字符串是否相等,正确的表达方式是________。
A、while(s1==s2)
B、while(s1=s2)
C、while(strcmp(s1,s2)==0)
D、while(strcmp(s1,s2)=0)
(  D  )
46、若有说明 int a[][4]={0,0};
则下面不正确的叙述是________。
A、数组a的每个元素都可得到初值0
B、二维数组a的第一维大小为1
C、因为二维数组a中第二维大小的值除经初值个数的商为1,故数组a的行数为1
D、有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
(  C  )
47、c语言规定,在一个源程序中,main函数的位置________。
A、必须在最开始
B、必须在其他函数的后面
C、可以任意
D、必须在最后
(  A  )
48、C语言程序中,当调用函数时()。
A、实参和形参各占一个独立的存储单元
B、实参和形参可以共用存储单元
C、可以由用户指定是否共用存储单元
D、计算机系统自动确定是否共用存储单元
(  B  )
49、以下语句中,不能实现回车换行的是()。
A、printf("\n");
B、putchar("\n");
C、fprintf(stdout,"\n");
D、fwrite("\n",1,1,stdout);
(  C  )
50、以下运算符中,优先级最高的运算符是()。
A、*=
B、>=
C、(类型)
D、+