盐城师范学院C语言专升本

本试卷为盐城师范学院C语言专升本,题目包括:单项选择题,填空题,编程题。

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

C语言专升本

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

(  D  )
1、有以下程序
void fun(int*a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/
{
int t,i,j;
for(i=0;i<n一1;j++) for(j=i+1;j<n;j++) if(a[i]
}
main()
{
int c[10]={1,2,3,4,5.6,7,8,9,0 },i;
fun(c+4.6): for(i=0;i<10;i++)printf("%d,",c[i]);
printf("n"):
}
}
程序运行的结果是________。
A、1,2,3,4,5,6,7,8,9,0,
B、0,9,8,7,6,5,1,2,3,4,
C、0,9.8,7.6,5,4,3,2,1.
D、1,2,3,4,9,8,7,6,5,0,
(  C  )
2、以下四个程序中不能对两个整型值进行交换的是________。
A、void swap(int p,int q)
{
int *t,a;
t=&a;*t=*P;*p=*q;*q=*t;
}
main()
{
int a=10,b=20;
swap(&a,&b);
printf(”%d %d\n”,a,b);
)
B、void swap(int *p,int *q)
{
int t;
t=*p;*p=*q;*q=t;
}
main()
{
int a =10,b = 20;
swap(&a,&b);
printf(”%d %d\n”,a,b);
)
C、void swap(int *p,int *q)
{
int t;
t=*p;*p=*q;*q=t;
}
main()
{
int*a,*b;
*a=10,*b=20;
swap(a,b);
printf(”%d%d\n”,*a,*b);
)
D、void swap(int *p,int *q)
{
int t;
t=*p;*p=*q;*q=t;
}
main()
{
int a=10, b=20,*x=&a,*y=&b;
swap(x,y);
print(”%d %d\n”, a,b);
}
(  B  )
3、以下数组定义中错误的是________。
A、int x[][3]={0};
B、int x[2][3]={{l,2},{3,4},{5,6}};
C、int x[][3]={{l,2,3},{4,5,6}};
D、int x[2][3]={l,2,3,4,5,6};
(  B  )
4、下面结构体的定义语句中,错误的是________。
A、struct ord {
int x;int y;int z;};struct ord a;
B、struct ord {
int x;int y;int z;} struct ord a;
C、struct ord {
int x;int y;int z;} n;
D、struct {
int x;int y;int z;} a;
(  D  )
5、c 语言规定,函数返回值的类型是由 。
A、return 语句中的表达式类型所决定
B、调用该函数时的主调函数类型所决定
C、调用该函数时系统临时决定
D、在定义该函数时所指定的函数类型决定
(  C  )
6、下列初始化语句中,正确且与语句 char c[ ]="string"; 等价的是 __________.
A、char c[ ]={'s','t','r','i','n','g'};
B、char c[ ]='string';
C、char c[7]={'s','t','r','i','n','g','\0'};
D、char c[7]={'string'};
(  A  )
7、C源程序中的命令 #include与#define是在______阶段被处理的。
A、预处理
B、编译
C、连接
D、执行
(  C  )
8、关于数组的叙述中,下列说法不正确的是________。
A、数组是最简单的复合数据类型,是有限元素的有序集合
B、数组的元素可以是值(基本数据类型)、对象或其他数组
C、定义数组时,必须分配内存
D、一个数组中的元素都必须是相同的类型
(  B  )
9、下列关于c语言用户标识符的叙述中正确的是________。
A、用户标识符中可以出现下划线和中划线(减号)
B、用户标识符中不可以出现中划线,但可以出现下划线
C、用户标识符中可以出现下划线,但不可以放在用户标识符的开头
D、用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头
(  A  )
10、c语言中用于定义类的关键字是________。
A、class
B、struct
C、default
D、sizeof
(  B  )
11、以下叙述中正确的是________。
A、在函数中必须要有return语句
B、在函数中可以有多个return语句,但只执行其中的一个
C、return语句中必须要有一个表达式
D、函数值并不总是通过return语句传回调用处
(  C  )
12、在标准ascⅱ编码表中,数字码、小写英文字母和大写英文字母的前后次序是________。
A、数字、小写英文字母、大写英文亨母
B、小写英文字母、大写英文字母、数字
C、数字、大写英文字母、小写英文字母
D、大写英文字母、小写英文字母、数字
(  A  )
13、下列程序的运行结果是________
#include<stdio.h>
main()
{
int x=5,a=1,b=2,c=5,d=0;
if(a<b) if(b!=3) if(!c) x=1;
else if(d) x=l;
else x=-1;
printf("%d",x);
}
A、-1
B、0
C、1
D、不确定的值
(  B  )
14、以下程序的输出结果是
fun(int x, int y) return(x+y);
main()
{
int a=1, b=2, c=3, sum;
sum=fun((a++, b++, a+b), c++);
printf("%d", sum);
}
A、9
B、8
C、7
D、6
(  A  )
15、有以下程序:
#include<stdio.h> union pw
{
int i;
char ch[2];
}
a;
main()
{
a.ch[0]=13;
a.ch[1]=0;
printf("%d\n",a.i);
}
程序的输出结果是________。
A、13
B、14
C、208
D、209
(  B  )
16、int a=10; 下列哪个选项的值不是20?
A、a<<1
B、a>>1
C、a*2
D、a+10
(  C  )
17、下面说法正确的是________。
A、文件指针变量的值是文件当前正在处理的字节地址
B、文件指针变量的值是文件中包含的字符个数
C、文件指针的类型是一种指针类型
D、文件指针的类型是结构体类型
(  A  )
18、下面程序的运行结果是________。
main()
{
int i, j, a = 0;
for (i = 0; i < 2; i++)
{
for (j = 0; j < 4; j++)
{
if (j % 2) break;
a++;
}
a++;
}
printf("%d\n", a);
}
A、4
B、5
C、6
D、7
(  A  )
19、c 语言中逻辑表达式的值为________。
A、0 或1
B、非零值或零值
C、true 或false
D、'true'或'false'
(  C  )
20、判断两个字符串是否相等,正确的表达方式是
A、s1==s2
B、s1=s2
C、strcmp(s1,s2)==0
D、strcmp(s1,s2)=0

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

1、以下程序的功能是输出如下形式的方阵: 13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4 请填空。
main()
{
int i,j,x;
for(j=4; j ________ ; j--)
{
for(i=1; i<=4; i++)
{
x=(j-1)*4 + ________ ;
printf("%4d",x);
}
printf("\n");
}
}
2、c语言约定用____________作为字符串的结束标志。
3、下面程序段的运行结果是________.
int i=1,s=3;
do
{
s+=i++;
if(s%7==0)continue;
else ++i;
}
while(s<15);
printf("%d",i);
4、在c语言中,在调用一个函数的过程中又出现__________或间接地调用该函数本身,这一现象称为函数的递归调用。
5、若有以下定义语句float x[3][3]={{1.0,2.0,3.0},{4.0,5.0,6.0}};,则表达式"x[1][1]*x[2][2]"的值是【1】。
6、int a = 0; a+=(a=8); 求a的最后结果
7、已知"float a=3.5;int b=12;",则算术表达式"(int)(a+b/5)"的值是________。
8、"空"指针值用______表示
9、程序运行结果是________。
void swap(int a[2])
{
int t;
t=a[0];
a[0]=a[1];
a[1]=t;
}
void main()
{
int x[2]={5,8};
swap(x);
printf("x[0]=%d,x[1]=%d\n",x[0],x[1]);
}
10、下列程序段的运行结果是________。
#define MIN(x , y) x<y? x : y
main()
{
int a , b , min;
A=10, b=11;
Min=MIN(a,b);
printf("min=%d\n" , min);
}

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

1、编写程序: 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
2、编写程序:字符串排序。如下:
请输入3个字符串,每个字符串以回车结束!:
b
a
t
排序后的结果为:
a
b
t
3、编写input()和output()函数,输入输出5个学生记录,每个记录包括num、name、score[3],使用结构体实现。