200606
一、 单选题(每小题2分,共30分)
1. 下列表示中,不是C语言合法字符常量的是    1   
A. \0xff          B. \65’          C. $          D. \x2a
2. 设有如下定义:
    float y=3.45678;
    int x
则下列表达式中能实现将y中数值保留至小数点后2位,小数点后第3位四舍五入的表达式是  2     
A. y=(y*100+0.5)/100.0            B. x=y*100+0.5, y=x/100.0
C. y=y*100+0.5/100.0              D. y=(y/100+0.5)*100.0
3. 下列表示中,能在C语言中正确定义三个整型变量abc,且能给它们均赋值5的是    (3)   
A. int a=b=c=5;                  B. int a,b,c=5;
C. int a=5,b=5,c=5;              D. a=b=c=5;
4. 设有数学命题“当整数a的值为奇数时,表达式的值为真,否则为假”,则下列C语言表达式中,不能满足该数学命题要求的是  (4)   
A.a%2==1        B. !(a%2)        C. !(a%2==0)      D. a%2
5. 执行下列程序段后,变量i的值是  5 
        int i=1
        switch(i){ case  0: i+=1;
                    case  1: i+=1;
                    case  2: i+=1;
                    default: i+=1;
                  }
A. 1              B. 2            C. 3            D. 4
6. C语言中,break语句 6     
A. 能用在C源程序中的任何位置            B. 只能用在循环体内
C. 只能用在循环体内或switch语句中        D. 可用作函数内的任一语句
7. 设有程序段:
    int x=10;
整型常量合法要求    while (x=0) x=x-1;
则下列叙述中正确的是    (7)   
A. while循环执行10        B. 循环是无限循环
C. 循环体语句一次也不执行      D. 循环体语句只执行一次
8. C语言中,数组名可作为实在参数传递给函数的形式参数,此时,作为实在参数的数组名被处理为  (8)   
A. 该数组的长度              B. 该数组的元素个数
C. 该数组中元素的值          D. 该数组的首地址
9. 以下关于函数定义的叙述中,正确的是  (9)   
A. 构成C语言源程序的基本单位之一是函数定义
B. 所有被调用的函数必须在调用之前定义
C. main函数的定义必须放在其他函数定义之前
D. 定义main函数时,main函数的函数体内必须至少包含一条语句或声明
10. 设有下列程序段:
    struct person{char name[9]; int age; };
    struct person class[10]={John,17, Paul,19, Mary,18, adam,16};
则下列选项中,能打印出字母“M”的语句是  (10)   
A. printf(%c\n,class[3].name);
B. printf(%c\n,class[3].name[1]);
C. printf(%c\n,class[2].name[1])
D. printf(%c\n,class[2].name[0])
11. 以下能将字符串“good!”正确地存放在字符数组s中,或使指针变量s能正确地指向这个字符串的是11   
A. char s[5]={‘g’, ‘o’, ‘o’, ‘d’, ‘!’}
B. char s[5]s=good!”;
C. int s[5]=good!”;
D. char *ss=good!”;
12. 若有语句:
char s1[10],s2[10]=books”;
则下列表示中,能正确地将字符串“books”赋给数组s1的是  (12)   
A. s1={books}                  B. strcpy(s1,s2)
C. s1=s2                          D. strcpy(s2,s1)
13. 以下正确的函数说明语句是  (13)   
A. int fun(int a, b)            B. float fun(int a; int b)
C. double fun()                  D. int fun(char a[][])
14. 设有说明语句
    char *s=abcd;
则执行s+=2后,*s的内容是  (14)   
A. a            B. b            C. c              D. cd
15. 下列对typedef的叙述中,错误的是  (15)   
A. typedef可以增加新类型
B. typedef可以定义各种类型名,但不能用来定义变量
C. typedef只是将已存在的类型用一个新的标识符来代表
D. 使用typedef有利于程序的通用和移植
二、填空题(每空1分,共20)
1. 一个C语言源程序是由若干个1    组成的;C语句的分隔符是2   
2. 程序的三种基本控制结构分别是3      、选择和4         
3. 数学表达式“”所对应的C语言表达式为5                。在C程序中要计算这样的表达式,通常必须包含头文件6           
4. C语言中,声明变量的格式为:
    存储类别  类型名  变量名表;
其中,变量有四种存储类别,它们分别是7            registerextern8           
5. 若有定义:“int a[3][4]={{1,2,3},{45},{6,7,8}} ”,则执行该说明语句后,a[1][2]=9          a[2][1]=10               
6. C程序中,若有函数定义如下:
  void f()
  { static int i
      }
其中,void表明函数f11          ;而i是一个12          整型变量。
7. C语言程序设计中,预处理命令行必须以13              开头,该命令是在 14            被处理的。
8. 若一结构的成员项是指向本结构类型的结构指针,则称该结构为15      。定义这种结
构类型的一般形式如下:
        struct node {  int data;
                        16          next;
                      };
9. C语言源程序中,函数内部说明局部变量时若缺省了存储类型,则该变量的存储类型为17          ;定义一个函数时,若缺省该函数返回值的类型,则默认返回值为 18        型。
10. 设有以下说明语句:
struct student { int x;
                int *y;
              };
int dt[4]={1,2,3,4};
struct student a[4]={10, &dt[3], 20, &dt[2], 30, &dt[1], 40, &dt[0]}, *p=a;
则表达式++p->x的值为19      ,表达式*(++p)->y的值为20     
三、 阅读程序写出结果(每小题4分,共20分)
1. 下列程序的运行结果是                   
#include <conio.h>
main()
{ int s=0,n=135;
  do{ s+=n%10;
    n/=10;
    }while(n);
  printf(%d\n,s);
  getch();
}
2. 下列程序的运行结果是                   
#include <conio.h>
void f(int x,int y)
  { int t;
    t=x;x=y; y=t;
  }
  main( )
  { int a=1,b=100;
    f(a,b);
    printf (%d,%d\n,a,b);
    getch();
  }
3. 以下程序运行的结果是                     
#include <stdio.h>
#include <conio.h>
main()
    { int i;
      for(i=0;i<3;i++)
        printf("%3d ",f(i));
      getch();
    }
  f(int x)
  { int y=0;
    static int z=1;
    y++,z++;
    return(x+y+z);
    }
4. 下面程序段运行的结果是__________________
#include <conio.h>
#include <stdio.h>
    main()
    { int i=1,j=0,m=1,n=1;
      switch(i)
        { case 1:m++;n++;
          case 2:switch(++j)
                  { case 1:m++;break;
                    case 2:n++;
                  }
          case 3:m++;break;
          case 4:n++;
        }
      printf("%d,%d\n",m,n);
      getch();
    }

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