北华大学2022年C语言

本试卷为北华大学2022年C语言,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言

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

(  D  )
1、以下叙述中正确的是________。
A、do-while语句构成的循环不能用其他语句构成的循环来代替
B、do-while语句构成的循环只能用break语句退出
C、用do-while语句构成循环时,只有在while后的表达式为非零时结束循环
D、用do-while语句构成循环时,只有在while后的表达式为零时结束循环
(  A  )
2、c语言结构体类型变量在程序执行期间,________。
A、所有成员一直驻留在内存中
B、没有成员驻留在内存中
C、部分成员驻留在内存中
D、只有一个成员驻留在内存中
(  C  )
3、设fun()函数的定义形式为 void fun(char ch,float x) {…}则下列对函数fun的调用语句中,正确的是________。
A、fun(”ahc”,3.0);
B、t=fun('D',16.5):
C、fun('65',2.8);
D、fun(32,32);
(  B  )
4、若变量a、i已正确定义,且i已正确赋值合法的语句是________。
A、a==1
B、++i
C、a=a++=5
D、a=int(i)
(  C  )
5、有以下程序段: int i,j,m=0;
for(i=1;i<=15;i+=4) for(j=3;j<=19;j+=4)m++;
printf("%d\n",m);
程序段的输出结果是________。
A、12
B、15
C、20
D、25
(  A  )
6、在c语言中,存储一个字符型、整型、单精度实型变量所需的空间是________。型、单精度实型变量所需的空间是________。
A、1、2、4
B、1、1、4
C、1、2、8
D、2、2、8
(  B  )
7、设有字符串a="he has 钱!",则该字符串的长度为( )。
A、9
B、10
C、11
D、8
(  A  )
8、下列字符串是标识符的是________。
A、aa
B、a-class
C、int
D、LINE 1
(  D  )
9、下面哪一个不是字符常量________。
A、'a'
B、'?'
C、'9'
D、"a"
(  A  )
10、下列语句中,正确的是________。
A、char *s ; s="Olympic";
B、char s[7] ; s="Olympic";
C、char *s ; s={"Olympic"};
D、char s[7] ; s={"Olympic"};
(  D  )
11、有以下程序
#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
(  C  )
12、对二维数组的正确定义是________。
A、int a[ ] [ ]={1,2,3,4,5,6};
B、int a[2] [ ]={ 1,2,3,4,5,6};
C、int a[ ] [3]={1,2,3,4,5,6};
D、int a[2,3]={1,2,3,4,5,6};
(  D  )
13、在定义 int a[10]; 之后,对 a 的引用正确的是______。
A、a[10]
B、a[6.3]
C、a(6)
D、a[10-10]
(  D  )
14、在下列选项中 , 不正确的赋值语句是 __________.
A、++t;
B、n1=(n2=(n3=0));
C、k=i=j;
D、a=b+c=1;
(  D  )
15、执行下列程序后的输出结果是 _________.
#include <stdio.h>
void main( )
{
int k=4,a=3,b=2,c=1;
printf("%d\n",k<a?k:c<b?c:a);
}
A、4
B、3
C、2
D、1
(  D  )
16、合法的数组定义是 __________.
A、int a[6]={"string"};
B、int a[5]={0,1,2,3,4,5};
C、char a={"string"};
D、char a[]={0,1,2,3,4,5};
(  B  )
17、下列选项中均属于c语言合法的标识符是________。
A、Int
#sub
break
B、_3ab
FOR
Long
C、3a
printf
a_b
D、WORD
auto
include
(  A  )
18、以下选项中,与k=n++完全等价的表达式是________。
A、k=n,n=n+1
B、n=n+1,k=n
C、k= ++n
D、k+=n+1
(  B  )
19、下面关于指针的说法中错误的是________。
A、在指针定义的同时可以对其进行初始化
B、指针根据其所指向变量的类型的不同,所占用内存大小也不同
C、指针中存放的是内存单元的地址
D、相同类型的指针之间可以相互赋值
(  C  )
20、对于条件表达式(k)(i++):(i--)来说,其中的表达式k等价于( )
A、k==0
B、k==1
C、k!=0
D、k!=1
(  C  )
21、若有以下调用语句,则不正确的fun函数的首部是________。
main() {
…
int a[50],n;
…
fun(n, &a[9]);
…
}
A、void fun(int m,int x[])
B、void fun(int s,int h[4])
C、void fun(int p, int *s)
D、void fun(int n,int x)
(  C  )
22、设
struct data
{
int a;
float b;
} c,*p=&c;
,引用正确的是________。
A、*p.a
B、p.b
C、p->a
D、*p->b
(  B  )
23、c语言中,int型数据在内存中的存储形式是________。
A、ASCⅡ码
B、补码
C、反码
D、原码
(  D  )
24、fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是______。
A、只读
B、追加
C、读或读写
D、以上均正确
(  C  )
25、执行以下程序段后,w的值为________。
int w='a',x=14,y=15; w=((x||y)&&(w<'a'));
A、-1
B、NULL
C、1
D、0
(  A  )
26、以下叙述中错误的是______。
A、函数形参的值也可以传回给对应的实参
B、函数调用可以作为一个独立的语句存在
C、若函数有返回值,必须通过return语句返回
D、C程序必须由一个或一个以上的函数组成
(  C  )
27、下列关于形参的说法,正确的是________。
A、函数的形参是必须的
B、函数的形参可以是表达式
C、函数在定义时,形参是不占用存储空间的,只是在被调用时才会占,调用完毕也就被释放了
D、形参的名称、类型、数量、顺序必须与实参都相同,否则实参不会把信息正确地传递给形参
(  C  )
28、在下列选项中,没有构成死循环的程序段是________。
A、int i=100;
for(;;) {
i=i%10+1;
if(i>10)
break;
}
B、while(1);
C、int k=0;
do
{
++k;
}
while(k<=10);
D、int s=12;
while(s);
--s;
(  D  )
29、若要用下面的程序片段使指针变量p指向一个存储字符型变量的动态存储单元,则应填入; char * p; p= ( ) malloc (sizeof (char));
A、char
B、char *
C、(* char)
D、(char *)
(  D  )
30、采用递归方式对顺序表进行快速排序,下列关于递归次数的叙述中,正确的是________。
A、递归次数与初始数据的排列次序无关
B、每次划分后,先处理较长的分区可以减少递归次数
C、每次划分后,先处理较短的分区可以减少递归次数
D、递归次数与每次划分后得到的分区处理顺序无关
(  C  )
31、下列表达式的值为false的是________。
A、1<3&&5<7
B、!(2>4)
C、3&0&&l
D、!(5<8)||(2<8)
(  B  )
32、有以下程序:
int f(int n)
{
if(n ==1) return 1;
else return f(n-1)+1;
}
main( )
{
int i,j=0;
for(i=1;i<3;i++) j+=f(i);
printf("%d\n",j);
}
程序运行后的输出结果是________。
A、4
B、3
C、2
D、1
(  D  )
33、判断字符串s1是否大于字符串s2,应当使用 。
A、if (s1>s2)
B、if (strcmp(s1,s2))
C、if (strcmp(s2,s1)>0)
D、if (strcmp(s1,s2)>0)
(  C  )
34、下面程序的输出结果为________。
struct st
{
int x;
int *y;
}
*p;
int dt[4]={10,20,30,40};
struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
void main()
{
p=aa;
printf("%d ", ++p->x);
printf("%d ", (++p)->x);
printf("%d ", ++(*p->y));
}
A、10 20 20
B、50 60 21
C、51 60 21
D、60 70 31
(  B  )
35、关于二进制的说法中,正确的是________。
A、所有的信息只能用二进制代码来表示
B、计算机一般都使用二进制代码,用它的某种信息编码方式来表示信息
C、ASCII是计算机用来表示文字符号的唯一一种二进制代码
D、汉字在计算机内使用汉字国标码来表示,不使用二进制编码
(  C  )
36、阅读下列程序段: char s[18] = "a book!"; printf("%.4s\n", s);
其输出结果为________。
A、a book!
B、a book
C、a bo
D、a
(  D  )
37、以下程序的输出结果是______。
#include <stdio.h>
main()
{
int a=2,c=5;
printf("a=%%d,b=%%d\n",a,c);
}
A、a=%2,b=%5
B、a=2,b=5
C、a=%%d,b=%%d
D、a=%d,b=%d
(  B  )
38、数组a[10]的下标从( )开始。
A、1
B、0
C、10
D、不确定
(  B  )
39、在c语言中,不允许有常量的数据类型是________。
A、整型
B、结构型
C、字符型
D、字符串
(  C  )
40、下面四个选项中,均是正确的八进制数或十六进制数的选项是________。
A、-10 、0x8g 、 -011
B、0abc 、-017 、 0xc
C、0010 、 -0x11 、 0xf1
D、0a12 、 -0x123 、 -0xa
(  A  )
41、若有定义语句:char c='\101'; 则变量 c 在内存中占()
A、1 个字节
B、2 个字节
C、3 个字节
D、4 个字节
(  C  )
42、若有代数式(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的c语言表达式是______。
A、sqrt(abs(n^x+e^x))
B、sqrt(fabs(pow(n,x)+pow(x,e)))
C、sqrt(fabs(pow(n,x)+exp(x)))
D、sqrt(fabs(pow(x,n)+exp(x)))
(  A  )
43、以下说法错误的是________。
A、C 语言中的常量是指在程序运行过程中经常被用到的变量
B、C 语言中的常量是指在程序运行过程中其值不能被改变的量
C、C 语言中的常量可以用一个符号名来代表
D、C 语言中的常量可以用宏来定义
(  A  )
44、以下程序的运行结果是________。
main()
{
int n;
for(n=1;n<=10;n++)
{
if(n%3==0) continue;
printf("%d",n);
}
}
A、12457810
B、369
C、12
D、1234567890
(  D  )
45、在c语言中,if语句后的一对原括号中,用以决定分支的流程的表 达式________。
A、只能用逻辑表达式
B、只能用关系表达式
C、只能用逻辑表达式或关系表达式
D、可用任意表达式
(  A  )
46、打开文件时,方式"w"决定了对文件进行的操作是________。
A、只写盘
B、只读盘
C、可读可写盘
D、追加写盘
(  D  )
47、有如下条件表达式,若a=2、b=4、c=5 、d=7则表达式的值为________。a > b ? a : c > d ? c : d
A、2
B、4
C、5
D、7
(  C  )
48、在以下定义中,标识符p________。 int (*p)[3];
A、定义不合法
B、是一个指针数组名,每个元素是一个指向整数变量的指针
C、是一个指针,它指向一个具有三个元素的一维数组
D、是一个指向整型变量的指针
(  C  )
49、关于return语句,下列正确的说法是________。
A、不能在主函数中出现且在其他函数中均可出现
B、必须在每个函数中出现
C、可以在同一个函数中出现多次
D、只能在除主函数之外的函数中出现一次
(  A  )
50、以下语句中,循环次数不为 10 次的语句是()。
A、for(i=1;i<10;i++);
B、i=1;do{i++;}while(i<=10);
C、i=10;while(i>0){--i;}
D、i=1;m:if(i<=10){i++;goto m;}