北华大学2022年计算机C语言

本试卷为北华大学2022年计算机C语言,题目包括:单项选择题,填空题,编程题。

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

计算机C语言

一、单项选择题 (共20题,每题2分,共计40分)

(  C  )
1、若有定义:"int a=4,b=5; float x=3.4,y=2.1; ",则下列表达式的值为( )。
(float)(a+b)/2+(int)x%(int)y;
A、5.5
B、55
C、5.500000
D、55.00000
(  B  )
2、c语言中,下列不合法的字符串常量是________。
A、”\121”
B、'y='
C、”\n\n”
D、”ABCD\x6d”
(  C  )
3、以下程序的输出结果是________。
#define f(x) x*x
main()
{
int a=6,b=2,c;
c=f(a)/f(b);
printf("%d\n",c);
}
A、9
B、6
C、36
D、18
(  C  )
4、下述对c语言字符数组的描述中错误的是________。
A、字符数组可以存放字符串.
B、字符数组中的字符串可以整体输入、输出.
C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值.
D、不可以用关系运算符对字符数组中的字符串进行比较.
(  B  )
5、c语言对嵌套if语句的规定是:else总是与( ) 。
A、其之前最近的if配对
B、其之前最近的且尚未配对的if配对
C、缩进位置相同的if配对
D、第一个if配对
(  C  )
6、以下程序的运行结果是:
#include<stdio_h>
void sub(int s[] , int y)
{
static int t=3 ;
y=s[t] ;
t-- ;
}
main()
{
int a[]={1,2 , 3 , 4}, i , x=0 ;
for(i=0 ; i<4 ; i++)
{
sub(a,x) ;
printf( "% d ", x) ;
}
printf( "\ n " ) ;
}
A、1234
B、432l
C、0000
D、4444
(  A  )
7、c语言中,下列运算符优先级最高的是________。
A、!
B、%
C、>>
D、==
(  D  )
8、已知3个字符为:a、z和8,按它们的ascii码值升序排序,结果是________。
A、8,a,Z
B、a,8,Z
C、a,Z,8
D、8,Z,a
(  A  )
9、表示一条指令的存储单元的符号地址称________。
A、标号
B、变量
C、偏移量
D、类型
(  A  )
10、在int a=3,*p=&a中,*p的值是________。
A、变量s的地址值
B、无意义
C、变量p的地址
D、3
(  A  )
11、下列描述说明正确的是________。
A、定义结构体时,它的每个成员的数据类型可以不同
B、不同结构体的成员名不能相同
C、结构体定义时,其成员的数据类型不能是结构体本身
D、结构体定义时各成员项之间可用分号也可用逗号隔开
(  A  )
12、在c语言中,不正确的int类型的常数是______。
A、32768
B、0.
C、037
D、0xAF
(  D  )
13、有以下程序
#include<stdio.h>
main ()
{
int i, n;
for (i = 0; i < 8; i++)
{
n = rand () % 5;
switch (n)
{
case 1:
case 3:
printf ("%d\n", n);
break;
case 2:
case 4:
printf ("%d\n", n);
continue;
case 0:
exit (0);
}
printf ("%d\n", n);
}
}
以下关于程序执行情况的叙述,正确的是______。
A、for循环语句固定执行8次
B、当产生的随机数n为4时结束循环操作
C、当产生的随机数n为1和2时不做任何操作
D、当产生的随机数n为0时结束程序运行
(  D  )
14、以下关于排序算法的叙述中,正确的是________。
A、冒泡排序法中,元素的交换次数与元素的比较次数一定相同
B、冒泡排序法中,元素的交换次数不少于元素的比较次数
C、简单选择排序中,关键字相同的记录在排序前后的相对位置一定不变
D、简单选择排序中,关键字相同的记录在排序前后的相对位置可能交换
(  B  )
15、宏定义用于将一个标识符定义为一个
A、常量
B、字符串
C、整数
D、长整数
(  B  )
16、以下选项中,能定义m为合法的结构体变量的是______。
A、typedef struct abc {
double a;char b;} m;
B、struct {
double a;char b;}m;
C、struct ABC {
double a;char b;} ABC m;
D、typedef ABC{
double a;char b; } ABC m;
(  D  )
17、循环语句"for(i=1;i<0;i++) i++; "的循环次数是________。
A、无限循环
B、2次
C、1次
D、0 次
(  B  )
18、以下叙述中正确的是________。
A、在 C 程序中的八进制和十六进制,可以是浮点数
B、整型变量可以分为 int 型、short 型、long 型和 unsigned 型四种
C、八进制数的开头要使用英文字母 o,否则不能与十进制区分开
D、英文大写字母 X 和英文小写字母 x 都可以作为二进制数字的开头字符
(  C  )
19、下面说法正确的是________。
A、文件指针变量的值是文件当前正在处理的字节地址
B、文件指针变量的值是文件中包含的字符个数
C、文件指针的类型是一种指针类型
D、文件指针的类型是结构体类型
(  D  )
20、int a[10];
合法的数组元素的最小下标值为____
A、10
B、9
C、1
D、0

二、填空题 (共10题,每题2分,共计20分)

1、一个变量的指针是指 ________ 。
2、以下函数sstrcat( )的功能是实现字符串的连接,即将t所指字符串复制到s所指字符串的尾部。例如:s所指字符串为abcd,t所指字符串为efgh,函数调用后s所指字符串为abcdefgh。请填空。
void sstrcat(char *s, char *t)
{
int n;
n= strlen(s);
while (*(s+n)= ________ )
{
s++;
t++;
}
}
3、若变量x,y已定义为int类型且x的值为99,y的值为9,请将输出语句printf( ________ ,x/y);
补充完整,使其输出的计算结果形式为:x/y=11。
4、有int x=3,y=-4,z=5;
则表达式(x&&y)==(x||z)的值为 ________。
5、在c语言中,逻辑运算符中的"&&"称为________。
6、下列程序段的运行结果是________。
char a='m' ,*p ;
p=&a;
printf("%c",*p);
7、字符读写函数( )是用于把一个字符写入磁盘文件。
8、下面程序的功能是统计正整数的各位数字中零的个数,并求各位数字中的最大者。请分析程序填空。
#include<stdio.h>
main()
{
int n,count,max,t;
count=max=0;
scanf("%d",&n);
do
{
t= 【1】________;
if(t==0) ++count;
else if(max<t) 【2】________;
n/=10;
}
while(n);
printf("count=%d,max=%d",count,max);
}
9、以下程序对输入的一个小写字母,将字母循环后移5个位置后输出。如‘a’变成‘f’,‘w’变成‘b’。请在 内填入正确的内容。
#include <stdio.h>
void main()
{
char c;
c=getchar();
if(c>=’a’&&c<=’u’) ;
else if(c>=’v’&&c<=’z’) ;
putchar(c);
}
10、预处理命令以______ 开头。

三、编程题 (共3题,每题0分,共计40分)

1、编写程序:将字符数组a中下标值为奇数的元素从小到大排列,其它元素不变
例如:当a数组中的字符串为:"clanguage"时,程序的输出结果为:cgalgnaue()
2、编写程序:从键盘输入 n (n<10)个学生的学号(学号为4位的整数,从1000开始)、成绩并存入结构数组中,按成绩从低到高排序并输出排序后的学生信息。
输入输出示例:括号内为说明,无需输入输出
输入样例:
3 (n=3)
1000 85
1001 90
1002 75
输出样例:
1002 75
1000 85
1001 90
3、从键盘上输入一个2*3的矩阵,将其转秩后形成3*2的矩阵输出。