上海对外经贸大学C语言程序设计期末样卷

本试卷为上海对外经贸大学C语言程序设计期末样卷,题目包括:单项选择题,填空题,编程题。

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

C语言程序设计期末样卷

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

(  D  )
1、执行下面程序段,给x、y赋值时,不能作为数据分隔符的是________。 int x,y; scanf("%d%d",&x,&y);
A、空格
B、Tab键
C、回车
D、逗号
(  A  )
2、若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是________。
A、p=2*(int*)malloc(sizeof(int));
B、p=(int*)malloc(2*sizeof(int));
C、p=(int*)malloc(2*2);
D、p=(int*)calloc(2,sizeof(int));
(  A  )
3、未指定存储类别的变量,其隐含的存储类别为________。
A、auto
B、static
C、extern
D、register
(  B  )
4、c语言的跳转语句中,对于break和continue说法正确的是________。
A、break语句只应用于循环体中
B、continue语句只应用于循环体中
C、break 是无条件跳转语句,continue不是________。
D、break和continue的跳转范围不够明确,容易产生问题
(  B  )
5、下列语句序列执行后,x的值是________。 int a=3,b=4,x=5; if (++ a==b)x=++a*x;
A、35
B、25
C、20
D、5
(  C  )
6、以下对结构体类型变量的定义中,不正确的是________。
A、typedef struct aa {
int n;
float m;
} AA;
AA tdl;
B、#define AA struct aa AA{
int n;
float m;
} tdl;
C、struct {
int n;
float m;
} aa;
struct aa tdl;
D、struct {
int n;
float m,
} tdl;
(  D  )
7、已有定义:int i,a[10],*p; 则合法的赋值语句是________。
A、p=100;
B、p=a[5]
C、p=a[2]+2
D、p=a+2;
(  B  )
8、字符的ascii编码在机器中的表示方法准确地描述应是________。
A、使用8位二进制代码,最右边一位为1
B、使用8位二进制代码,最左边一位为0
C、使用8位二进制代码,最右边一位为0
D、使用8位二进制代码,最左边一位为1
(  C  )
9、下列各进制的整数中,______表示的值最大。
A、十进制数10
B、八进制数10
C、十六进制数10
D、进制数10
(  B  )
10、c语言中的基本数据类型是________。
A、整型、浮点型、逻辑型、无值型和类类型
B、整型、字符型、浮点型、无值型和逻辑型
C、整型、浮点型、字符型、逻辑型和枚举型
D、整型、浮点型、逻辑型、无值型和指针型
(  C  )
11、有定义语句:int*p[4]; 以下选项中与此语句等价的是________。
A、int p[4];
B、int **p;
C、int*(p[4]);
D、int(*p)[4];
(  A  )
12、以下叙述中正确的是______。
A、不能用字符串常量对字符数组名进行整体赋值操作
B、字符串常量"Hello"会被隐含处理成一个无名字符型数组,它有5个元素
C、char str[7]="string!";在语法上是合法的,运行也是安全的
D、char *str;str="Hello";与char str[];str="Hello";效果是一样的
(  C  )
13、运行下面程序时,从键盘输入字母h,则输出结果是
#include<stdio.h>
main()
{
char ch;
ch=getchar();
switch(ch) {
case ’h’: printf("hello!\n");
case ’g’: printf("good morning!\n");
default : printf("bye_bye!\n");
}
}
A、Hello!
B、Hello!
GoodMoring!
C、Hello!
Goodmorning!
Bye_Bye!
D、Hello!
Bye_Bye!
(  D  )
14、若有定义:char*x="abcdefghi"; 以下选项中正确运用了strcpy函数的是______。
A、char y[10];strcpy(y,x[4]);
B、char y[10];strcpy(++y,&x[1]);
C、char y[10],*s;strcpy(s=y+5,x);
D、char y[10],*s;strcpy(s=y+1,x+1);
(  B  )
15、设有以下说明语句:
struct stu
{
int a;
float b;
}
suttype;
则下面叙述不正确的是________。
A、struct是结构体类型的关键字
B、struct stu是用户定义的结构体类型
C、suttype是用户定义的结构体类型名
D、a和b都是结构体成员
(  C  )
16、请读程序片段(字符串内没有空格字符):printf("%d\n",strlen("ats\n012\1\\") );
上面程序片段的输出结果是______。
A、11
B、10
C、9
D、8
(  B  )
17、下列程序段输出结果是________。
a=1;
b=10;
do
{
b-=a;
a++;
}
while(b--<0);
printf(""a,b=%d,%d"",a,b);
A、a,b=7,5
B、a,b=2,8
C、a,b=2,2
D、a,b=8,2
(  C  )
18、下面说法正确的是________。
A、任何包含数学运算的函数都只能使用单一的基本结构
B、每个 C 语言程序 MAIN()必须定义函数,否则编译失败
C、无论什么样的复杂算法,都可以使用三种基本结构来实现
D、只要程序是使用基本结构编写的,就不会出现算法错误
(  C  )
19、以下程序的输出结果是________。
main()
{
float x=3.6;
int i;
i=(int)x;
printf("x=%f,i=%d\n",x,i);
}
A、x=3.600000,i=4
B、x=3,i=3
C、x=3.600000,i=3
D、x=3 i=3.600000
(  A  )
20、执行下面语句后的输出为____
int i= -1;
if (i < =0)printf("****\n");
else printf("%%%%\n");
A、****
B、%%%%
C、%%%%C
D、有语法错,不能执行

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

1、若a和b 均为int 型变量,则以下语句的功能是________。 a+=b; b=a-b; a-=b;
2、表达式 2.8 + 3/4 =________。
3、以下函数sstrcat( )的功能是实现字符串的连接,即将t所指字符串复制到s所指字符串的尾部。例如:s所指字符串为abcd,t所指字符串为efgh,函数调用后s所指字符串为abcdefgh。请填空。
void sstrcat(char *s, char *t)
{
int n;
n= strlen(s);
while (*(s+n)= ________ )
{
s++;
t++;
}
}
4、结构化程序设计的3种基本结构是:顺序结构、_______结构、循环结构,这三种基本结构构成了复杂的c语言程序。
5、在c语言中,以______开头的常量代表的是八进制数。
6、写出下列程序的运行结果。
fun(int a, int b)
{
if(a>b) return (a);
else return (b);
}
main()
{
int x=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);
printf("%d\n",r);
}
7、在c语言中,函数的返回值是由___________语句传递的。
8、下列程序段的运行结果是_____。
void pig( )          
{
float a=3.0;
}
main( )
{
float a=1.0;
pig( );
printf("a=%f",a);
}
9、设y为int型变量,请写出描述“y是奇数”的表达式______。
10、已知函数定义为:int stat(int a,float *p),则此函数的两个参数类型分别是______、 浮点型。

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

1、编写程序:输出 200 ~ 300 之间的所有素数,要求每行输出 8 个素数。
2、有一包含职工编号、年龄和性别的单向链表,分别使用函数完成以下功能
建立链表。
分别统计男女职工的人数。
在链表尾部插入新职工。
删除指定编号的职工。
删除60岁以上的男职工和55岁以上的女职工被删除的结点保存到另一个链表
中。在主函数中设计简单的菜单去调用上述函数。
3、编程判断输入的字符串是否为“回文”。所谓“回文”是指顺读和倒读都一样,如abcba。