您当前的位置:首页 > 计算机 > 编程开发 > C语言

哈尔滨工业大学C语言期末试卷(2007秋季人文学院笔试A卷)

时间:02-20来源:作者:点击数:

一、填空题(共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("**0**");
break;
           case  1: printf("**1**");
break;
      }
      case  2: printf("**2**");
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<stdio.h>
 
   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("y = %d\n", y);
     }
   }

运行结果是:

2.

#include<stdio.h>
main ( )
{
      char a[] = "programming" , b[] = "language" ;
      char  *p1, *p2 ;
      int  i;
      p1 = a;
p2 = b;
      for (i=0; i<7; i++)
      {
         if (*(p1+i) == *(p2+i))   
           printf("%c" ,*(p1+i)) ;
      }
      printf("\n");
}

运行结果是: 

3.

#include <stdio.h>
 
main()
{
int a=10;
  {
    int a=15;
    printf(“a.1=%d,”,a);
  }
printf(“a.2=%d\n”,a);
}

运行结果是:

4.

#include <stdio.h>
main()
{
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 <stdio.h>
main()
{
   int  i, n;
 
   for (i=1; i<=5; i++)
   {
      printf("Please enter n:");
      scanf("%d", &n);
      if (n <= 0)  _____________;
      printf("n = %d\n", n);
   }
   printf("Program is over!\n");
}

2. 韩信点兵。韩信有一队兵,他想知道有多少人,便让士兵排队报数:按从1至5报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;按从1至7报数,最末一个士兵报的数为4;最后再按从1至11报数,最末一个士兵报的数为10。下面程序的主要功能是计算韩信至少有多少兵。

#include <stdio.h>
main()
{
   int  x = 1;     
   int  find = 0;              
 
   for (x=1; ________; x++)
   {
      if (x%5==1 && x%6==5 && x%7==4 && x%11==10)
      {
        printf(" x = %d\n", x);
        ____________;   
      }    
   } 
}

3.计算1+1/2+1/4+…+1/50的值,并显示出来。

main()
{
int i=2;
   float sum=1.0;
   while(i<=      )
        { sum+=1/     ;
          i+=2;
        }
       printf(“sum=%f\n”,sum);
     }

4.Fibonacci数列中的头两个数是1和1,从第三个数开始,每个数等于前两个数之和。下述程序计算此数列的前20个数,且每行输出5个数,请填空。

#include <stdio.h>
 main()
{
int f,f1=1,f2=1;
   int i;
  printf(“%6d,%6d”,f1,f2);
  for (i=3;i<=20;i++)
       {
f=           ;
          printf(“%6d”,f);
          if(        )
printf(“\n”);
          f1=f2;
                 ;
      }
    }

五、编程(33分,前3题各8分,第4小题9分)

1.编写函数实现两个整型变量值的交换。

2. 从键盘任意输入10个不相同的整数,然后,输入要查找的数x,如果在这10个数中找到x,则打印“Found!”;如果找不到,则打印“Not found!”。

3.从键盘任意输入某班20个学生的成绩,输出最高分并统计出不及格人数。

4.利用函数求出两个正整数的最大公约数。

 

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门