山东中医药大学C语言程序设计期末考题

本试卷为山东中医药大学C语言程序设计期末考题,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。

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

C语言程序设计期末考题

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

(  D  )
1、若变量已正确定义为int型,要给a、b、c输人数据,正确的输入语句是________。
A、read(a,b,c);
B、scanf("%d%d%d",a, b, c);
C、scanf("%D%D%D",&a,%b,%c);
D、scanf("%d%d%d",&a,&b,&c);
(  D  )
2、fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。在下划线处应填写的是________。
#define N 5
void fun(int x[N])
{
int m;
for(m=N-t;m>=O;m-)scanf("%d",________);
}
A、%&X[++m]
B、&x[m+1]
C、x+(m++)
D、x+m
(  B  )
3、设有定义:long x=-123456l; 则以下能够正确输出变量x值的语句是________。
A、printf(“x=%d\n”,x)
B、printf(“x=%ld\n”,x)
C、printf(“x=l\n”,x)
D、printf(“x=%D\n”,x);
(  C  )
4、下述对c语言字符数组的描述中错误的是________。
A、字符数组可以存放字符串.
B、字符数组中的字符串可以整体输入、输出.
C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值.
D、不可以用关系运算符对字符数组中的字符串进行比较.
(  C  )
5、有如下函数定义;
void func(int a,int & b)
{
a++;
b++;
}
若执行代码段:int x=0,y=1;
func(x,y);
则变量x和y的值分别是________。
A、0和1
B、1和1
C、0和2
D、1和2
(  C  )
6、执行以下程序段后,w的值为________。
int w='a',x=14,y=15; w=((x||y)&&(w<'a'));
A、-1
B、NULL
C、1
D、0
(  C  )
7、下列说法不正确的是________。
A、C语言程序是以函数为基本单位的,整个程序由函数组成
B、C语言程序的一条语句可以写在不同的行上
C、C语言程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写
D、C语言程序的每个语句都以分号结束
(  B  )
8、下列变量定义中,合法的是________。
A、short _a=1-1e-1;
B、double b=1+5e2.5;
C、long do = 0xfdaL;
D、float 2_and=1-e-3;
(  B  )
9、int a[5],*p=a; 对a数组元素地址的正确引用是________。
A、p+5
B、&a[0]
C、&a+1
D、*a+1
(  C  )
10、下列的程序用来输出两个字符串前7个字符中对应相等的字符及其位置号,程序空白处应该填写的是________。
#include<stdio.h>
main()
{
char sl[]="chinese",s2[]="japnese";
int i;
for(i=0;s1[i]!='\0'&&s2[i]!='\0';i++) if(s1[i]=s2[i]&&i<7) ____________________;
}
A、putchar(s2;putchar(
B、puts(s1,
C、printf("%c%d\n",s2,
D、printf("%c",s1);printf("%d\n",
(  B  )
11、设有以下说明语句:
struct stu
{
int a;
float b;
}
suttype;
则下面叙述不正确的是________。
A、struct是结构体类型的关键字
B、struct stu是用户定义的结构体类型
C、suttype是用户定义的结构体类型名
D、a和b都是结构体成员
(  B  )
12、请选出以下程序的输出结果______。
#include <stdio.h>
sub(int x,int y,int *z)
{
*z=y-x;
}
main()
{
int a,b,c;
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf("%d,%d,%d\n",a,b,c);
}
A、5,2,3
B、-5,-12,-7
C、-5,-12,-17
D、5,-2,-7
(  B  )
13、下关于运算符优先顺序的描述中正确的是________。
A、"!" > "&&" > "/" > ">="
B、"!" > "/" > ">=" > "&&"
C、"!" > "/" > "&&" > ">="
D、"/" > "!" > "&&" > ">="
(  B  )
14、若想通过a&b来使a的二进制码中的首尾两位为原来的值,而其余为0,则b应为:(设变量a,b均占一个字节)
A、01111110
B、10000001
C、视a值而定
D、无法办到
(  B  )
15、若有程序段:x=99; while(x-2) x--; 则循环结束时,x=________。
A、99
B、2
C、1
D、0
(  A  )
16、以下叙述中正确的是________。
A、使用 typedef 定义新类型名后,新类型名与原类型名实际上是等价的
B、结构体类型中的各个成分均不能是数组或指针
C、结构体类型的变量,不能在声明结构体类型组成时一起定义
D、元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义
(  B  )
17、在 C语言程序中()。
A、函数的定义可以嵌套,但函数的调用不可以嵌套
B、函数的定义不可以嵌套,但函数的调用可以嵌套
C、函数的定义和函数调用均可以嵌套
D、函数的定义和函数调用不可以嵌套
(  C  )
18、C语言执行程序的开始执行点是()。
A、程序中第一条可以执行语言
B、程序中第一个函数
C、程序中的 main 函数
D、包含文件中的第一个函数
(  B  )
19、以下程序的输出结果是()。
main()
{ char s[]="123",*p;
p=s;
printf("%c%c%c\n",*p++,*p++,*p++);
}
A、123
B、321
C、213
D、312
(  A  )
20、以下语句中,循环次数不为 10 次的语句是()。
A、for(i=1;i<10;i++);
B、i=1;do{i++;}while(i<=10);
C、i=10;while(i>0){--i;}
D、i=1;m:if(i<=10){i++;goto m;}

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

(   T  )
1、在c语言中,字符数组可以存放字符串。( ) 
(   F  )
2、调用strcmp函数比较字符串大小时,通常较长的字符串会较大。 
(   T  )
3、标准格式输入函数 scanf()可以从键盘上接收不同数据类型的数据项。 
(   F  )
4、c语言中sizeof 是函数,而不是运算符。 
(   F  )
5、数组的下标从1开始。 
(   F  )
6、在switch语句中,多个case不可以共用一组执行语句。 
(   F  )
7、for 语句只能用于循环次数已经确定的情况 
(   T  )
8、文件是否打开是可以判断的。 
(   T  )
9、寄存器类变量的作用域和寿命与自动类变量的相同。 
(   T  )
10、double 型变量在内存中占的字节数比 int 型变量在内存中占的字节数多。 

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

1、局部变量的作用域是从______的位置起,到函数结束止。
2、已知char str[]="man",则strlen(str)的值为_____。
3、下列程序段的运行结果是________。
main()
{
int m=1,t=1;
for( ; ; )
{
m=m+t ;
t++;
if(m>9) break ;
}
printf("%d\n",m);
}
4、构成数组的各个元素必须具有相同的______。
5、关系表达式x+y>5的相反表达式为______。

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

1、以下程序运行后的输出结果是 ________ 。
main()
{
int x=0210;
printf("%x\n",x);
}
2、mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。 int mystrlen(char *str)
{
int i;
for(i=0; ________!=‘\0';i++);
return( ________);
}
3、已知"float x=0.5;int y=13;",则算术表达式"x+y/5"的值是________。
4、请阅读下面的程序,当用户从键盘输入hello world时,分析程序是否能编绎通过并正确运行,如果不能,说明原因;
如果能,请写出运行结果。
void main()
{
char str[256];
scanf( );
printf( );
}
hello

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

1、编写程序:从键盘上输入一个数字组成的字符串(字符串长度小于8),将该字符串转换成一个十进制数
例如:从键盘上输入2345,则程序运行的结果应当为:n=2345()
2、编写程序:打印出杨辉三角形(要求打印出10行)。
结构如下所示:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
......
3、输入5位同学的一组信息,包括学号、姓名、数学成绩、计算机成绩,求得每位同学的平均分和总分,然后按照总分从高到低排序。