中国民用航空飞行学院2022年计算机C语言专升本

本试卷为中国民用航空飞行学院2022年计算机C语言专升本,题目包括:单项选择题,填空题,编程题。

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

计算机C语言专升本

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

(  D  )
1、若有定义"double a;",则正确的输入语句是________。
A、scan{(”%if”,a);
B、scanf(”%f”,&a);
C、scan{(”%If”,&a)
D、scan{(”%le”,&a);
(  D  )
2、下列选项中,能正确定义数组的语句是________。
A、int num[0..2008];
B、int num [];
C、int N=2008; int num[N];
D、#define N 2008; int num[N];
(  C  )
3、运行以下程序后,如果从键盘上输入china#<回车>, 则输出结果为
#include <stdio.h>
main( )
{
int v1=0,v2=0;
char ch;
while ((ch=getchar( ))!='#') switch(ch)
{
case 'a': case 'h': default: v1++;
case 'o': v2++;
}
printf("%d,%d\n",v1,v2);
}
A、2,0
B、5,0
C、5,5
D、2,5
(  B  )
4、以下对枚举类型名的定义中正确的是______。
A、enum a={ one , two , three} ;
B、enum a {one=9 , two=-1 , three} ;
C、enum a={"one" , "two" , "three"} ;
D、enum a {"one" , "two" , "three"} ;
(  D  )
5、有如下程序段: int*p,a[7]={-5,0,4,2,7,1}; p=a+6; 执行该程序段后,*p的值为________。
A、4
B、2
C、1
D、0
(  B  )
6、在一个应用程序中有如下定义:int a[]= {1,2,3,4,5,6,7,8,9,10 },为了打印输出数组a的最后一个元素,下面正确的代码是________。
A、printf("%d",a[10];)
B、printf("%d",a[9]);
C、printf("%d",a[a.length]);
D、printf("%d",a[8]);
(  B  )
7、下面关于变量组成部分的描述中正确的是________。
A、变量名不是标识符
B、变量名是标识符
C、浮点型属于复合类型
D、变量属性分为两类:基本类型和复合类型
(  D  )
8、以下正确的说法是______。
A、实参和与其对应的形参各占用独立的存储单元
B、实参和与其对应的形参共用一个存储单元
C、只有当实参和与其对应的形参同名时才共用存储单元
D、型参是虚拟的,函数在没有被调用时,不占用存储单元
(  C  )
9、已知x=3、y=2则表达式x * =y+8的值为 ( )
A、3
B、2
C、30
D、10
(  B  )
10、微处理器按其字长可以分为________。
A、4位、8位、16位
B、8位、16位、32位、64位
C、4位、8位、16位、24位
D、8位、16位、24位
(  C  )
11、在下列叙述中,正确的一条是______。
A、if(表达式)语句中,表达式的类型只限于逻辑表达式
B、语句“goto 12;”是合法的
C、for(;;)语句相当于while(1)语句
D、break语句可用于程序的任何地方,以终止程序的执行
(  A  )
12、下面程序的运行结果是
#include<stdio.h>
main()
{
static char a[]="languagef" ,b[]="programe";
char *p1,*p2;
int k;
p1=a;
p2=b;
for(k=0;k<=7;k++) if(*(p1+k)==*(p2+k))
printf("%c",*(p1+k));
}
A、gae
B、ga
C、LanSuage
D、有语法错
(  A  )
13、执行下列程序段后输出的结果是________
{
int x,y,z=1;
for(x=1,y=-1;x<y;x++,y--) z++;
printf("%d\n",z);
}
A、1
B、2
C、5
D、6
(  D  )
14、以下程序运行后的输出结果是
main( )
{
char s[]="ABCD",*p;
for(p=s+1;p<s+4;p++)printf("%s\n",p);
}
A、ABCD
BCD
CD
D
B、A
B
C
D
C、B
C
D
D、BCD
CD
D
(  D  )
15、下面程序的输出结果是_______。
main( )
{
extern int a;
a+=3;
f( );
printf("%d\n",a);
}
int a=2;
void f( )
{
printf("%d&",a*a);
a+=a;
}
A、2510
B、25&25
C、10&25
D、25&10
(  C  )
16、以下for语句构成的循环执行了______次。
#include <stdio.h>
#define N 2
#define M N+1
#define NUM (M+1)*M/2
main()
{
int i,n=0;
for(i=1;i<=NUM;i++)
{
N++;
printf("%d",n);
}
printf("\n");
}
A、5
B、6
C、8
D、9
(  C  )
17、enum a
{
sum=9,mon=-1,tue
}
;
定义了________。
A、枚举变量
B、3个标识符
C、枚举数据类型
D、整数9和-1
(  D  )
18、c语言中,switch后的括号内表达式的值可以是________。
A、只能为整型
B、只能为整型,字符型,枚举型
C、只能为整型和字符型
D、任何类型
(  D  )
19、若有说明 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  )
20、以下叙述中错误的是________。
A、C语句必须以分号结束
B、复合语句在语法上被看作一条语句
C、空语句出现在任何位置都不会影响程序运行
D、赋值表达式末尾加分号就构成赋值语句

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

1、在循环中,continue语句与break语句的区别是:continue语句是语句的区别是:continue语句是 ________ ,break 是 ________ 。
2、设int a; float f; double i; 则表达式10+’a’+i*f值的数据类型是________ 。
3、c语言约定用____________作为字符串的结束标志。
4、静态存储的变量是在( )时分配存储单元并赋初值,在程序整个运行期间都不被释放。
5、设int a=5,b=6;
则表达式(++a==b--)?++a:--b的值是________。
6、int x=6, y=7;
printf("%d,",x++);
printf("%d\n",++y);
程序的输出结果是________。
7、将arr传参到子函数,接受处()内函数定义该怎么写?
8、在c 语言中(以16 位pc 机为例),一个char 型数据在内存中所占的字节数为________;
一个int 型数据在内存中所占的字节数为________。
9、float f=3.1415927;
printf("%f,%5.4f,%3.3f",f,f,f);
则程序的输出结果是________。
10、以下的程序是求矩阵a,b的和,结果存入矩阵c中,并按矩阵形式输出。
#include<stdio.h>
void main()
{
int a[3][4]={{3,-2,7,5},{1,0,4,-3},{6,8,0,2}};
int b[3][4]={{-2,0,1,4} ,{5,-1,7,6},{6,8,0,2}};
int i,j,c[3][4];
for (i=0;i<3;i++)
for (j=0;j<4;j++) c[i][j]= _________;
for (i=0;i<3;i++)
{
for (j=0;j<4;j++) printf("%3d",c[i][j]);
________________;
}
}

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

1、编写程序:求数列1,3,3,3,5,5,5,5,5,7,7,7,7,7,7,7的第40项。
2、建立一个链表每个结点包括学号、姓名、性别、年龄、地址。输入一个学号打印该学号的学生的所有信息。如无此学号,则输出“没有找到",使用结构体实现
3、输入一行字符,将所有的小写字母转换成大写字母,