沈阳音乐学院2022年C语言程序设计专升本

本试卷为沈阳音乐学院2022年C语言程序设计专升本,题目包括:单项选择题,填空题,编程题。

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

C语言程序设计专升本

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

(  A  )
1、与 y=(x>0?1:x<0?-1:0); 的功能相同的if语句是________。
A、if (x>0) y=1;
else if(x<0)y=-1;
else y=0;
B、if(x)
if(x>0)y=1;
else if(x<0)y=-1;
else y=0;
C、y=-1
if(x)
if(x>0)y=1;
else if(x==0)y=0;
else y=-1;
D、y=0;
if(x>=0)
if(x>0)y=1;
else y=-1;
(  D  )
2、有以下程序:
main()
{
int a=1,b=0;
if(--a) b++;
else if(a=0)b+=2;
else b+=3: printf("%d\n",b);
}
程序运行后的输出结果是________。
A、0
B、1
C、2
D、3
(  D  )
3、在c语言中,以 作为字符串结束标志
A、’\n’
B、’ ’
C、’0’
D、’\0’
(  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"} ;
(  C  )
5、若函数调用时用数组名作为函数参数,以下叙述中,不正确的是 __________.
A、实参与其对应的形参共占用同一段存储空间
B、实参将其地址传递给形参,结果等同于实现了参数 之间的双向值传递
C、实参与其对应的形参分别占用不同的存储空间
D、在调用函数中必须说明数组的大小,但在被调函数中可以使用不定尺寸数组
(  C  )
6、下列可作为c语言赋值语句的是______。
A、x=3,y=5;
B、a=b=6;
C、i--;
D、y=int(x)
(  B  )
7、若有定义:int a[4][10]; 则以下选项中对数组元素a[i][j]引用错误的是______。 (0<=i<4,0<=j<10)
A、*(&a[0][0]+10*i+j)
B、*(a+i)+j
C、*(*(a+i)+j)
D、*(a[i]+
(  D  )
8、若有下面的说明和定义,则sizeof(struct aa)的值是________。
struct aa {
int rl;
double r2;
float r3;
union uu {
char u1[5];
long u2[2];
} ua;
} mya;
A、30
B、29
C、24
D、22
(  A  )
9、以下结构体类型说明和变量定义中正确的是________。
A、typedef struct
int n;char c;REC;
REC t1,t2;
B、struet REC;
int n;char c;;
REC t1,t2;
C、typedef struct REC;
int n=0;char c='A';t1,t2;
REC t1,t2;
D、struct
int n;char c;REC;
(  D  )
10、下列对整型常量定义的解释中正确的是________。
A、034代表八进制的数1C
B、034代表十进制的数34
C、034代表十六进制的数28
D、34L代表值为34的64位长整数
(  A  )
11、下列对字符数组进行初始化的语句正确的是________。
A、char a []="Hello";
B、char a[][]={'H','e','1','1','o');
C、char a[5]="Hello";
D、char a[2][5]={"Hello", "World"};p
(  B  )
12、请阅读下面的程序,选择正确的输出结果。( )
void main()
{
printf("%d",null);
}
A、0
B、变量无定义
C、-1
D、1
(  B  )
13、当全局变量与局部变量重名时,那么在调用时( )
A、局部变量会被屏蔽
B、全局变量会被屏蔽
C、都不会调用,系统会报错
D、会调用两次,先调用局部变量,再调用全局变量
(  D  )
14、c语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是________。
A、地址传递
B、由用户指定传递方式
C、双向值传递
D、单向值传递:实参的值传给形参
(  A  )
15、以下选项中哪些描述是不正确的?
A、循环语句必须要有终止条件否则不能编译
B、break关键字用于跳出当前循环
C、continue用于终止本次循环,执行下一次循环
D、switch条件语句中可以使用break
(  A  )
16、用在switch语句的关键字没有哪个?
A、continue
B、break
C、default
D、if
(  B  )
17、c 语言中局部变量的缺省存储类别是________。
A、static
B、auto
C、register
D、extern
(  B  )
18、下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环,请选择填空。
#include <stdio.h>
main()
{
int a, b, t;
scanf("%d%d", &a, &b);
while (_________)
{
if (a > b)
{
t = a;
a = b;
b = t;
}
printf("%d,%d\n", a, b);
scanf("%d%d", &a, &b);
}
}
A、!a=b
B、a!=b
C、a==b
D、a=b
(  A  )
19、一个变量的指针就是________。
A、变量的地址
B、变量的值
C、变量的名称
D、变量的类型
(  C  )
20、C语言源程序文件经过编译程序编译连接之后生成一个后缀为( )的可执行文件
A、c
B、obj
C、exe
D、bas

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

1、c语言三个循环语句分别while语句、________语句和________语句。
2、下面程序段的运行结果是________.
int i=1,s=3;
do
{
s+=i++;
if(s%7==0)continue;
else ++i;
}
while(s<15);
printf("%d",i);
3、在c语言中,假使x为字符变量,如果我们采用printf("格式控制",x)格式输出x,那么"格式控制"具体表示为"( )"。
4、若int a=5,b=4,c=2; 表达式a>b!=c 的值是________。
5、以下程序的输出结果是 ________。
#include<stdio.h>
main()
{
int a[5]={2,4,6,8,10}, *p;
p=a;
p++;
printf("%d",*p);
}
6、C语言替换字符的函数是什么?
7、以下的程序是求矩阵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]);
________________;
}
}
8、定义一个指针数组p,它有4个元素,每个指针指向一个整型数据,定义语句为______。
9、构成数组的各个元素必须具有相同的______。
10、若x、y、z均为int型变量,则描述“x或y中有一个小于z”的表达式是______

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

1、编写程序:将字符数组a中下标值为奇数的元素从小到大排列,其它元素不变
例如:当a数组中的字符串为:"clanguage"时,程序的输出结果为:cgalgnaue()
2、编写程序:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件"stud"中。功能如下:
请输入5个同学的信息:学生号,姓名,3门成绩:
1 a 60 70 80
2 b 60 80 90
3 c 59 39 89
4 e 56 88 98
5 d 43 88 78
打开 stud文件,内容如下
1 a 60 70 80 70
2 b 60 80 90 76
3 c 59 39 89 62
4 e 56 88 98 80
5 d 43 88 78 69
3、一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。