上海工程技术大学C语言程序设计期末模拟

本试卷为上海工程技术大学C语言程序设计期末模拟,题目包括:单项选择题,填空题,编程题。

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

C语言程序设计期末模拟

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

(  B  )
1、在下列给出的表达式中,与while(e)中的(e)不等价的表达式是________。
A、(!E==0)
B、(E>0||E<0)
C、(E==0)
D、(E!=0)
(  B  )
2、c语言中,下列不合法的字符串常量是________。
A、”\121”
B、'y='
C、”\n\n”
D、”ABCD\x6d”
(  C  )
3、#define能作简单的替代,用宏来替代计算多项式5*X*x 4-5*x+5的值的函数f,正确的宏定义语句为( )。
A、#define f(x) 5*x*x+5*X+5
B、#define f5*x*x+5*x+5
C、#define f(a) (5*a”a+5*a+5)
D、#define(5*x*x+5+x+5) f(x)
(  C  )
4、设有定义:"double x[10],*p=x; ",以下能给数组x下标为6的元素读人数据的正确语句是________。
A、scanf("%f",&x[6]);
B、scanf("%If",*(x+6));
C、scanf("%if",p+6);
D、scanf("%if",p[6]);
(  C  )
5、c语言规定:main函数的位置________。
A、必须在最开始
B、必须在系统调用的库函数的后面
C、可以任意
D、必须在最后
(  B  )
6、设有如下程序段: int i=0, sum=1;
do
{
sum+=i++;
}
while(i<6);
printf("%d\n", sum);
上述程序段的输出结果是________。
A、11
B、16
C、22
D、15
(  A  )
7、可在c程序中用作用户标识符的一组标识符是________。
A、and
2007
B、Date
y-m-d
C、Hi
Dr. Tom
D、case
Bigl
(  D  )
8、设有如下定义 : char aa[2][20]={ "abcd", "abcd" }; 则以下说法中错误的是 __________.
A、aa 是个二维数组,可以存放 2 个 19 个字符以下的 字符串
B、aa 是个二维数组,每行中分别存放了字符串 "abcd" 和 "ABCD"
C、aa[0] 可以看作是一维数组名
D、aa[0][0] 可以看作是一维数组名
(  C  )
9、下面程序的输出是 __________.
int fun3(int x)
{
static int a=3;
a+=x;
return(a);
}
void main()
{
int k=2,m=1,n;
n=fun3(k);
n=fun3(m);
printf("%d\n",n);
}
A、3
B、4
C、6
D、9
(  C  )
10、下列说法中不正确的是________。
A、switch语句功能可以由if-else语句实现
B、若用于比较的数据类型为double,则不能用switch语句来实现
C、if-else语句的执行效率总是比switch语句高
D、case子句可以有多个语句,并且不需要用大括号””括起来
(  C  )
11、有以下程序段
typedef struct node
{
int data;
struct node * next;
}
* node;
node p;
以下叙述中正确的是________。
A、p是指向struct node结构变量的指针的指针
B、NODEp;语句出错
C、p是指向struct node结构变量的指针
D、p是struct node结构变量
(  D  )
12、一个汉字的机内码在计算机内部需用2个字节存储,每个字节的最高位是________。
A、0和0
B、0和1
C、1和0
D、1和1
(  C  )
13、设a=12,a定义为整型变量。表达式a+=a-=a*=a的值为______。
A、12
B、144
C、0
D、132
(  C  )
14、以下关于结构化程序设计的叙述中正确的是________。
A、一个结构化程序必须同时由顺序、分支、循环三种结构组成
B、结构化程序使用goto语句会很便捷
C、在C语言中,程序的模块化是利用函数实现的
D、由三种基本结构构成的程序只能解决小规模的问题
(  B  )
15、以下选项中,能定义m为合法的结构体变量的是______。
A、typedef struct abc {
double a;char b;} m;
B、struct {
double a;char b;}m;
C、struct ABC {
double a;char b;} ABC m;
D、typedef ABC{
double a;char b; } ABC m;
(  D  )
16、以下对一维数组c 进行正确的定义初始化的语句是________。
A、int c [10] =0;
B、int c [10] ={0}*10;
C、int c [1] ={0,0,0,0,0,0,0};
D、int c [10] ={0};
(  B  )
17、若有以下定义:char s='\092'; 则该语句________。
A、使s的值包含1个字符
B、定义不合法,s的值不确定
C、使s的值包含4个字符
D、使s的值包含3个字符
(  D  )
18、下列程序的输出为________。
main()
{
int y=10;
while(y--);
printf("y=%d\n",y);
}
A、y=0
B、while构成无限循环
C、y=1
D、y=-1
(  C  )
19、enum a
{
sum=9,mon=-1,tue
}
;
定义了________。
A、枚举变量
B、3个标识符
C、枚举数据类型
D、整数9和-1
(  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分)

1、int *p 的含义是 ________ 。
2、以下程序运行后的输出结果是________。
#include<stdio.h>
main() {
int a=200,b=010;
printf("%d%d\n",a,b);
}
3、字符串函数________用于从指定的磁盘文件中读出一个字符串。
4、在c语言中,以________开头的常量代表的是十六进制数。
5、局部变量的作用域是从______的位置起,到函数结束止。
6、下列程序段的运行结果是_____。
char s1[20]="abcdef", s2[5]="abc";
strcpy(s1,s2);
printf("%c", s1[5]);
7、结构化程序设计的3种基本结构是:( )结构、选择结构、循环结构,这三种基本结构构成了复杂的c语言程序。
8、在一个c 源程序中, 注释部分两侧的分界符分别为___和____。
9、下面程序的运行结果是________。
main()
{
int a[2][3]={{1,2,3},{4,5,6}}, int b[3][2],i,j;
printf("array a:\n");
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("array b:\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)printf("%5d",b[i][j]);
printf("\n");
}
}
10、在C语言中,以______作为字符串结束标志。

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

1、编写程序:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
2、编写程序:从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。程序功能如下:
输入你要保存到的文件的名称:
test.txt
现在你可以输入你要保存的一些字符,以#结束:
www.baidu.com
#
3、有以下定义:
struct student{
int num; //学生序号
char name[20]; //学生姓名
int math; //数学成绩
}stu[4];
请从键盘输入4条学生信息存入结构体数组stu,之后在屏幕上依
次输出这些学生信息,并计算出数学平均成绩,结果保留2位小数。
【输入形式】每条记录的3个数据都使用空格分隔
【输出形式】分四行输出学生信息,每行数据均使用1个空格分隔;
最后一行显示数学平均成绩,保留2位小数
【输入样例】
1 aa 45
2 bb 67
3 dd 77
4 qq 88
【输出样例】
1 aa 45
2 bb 67
3 dd 77
4 qq 88
avg = 69.25