广西大学20XX -20 XX学年第1学期
C语言程序设计》期末考试试卷(A120分钟)
年级        院系专业      姓名        学号        座位号     
灌篮高手重制版有全国大赛吗
一. 单项选择题:(每题2分,共40分)
下列各题A)B)C)D)四个选项中只有一个是正确的,请将正确选项填在答题卡相应题目的横线上。答在试卷上不得分。
1.下面程序段执行后,a的值是______
        int a;
        printf("%d \n", (a=3*5, a*4, a+5) );
    A)60      B)20            C)15        D)10
2.下列程序段的输出是______
        int x=023;
        printf("%d \n", --x );
    A)19      B)18          C)23        D)22
3.执行下列语句后,a的值是______
        int a=8;
        a+=a-=a*a;
    A)-240        B)64          C)112        D)-112
4.执行下列语句后,输出的值是______
        int x=6;
        printf("%d,%d,%d\n",x,x++,--x);
    A)5,5,5        B)6,5,5        C)7,6,5      D)5,6,5
5.指出下列程序段所表示的逻辑关系是______
        if(a<b)
        {
          if(c==d)
            x=1;
        }
        else
          x=2;
    A)若a<bc=d,则x=1;若a>=bc!=d,则x=2
    B)若a<bc=d,则x=1;若a>=b,则x=2
    C)若a<bc=d,则x=1;若a<bc!=d,则x=2
    D)若免费婚检a<bc=d,则x=1;若c!=d,则x=2
6.下列程序段的执行结果是______
        int i,x;
        for(i=1,x=1;i<=20;i++)
        {
          if(x>=10) break;
          if(x%2==1)
          {
            x+=5;孙红雷是黑社会吗
            continue;
          }
          x-=3;
        }  printf("%d,%d\n",x,i);
A)6,4        B)7,5      C)10,6    D)14,7
7.下列程序的执行结果是______
        #include "stdio.h"
        #include "string.h"
        main()
        {
        static char s[10]={'C','h','i','n','a'};
        printf("%d\n",strlen(s));
        }
    A)6          B)5        C)11      D)10
8.函数的数据类型是______决定的。
    A)用该函数时临时        B)用函数的实参
    C)return语句的表达式类型  D)函数的形参
9.执行下列程序段后,*(p+5)的值是______
        static char s[]="Hello";
感恩节祝福        char *p;
        p=s;
    A)'o'        B)'\0'      C)'o'的地址  D)不确定的值
10.以下程序的输出结果是______
        #include "stdio.h" 
        main()
        {
        static int a[]={1,2,3,4,5,6},*p;
        p=a; *(p+3)+=2;
        printf("%d,%d\n",*p,*(p+3));
        }
      A)0,5        B)1,5      C)0,6      D)1,6
11.在以下定义中,标识符P______
        int (*p)[3];
      A)定义不合法。
      B)是一个指针数组名,每个元素是一个指向整型变量的指针。
      C)是一个指针,它指向一个具有三个元素的一维数组。
      D)是一个指向整型变量的指针。
12.sizeof(int)______
      A)一个整型表达式            B)一个不合法的表达式
      C)一种函数调用              D)一条语句
13.有宏定义:#define MULT1(a,b) a*b
                #define MULT2(a,b) (a)*(b)
      在后面的程序中有宏引用:y=MULT1(3+2,5+8);
                              z=MULT2(3+2,5+8);
      yz的值是______
      现在流行什么歌A)y=65,z=65 B)y=21,z=65 C)y=65,z=21 D)y=21,z=21
14.设有程序段:
        union MYTYPE { long x; int y[4]; char z[6];}them;
        main(){ printf(“%d\n”,sizeof(them)); }
      则程序的输出结果是______
      A)18    B)6    C)8    D)4
15.以读写方式打开一个已有的文本文件file1,下面fopen函数正确的调用方式
      ______
      A)FILE *fp;              B)FILE *fp;
          fp=fopen("file1","r");    fp=fopen("file1","r+");
C)FILE *fp;              D)FILE *fp;
          fp=fopen("file1","rb");    fp=fopen("file1","rb+");
16. 设有如下定义:
      struct sk {int a; float b;} data,*p;
      p=&data; 则对dataa域的正确引用是 (    ).
    A) (*p).data.a    B) (*p).a  C) p->data.a    D) p.data.a
17.若fun( int x) { printf(“%d\n”,x);}, fun_______
    A)返回值为 void 类型  B)返回值无法确定
    C)返回值为 int 类型    D)没有返回值
18.实参和和形参之间的数据传送是_______
    A)地址传送  B)实参传给形参,再由形参传给实参
    C)值传送    D)由用户指定传送方式
19.以下程序的输出结果是______
        char *s=”ABCD”, *p;
        for( p=s;  *p ;  p++)
            printf("%s\n", p);
      A)ABCD        B)A      C)D      D)ABCD
    BCD    B    C    ABC
    CD    C    B    AB
    D    D    A    A
20.下列程序段的输出是______
int fun( int x)
{
    static int a=3;
    a+=x;
    return a;
}
void main( void )
{
    int k=2, m=1, n;
    n=fun(k);
    n=fun(m);
    printf( “%d\n”, n);
}
      A)3      B)4      C)D)9
得分
陈一榕
二. 填空题:(每空1分,共20分)
1.C语言有  ⑴    ⑵   ⑶    ⑷    ⑸  五种常量。
2.C程序的变量不仅要事先  ⑹  ,而且还必须  ⑺  后才能使用。
3.C语言在给出逻辑运算结果时,以  ⑻  代表“真”,以  ⑼  代表“假”;在判断一个量是否为“真”时,以  ⑽  代表“假”,以  ⑾  代表“真”。
4.C语言规定只有  ⑿  数组和  ⒀  数组才能初始化;这种数组不赋初值,系统会对所有数组元素自动赋以  ⒁  值。
5.对两个指针变量进行关系运算的条件是  ⒂  ,其结果表示  ⒃
6.一个C文件是一个  ⒄    ⒅  ,它把数据看成是  ⒆  ,对文件的存取是以  ⒇  为单位。
得分
三. 程序设计题(每空2分,共40分)
阅读下列程序,在横线上填入适当的内容使程序完整。请将正确答案填在答题卡相应题目的横线上。答在试卷上不得分。
1.下列程序是求Fibonacci数列:1,1,2,3,5,8……的前40个数,要求每行输出4个数。
          main()
          {
          long int f1,f2;
          int i;
          f1=1 ; f2=1;
          for(i=1;i<=;i++)
              {
              printf("%12ld %12ld ",f1,f2);