哈尔滨工业大学C语言期末试卷(2007
秋季人文学院笔试A卷)
一、填空题(共20分,每空2分)
1.C语言中简单数据类型包括 、 、 。
2.C语言中用_______表示逻辑值“假”,用________表示逻辑值“真”。 3. char *p[10];这条语句的含义是:__ ___ _ _ 。 4.设有语句“int a=3;”,执行语句“printf(”%d”,-a++ );”后,输出结果 是 , 变量a的值是 。
5. 如果在程序中定义静态变量和全局变量时,未明确指明其初始值,那么它们可 以在程序编译阶段自动被初始化为 。
6. 在C语言中,可以用 定义一种新的数据类型。 二、选择题:(共16分,每题2分)
1.在C语言中,函数的隐含存储类别是( )。 A) auto B) static C) extern D) 无存储类别
2.若用数组名作为函数调用时的实参,则实际上传递给形参的是()。 A.数组的首地址 B. 数组的第一个元素值 C.数组中全部元素的值 D. 数组元素的个数 3.已知 struct sk {
int a; float b; }data,*p;
若有p=&data,则对data中的成员a正确引用是( ) A. (*p).data B.(*p).a C.p->data.a D. p.data.a
4.在while(x)语句中的x与下面条件表达式等价的是: 。 A. x!=0 B. x==1 C. x!=1 D. x==0
5.二维数组a有m行n列,则在a[i][j]之前的元素个数为( )。 A. j*n+i B. i*n+j C. i*n+j-1 D. i*n+j+1
6.设有声明语句:int a=1,b=0;则执行以下语句后输出为: 。 switch (a) {
case 1: switch (b) {
case 0: printf(\break;
case 1: printf(\break;
}
case 2: printf(\break; }
A **0** B **0****2**
C **0****1****2** D 有语法错误 7.以下程序运行结果是( ) main()
{char s[]=”Address”;
printf(”%d\\n”, strlen(s)); }
A) 7 B) 8 C) 9 D) 10
8.以下不正确的描述是()
A) 在函数外部定义的变量是全局变量 B) 在函数内部定义的变量是局部变量 C) 函数的形参是局部变量
D) 局部变量不能与全局变量同名
三、写出下列程序的运行结果。(15分,每题3分) 1.#include
int Fun(int x) {
static int y = 0; y += x; return y; }
main() {
int x = 10, y = 0, k;
for(k=0; k<2; k++) {
y = Fun(x);
printf(\} }
运行结果是:
2.#include
char a[] = \
char *p1, *p2 ; int i; p1 = a; p2 = b;
for (i=0; i<7; i++) {
if (*(p1+i) == *(p2+i)) printf(\}
printf(\}
运行结果是:
3. #include
main() {
int a=10; {
int a=15;
printf(“a.1=%d,”,a); }
printf(“a.2=%d\\n”,a); }
运行结果是:
4.#include
int i=0; while(1) {
printf(“*”); i++;
if(i<3) break; }
printf(“\\n”); }
运行结果是:
5.int runc(int a,int b) {return(a+b);}
main() {
int x=2,y=5,z=8,r; r=runc(runc(x,y),z); printf(“%d\\n”,r); }
执行结果是:
四、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。(16分,每空2分)
1. 下面这个程序功能:读入5个整数,当程序读入的数据为正整数时,则显示该数,否则,不显示。读入5个数据后,程序结束运行。 #include
int i, n;
for (i=1; i<=5; i++) {
printf(\scanf(\
if (n <= 0) _____________; printf(\}
printf(\}
2. 韩信点兵。韩信有一队兵,他想知道有多少人,便让士兵排队报数:按从1至5报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;按从1至7报数,最末一个士兵报的数为4;最后再按从1至11报数,最末一个士兵报的数为10。下面程序的主要功能是计算韩信至少有多少兵。 #include
int x = 1; int find = 0;
for (x=1; ________; x++) {
if (x%5==1 && x%6==5 && x%7==4 && x==10) {
printf(\____________; }

