《 C语言 》课程期中考试试卷 
一. 在A B C D四个选项中,选择一个正确的答案填入括号内
(  )1、用char定义的变量在IBM PC机中能表示的数的范围是:
A) 0 ~ +255          B) 0 ~ +65535   
C) -128 ~ +127      D) 只能存字符,不能存数
(  )2、设有int k=2; 则执行printf(%d,k++);的输出为:
A) 0    B) 1      C) 2      D) 3
( )3、在while(!x)中,!x与______等价。
A) x==0      B) x!=0      C) x==1      D) x!=1
( )4设有声明int value=5;,则执行下列选项的赋值语句后,value的值不等于5的是_____。
A.) value=value - 0令数组全部的值为0;      B) value=value - 0x30;
C) value=value - 49;        D) value=value - \060;
( )5、如int k=7;float x=2.5,y=4.7; 则表达式 x+k%3*(int)(x+y)%2/4 运
算后的值是:
A) 0      B) 2        C) 2.5      D) 2.75
(  ) 6若有int a,b;则语句:printf("%d",(a=2)&&(b=-2);的输出结果是:    A)无输出    B)结果不确定   C)-1        D)1
(  ) 7、设有int a=2; 则执行printf("%d",5>a>1);的输出为:
    A)0        B)1        C)2        D)3
(  ) 8、执行语句c=(a=2,a+1,b=a++);后, a,b,c的值依次为:
A)2,3,4    B)3,3,3    C)4,5,4    D)3,2,2
(  )9以下程序的输出结果是    A)2  0      B)3  1      C)3  2  1      D)2  1  0     main(  )      { int  n=4;        while(n--)printf("%d ",--n);
      }
(  )10给出以下定义:      char x[ ]="abcdef";      char y[ ]={'a','b','c','d','e','f'};    则正确的叙述为    A) 数组x和数组y等价              B) 数组x和数组y的长度相同    C) 数组x的长度大于数组y的长度    D) 数组x的长度小于数组y的长度
(  )11若对一个函数调用在前, 定义在后,C语言将视其返回值为__________类型。
    A) void          B) int        C) float          D) 不合法
(  )12如果用数组名作为函数调用的实参, 传递给形参的是_________
    A) 数组的首地址            B) 数组元素的个数
    C) 数组的第一个元素的值    D) 数组中全部元素的值
二、填空题
1.C语言中的标识符可以由三种字符组成,它们是_    ____    _    _
2. 关键字case和default只能在__    _ 语句中出现。
3. 若有说明int a [][4]={1, 2,3,4,5,6,7,8, 9};,则数组a第一维的大小是____。
4.有声明: int a[3][4]={{1,2},{3},{6,7,8,8}}; 则a[1][2]的初值是____,
a[2][1]的值是______。
三、阅读程序,写出其输出结果
1. 设输入为:3  3↙ (其中表示回车),则下面程序的输出是:___  ___
  main()
  { int k,t,a,n;  long s;
scanf(%d%d,&a,&n);
for(s=t=k=0;k<n;k++)
  { t=t*10+a;
    s+=t;
  }
printf(s=%ld,s);
}
2.若以下程序输入为5,8 ↙,则输出为: ___         
swap(int x, int y)
{ int t;
t=x;x=y;y=t;
}
main()
{ int a,b;
scanf(%d,%d,&a,&b);
swap(a,b);
printf(a=%d,b=%d”,a,b);
}
3. 设输入为: C++ ProGraming LangUage↙ (其中表示回车),下面C程序的输出是:__            _
  #include <stdio.h>
    main()
    { int n1,n2,n3;  char ch;
      n1=n2=n3=0;
      while((c=getchar())!=\n)
        if(c>=A&&c<=Z) n1++;
        else if(c>=a&&c<=z) n2++;
            else n3++;
      printf(n1=%d,n2=%d,n3=%d\n,n1,n2,n3);
}
4.以下程序运行时,输出结果的第一行是          ,第二行是    __ __
    #include <stdio.h>
    void change(int x,int m)
    { char ch[]={’0’,’l’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’},b [80];
      int i=0,r;
  while(x)
      {  r=x%m;  x/=m;
        b[i++]= ch[r];
    }
    for(--i; i>=0; i--)
      printf(%c,b[i]);
    }
    main()
    { int a,b;
    change(10,2);
    printf(\n);
    change(10,8);
    }
四、完善程序
1、下面的程序读入数组元素值,然后以每行4个元素的形式输出。
    #define      N  20
        main()
    {  int a[N],i;
        for (i=0; i<N;i++)
            scanf(“%d”, __    __);
        for (i=0; i<N;i++)
            { if ( _      _ ) printf(“\n);
            printf(“%8d”, a[i]);
            }
        printf(“\n”);
    }
2. 下面程序的功能是:使一个字符串按逆序存放,请填空#include <stdio.h>   
    main()
{ char  m,str[60];  int i,j;
      printf(input a string:);  gets(str);
      for(i=0,j=strlen(str)-1;i<_  __;i++,j--)
      {  m=str[i];
          str[i]=__    ___;
          str[j]=m; 
      }
      puts(str);
    }
3. 以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差, 如果两串相同,则返回0;例如:输入的两个字符串分别为abcdef和abceef,则输出为-1,请填空。
    #include <stdio.h>
    main()
    { char str1[100],str2[100],j;
      int s;
      printf("\n input string 1:\n");  gets(str1);
      printf("\n input string 2:\n");  gets(str2);
      j=0;
      while((str1[j]==str2[j])&&(str1[j]!=__  _)) j++;
      s=__      __;
      printf("%d\n",s);
    }
4. 以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。例如:输入的字符串为:556,则输出十进制整数366。请填空。
      #include <stdio.h>
      main()
      {  char  s[6];
        int  i=0,n;
        gets(s);
        n=0;
        while( s[i]!=0 )  _        ___;
        printf("%d \n",n); 
      }
五、改错题
下面的程序中, a是输入数组, b是输出数组; 程序功能是出数组a中所有素数,
若a中某个元素为素数, 则将输出数组相同位置处的元素置为T; 否则置为F
如: 若输入数组为:            则输出数组为:
          6  2  13  14          F  T  T  F
        16  15  25  67          F  F  F  T

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。