中国戏曲学院往年C语言程序设计专升本

本试卷为中国戏曲学院往年C语言程序设计专升本,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。

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

C语言程序设计专升本

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

(  B  )
1、以下程序的输出结果是________。
main()
{
char ch[3][4]= { "123","456"."78" }, *p[3];
int i;
for(i==-0; i<3; i++) p[i]=ch[i];
for(i=0; i<3; i++) printf("%s", p[i]);
}
A、123456780
B、123 456 780
C、12345678
D、147
(  D  )
2、设有以下语句: int a=1,b=2,c;c=a^(b<<2);执行后,c的值为________。
A、6
B、7
C、8
D、9
(  D  )
3、若有定义:int a[10],则对数组a元素的正确引用是________。
A、a[10]
B、a[3.5]
C、a(5)
D、a[0]
(  C  )
4、若有说明和语句 int a=5; a++; 此处表达式a++的值是________。
A、7
B、6
C、5
D、4
(  D  )
5、以下函数 func() 的功能是:使具有 n 个元素的一维数组 b 的每个元素的值都增加 2 ,划线处应填入 _____.
func(int b[ ],int n)
{
int ;
for(i=0;i<n;i++) __________;
}
A、b[i++]
B、b[i]++
C、b[i+=2]
D、b[i]+=2
(  B  )
6、设宏定义#define PI 3.1415926,用宏名PI替换的是________。
A、算术表达式
B、字符串
C、单精度实型数
D、双精度实型数
(  C  )
7、下面说法正确的是________。
A、一个C程序可以有多个主函数
B、一个C语言的函数中只允许有一对花括号
C、C程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内
D、在对C程序进行编译时,可以发现注释行中的拼写错误
(  C  )
8、若定义下列结构体,结构体变量p的出生年份赋值正确的语句是________。
struct st
{
int x;
int y;
int z;
}
struct worker
{
char name[20];
char sex;
struct st birth;
} p;
A、x=1987
B、birth.x=1987;
C、p.birth.x=1987;
D、x=1987;
(  B  )
9、以下叙述中不正确的是________。
A、在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B、在C的函数中,最好使用全局变量
C、在C中,形式参数只是局限于所在函数
D、在C中,函数名的存储类别为外部
(  B  )
10、现代计算机中采用二进制数制是因为二进制数的优点是______。
A、代码表示简短,易读
B、物理上容易实现且简单可靠;运算规则简单;适合逻辑运算
C、容易阅读,不易出错
D、只有0,1两个符号,容易书写
(  C  )
11、以下关于结构化程序设计的叙述中正确的是________。
A、一个结构化程序必须同时由顺序、分支、循环三种结构组成
B、结构化程序使用goto语句会很便捷
C、在C语言中,程序的模块化是利用函数实现的
D、由三种基本结构构成的程序只能解决小规模的问题
(  D  )
12、设char s[10]= 〞abcde〞,t[ ]= 〞12345〞; 则s和t在内存中分配的字节数分别是________。
A、6和5
B、6和6
C、10和5
D、10和6
(  C  )
13、算法的每一步都是可执行的,都是可以实现的,指的是算法的( )特点
A、确定性
B、有穷性
C、可行性
D、输出
(  D  )
14、以下叙述中正确的是________。
A、逻辑"或”(即运算符||)的运算级别比算术运算要高
B、C 语言的关系表达式:0<x<10 完全等价于:(0<x)&&(x<10)
C、逻辑"非”(即运算符!)的运算级别是最低的
D、由&&构成的逻辑表达式与由||构成的逻辑表达式都有“短路”现象
(  C  )
15、enum a
{
sum=9,mon=-1,tue
}
;
定义了________。
A、枚举变量
B、3个标识符
C、枚举数据类型
D、整数9和-1
(  C  )
16、以下描述中正确的是________。
A、由于 do-while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B、do-while 循环由do开始,用while结束,在 while(表达式)后面不能写分号
C、在 do-while 循环体中,一定要有能使 while 后面表达式的值变为零("假")的操作
D、do-while 循环中,根据情况可以省略 while
(  C  )
17、有定义:char **p1,*p2;
则下列表达式中正确合理的是________。
A、p1/=5
B、p1*=p2
C、p1=&p2
D、p1+=5
(  A  )
18、以下程序的输出结果为________。
#include  <stdio.h>
int main( )
{
int i=1,j=1;
printf("%d  %d\n",i,j++);
}
A、1 1
B、1 2
C、2 1
D、2 2
(  C  )
19、若使用一位数组名作为函数实参, 则以下正确的说法是________。
A、必须在主调函数中说明此数组的大小
B、实参数组类型与形参数组类型可以不匹配
C、在被调函数中,不需要考虑形参数组的大小
D、实参数组名与形参数组名必须一致
(  D  )
20、以下程序段的输出结果为()。
char c[]="abc";
int i=0;
do ;while(c[i++]!='\0');printf("%d",i-1);
A、abc
B、ab
C、2
D、3

二、判断题 (共10题,每题2分,共计20分)

(   T  )
1、在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。 
(   T  )
2、do…while循环语句中的循环体至少会执行一次。 
(   T  )
3、对于如下的switch语句(使用break)的一般形式,其执行流程是:首先求解表达式,如果表达式的值与某个常量表达式的值相等,则执行该常量表达式后的相应语句段;
如果表达式的值与任何一个常量表达式的值都不相等,则执行 default 后的语句段,最后执行break语句,跳出switch语句。switch (表达式)
{
case 常量表达式1: 语句段1;
break;
case 常量表达式2: 语句段2;
break;
… case 常量表达式n: 语句段n;
break;
default: 语句段n+1;
break;
} 
(   T  )
4、编译后的函数其代码存储在连成一片的内存单元中,这些代码的第一个代码所在的内存地址,称为函数的入口地址,而函数名就代表了函数的入口地址。 
(   F  )
5、c语言程序只能有一个文件。 
(   T  )
6、在标准c中,语句是用来完成一定的操作的,故声明部份不是语句。 
(   T  )
7、字符串"this" 大于字符串"that" 
(   T  )
8、在定义函数时,若函数类型为" void",则表示该函数 没有返回值 ; 若函数参数为" void",则表示该函数 没有参数 。( ) 
(   T  )
9、在一个函数内部调用另一个函数的调用方式称为嵌套调用 
(   F  )
10、int (*p)[4]它表示p是一个指针数组,它包含4个指针变量元素 

三、填空题 (共5题,每题4分,共计20分)

1、字符读写函数____________是用于从磁盘文件中读出一个字符。
2、全局变量又称外部变量,是在函数______定义的变量。
3、程序的结果是:
#include<stdio.h>
void main()
{
int i,j,x=0;
for(i=0;i<2;i++)
{
x++;
for(j=0;j<=3;j++)
{
if(j%2) continue;
x++;
}
x++;
}
printf("x=%d",x);
}
4、c语言中字符()以存在计算机中,整数以()储存在计算机中
5、在C语言中,以______作为字符串结束标志。

四、程序分析题 (共4题,每题5分,共计20分)

1、已知字母a的ascii码为65。以下程序运行后的输出结果是 ________ 。
main()
{
char a, b;
a='a'+'5'-'3';
b=a+'6'-'2' ;
printf("%d %c\n", a, b);
}
2、以下程序运行后的输出结果是 ________ 。
char *ss(char *s)
{
char *p, t;
p=s+1;
t=*s;
while(*p)
{
*(p-1) = *p;
p++;
}
*(p-1)=t;
return s;
}
main()
{
char *p, str[10]="abcdefgh";
p = ss(str) ;
printf("%s\n",p);
}
3、下列程序段的运行结果是________。
main( )
{
int a=5,b=6,c;
int max(int,int);
c=max(a,b);
printf("%d\n",c);
}
int max( int x , int y )
{
int z;
if(x>y) z=x;
else z=y;
return z ;
}
4、下列给定程序中,函数ptoc()的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本方法是:先对字符串中的头两个元素进行排序,然后把第3个字符插入前两个字符中,插入后前3个字符依然有序;
再把第4个字符插入前三个字符中,待排序的字符串已 在主函数中赋予。 请添加合适的语句____________,使它能得出正确的结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序:
#define M 80
void proc(char*arr)
{
int i,j,n;
char ch;
n=strlen(arr);
for(i=1;i<n;i++)
{
ch=arr[i];
j=i-1;
while(______________)
{
arr[j+1]=arr[j];
j--;
}
arr[j+1]=ch;
}
}
void main()
{
char a[M]="QWERTYUIOPASDFGHJKLMNBVCXZ";
printf("The original string:%s\n",a);
proc(a);
printf("The string after sortin9: %s\n\n",a);
}

五、编程题 (共3题,每题0分,共计50分)

1、输入某班30位学生的姓名及数学、英语成绩,计算每位学生的平均分然后输出平均分最高的学生的姓名及其数学和英语成绩,使用结构体实现.
2、打印楼梯,同时在楼梯上方打印两个笑脸。
3、编写程序,读一个在字母C和X之间的字符,打印出该字母在中间的相邻五个字母。如输入F,则输出DEFGH。