江汉大学2022年计算机C语言专升本测试卷

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

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

计算机C语言专升本测试卷

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

(  B  )
1、请读程序 :
#include <stdio.h>
f(int b[ ], int n)
{
int i, r=1;
for(i=0; i<=n; i++) r=r*b[i];
return r;
}
void main()
{
int x, a[]={2,3,4,5,6,7,8,9} ;
x=f(a, 3);
printf("%d\n",x);
}
上面程序的输出结果是 __________.
A、720
B、120
C、24
D、6
(  C  )
2、设
struct data
{
int a;
float b;
} c,*p=&c;
,引用正确的是________。
A、*p.a
B、p.b
C、p->a
D、*p->b
(  A  )
3、数据和程序以______进制代码形式存放在存储器中。
A、二
B、八
C、十
D、十六
(  A  )
4、下列描述中,符合结构化程序设计风格的是________。
A、使用顺序、选择和重复(循环) 三种基本控制结构表示程序的控制逻辑
B、模块只有一个入口,可以有多个出口
C、注重提高程序的存储效率
D、使用goto语句跳转
(  A  )
5、下列程序的运行结果是________。
#include<stdio.h>
void sub(int*s,int*y)
{
static int m=4: *y=s[m];
m--;
}
void main()
{
int a[]={1,2,3,4,5},k,x;
printf("\n");
for(k=0;k<=4;k++)
{
sub(a,&x);
printf("%d,",x);
}
}
A、5,4,3,2,1,
B、1,2,3,4,5,
C、0,0,0,0,0,
D、4,4,4,4,4,
(  B  )
6、下面程序段执行后输出的结果是________
#include<stdio.h>
main()
{
int i;
for(i=1;i<8;i++)
{
{
if(i%3)
{
printf("*");
continue;
}
}
printf("#");
}
printf("\n");
}
A、*#**#**#
B、**#**#*
C、*#**#**
D、**#**
(  D  )
7、若有以下说明和语句:
struct st
{
int n;
char *ch;
}
;
struct st a[3]
{
5,"abc",7,"def",9,"ghk"
}
,*p=a 则值为6的表达式是______。
A、p++->n
B、p->n++
C、(*.n++
D、++p->n
(  C  )
8、以下能将字符串,you are luck!正确读入的语句组是________。
A、char s[80]; scanf("%s",s);
B、char *s: scanf("%s",s);
C、char s[80]; gets(s);
D、char *s; gets(3);
(  D  )
9、下面叙述正确的是________。
A、只要是简单算法,它的操作步骤都不会超过 20 步
B、任何算法需要包含三种基本结构中的两种以上
C、复杂算法是不能用三种基本结构来表达的
D、C 语言程序的语句经过编译和链接转换成二进制机器指令后才能执行
(  C  )
10、运行以下程序后,如果从键盘上输入china
A、2,0
B、5,0
C、5,5
D、2,5
(  C  )
11、以下scanf函数调用语句中不正确的是__。
struct pupil
{
char name[20];
int age;
int sex;
}
pup[5], *p=pup;
A、scanf("%s", pup[0].name);
B、scanf("%d", &pup[0].age);
C、scanf("%d", p->age);
D、scanf("%d", &(p->sex));
(  C  )
12、设 float f[10]; 则f数组中下标最大的元素的正确表示为________。
A、f[10]
B、f[0]
C、f[9]
D、f(9)
(  B  )
13、X、Y、Z被定义为int型变量,若从键盘给它们输入数据,则正确的输入语句是________。
A、input X,Y,Z;
B、scanf(“%d%d%d”,&X,&Y,&Z);
C、scanf(“%d%d%d”,X,Y,Z);
D、read(“%d%d%d”,&X,&Y,&Z);
(  B  )
14、有以下程序
main()
{
int a=666,b=888;
printf("%d\n",a,b);
}
程序运行后的输出结果是______。
A、错误信息
B、666
C、888
D、666,888
(  D  )
15、以下选项中,合法的 c 语言常量是________。
A、2XY
B、HELLO'
C、"\0.\0
D、1.0
(  C  )
16、以下叙述中正确的是________。
A、对于逻辑表达式:a++||b++,设 a 的值为 1,则求解表达式的值后,b的值会发生改变
B、对于逻辑表达式:a++&&b++,设 a 的值为 0,则求解表达式的值后,b的值会发生改变
C、else 不是一条独立的语句,它只是 if 语句的一部分
D、关系运算符的结果有三种:0,1,-1
(  B  )
17、若有下列定义,则对a数组元素地址的正确引用是________。 int a[5],*p=a;
A、&a[5]
B、p+2
C、a++
D、&a
(  B  )
18、下列表达式中,可作为c合法表达式的是________。
A、[3,2,1,0]
B、(3,2,1,0)
C、3=2=1=0
D、3/2/1/0
(  A  )
19、若有 int a[10], *p=a;
,且 a 数组已赋值,则与 a[4]不等价的表达式为________。
A、p+4
B、*(p+4)
C、*(a+4)
D、p[4]
(  C  )
20、执行以下程序后的输出结果是________。
int w=3,z=7,x=10;
printf("%d",x>10?x+100:x-10);
printf("%d",w++||z++);
printf("%d",!w>z);
printf("%d",w&&z);
A、0111
B、1111
C、0101
D、0100

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

1、以下程序的功能是:从键盘上输入若干个学生的成绩, 统计并输出最高成绩和最低成绩,当输入负数时结束输入请填空________。
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);
}
2、若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};
则初始化后,a[1][2]的值为________,a[2][1]得到的值为________。
3、以下sum函数的功能是计算下列级数之和。 s=1+x+x2/2!+x3/3!+........+xn/n! 请给函数中的各变量正确赋初值。 double sum( double x, int n )
{
int i;
double a,b,s;
________
for( i=1;i<=n;i++)
{
a=a*x;
b=b*i;
s=s+a/b;
}
return s;
}
4、以下程序运行后的输出结果是 ________
fun(int x)
{
if(x/2>0) fun(x/2);
printf("%d ",x);
}
main()
{
fun(6);
}
5、在c语言中,逻辑运算符中的"||"称为________。
6、c语言中的关键字共有32个,而且都是________写。提示:大/小
7、下列程序段的运行结果是_____。
main()
{
int n,s=0;
for(n=1;n<=6;n++)
{
if(n%3==0)continue;
s=s+n;
}
printf("%d\n",s);
}
8、单精度型数据有效位为( )位。
9、语言的函数体一般由____和____构成
10、构成数组的各个元素必须具有相同的______。

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

1、编写程序:判断一个素数能被几个9整,比如:
请输入一个素数:
13
素数13能整除6个9组成的数999999
2、用一个数组存放图书信息,每本书是一个结构,包括下列几项信息书名、作者、出版年月、借出否,试写出描述这些信息的说明,并编写一个程序,读入若干本书的信息然后打印出以上信息,使用结构体实现。
3、用空格或换行分开的字符串称为单词。输入多行字符串,直到遇到了单词 "stop" 时才停止。最后输出单词的数量。用于分割单词的空格或换行可能多于1个。单词数量不包括"stop" 。