一、选择题(每小题1分,共30分)
1.结构化程序设计所规定的三种基本控制结构是   
  A. 输入、处理、输出    B. 树形、网形、环形
  C. 顺序、选择、循环    D. 主程序、子程序、函数
2.要把高级语言编写的源程序转换为目标程序,需要使用   
  A. 编辑程序  B. 驱动程序    C. 诊断程序    D. 编译程序
3.若有定义:int a=8b=5c; ,执行语句c=a/b+0.4;后,c的值为   
  A. 1.4    B. 1    C. 2.0      D. 2
4.若变量aint类型,并执行了语句:a=‘A’+1.6;,则正确的叙述是   
  A. a的值是字符C                   B. a的值是浮点型
  C. 不允许字符型和浮点型相加     D. a的值是字符‘A’ASCII值加上1
5.若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量abc的语句是   
  A. scanf("%d%d%d",&a,&b,d); B. scanf("%d%d%d",&a,&b,&d);
  C. scanf("%d%d%d",a,b,d);  D. scanf("%d%d%d",a,b,*d);
6.若定义:int a=511,*b=&a;, printf("%d\n",*b);的输出结果为   
  A. 无确定值     B. a的地址    C. 512    D. 511
7.以下程序的输出结果是   
  main()
  { int a=5,b=4,c=6,d;
  printf("%d\n",d=a>b?(a>c?a:c):(b));
  }
  A. 5     B. 4   C. 6   D. 不确定
8.以下程序的输出结果是   
  main()
  { char cf[3][5]={"AAAA","BBB","CC"};
  printf("\"%s\"\n",ch[1]);
  }
  A. "AAAA"     B. "BBB"    C. "BBBCC"     D. "CC"
9.C语言中,形参的缺省存储类是   
  A. auto     B. register    C. static     D. extern
10.以下程序的输出结果是   
  main()
  { char x=040;
  printf("%0\n",x<<1);
  }
  A. 100   B. 80     C. 64     D. 32
11.以下不能正确进行字符串赋初值的语句是   
  A. char str[5]="good!";  B. char str[]="good!";
  C. char *str="good!";   D. char str[5]={ ‘g’,‘o’,‘o’,‘d’};
12.若有下面的说明和定义:
  struct test
  {  int ml;    char m2;    float m3;
    union uu {char name[5]; int scores[2];} ua;
  } myaa;
  则sizeof(struct test )的值是   
  A. 12     B. 16       C. 14     D. 9
13.若有定义:int aa[8];。则以下表达式中不能代表数组元素aa[1]的地址的是   
  A. &aa[0]+1       B. &aa[1]     C.. &aa[0]++     D. aa+1
14.在说明语句:int *fun();,标识符fun代表的是   
  A. 一个用于指向整型数据的指针变量  B一个用于指向一维数组的行指针
  C. 一个用于指向函数的指针变量    D. 一个返回值为指针型的函数名
15.s12s2已正确定义并分别指向两个字符串。若要求:当s1所指字符串大于s2所指字符串时,执行语句S;则以下选项中正确的是   
  A. if(s1>s2) S;              B. if(strcmp(s1,s2)) S;
  C. if(strcmp(s2,s1)>0) S;    D. if(strcmp(s1,s2)>0) S;
16.C语言程序编译时,程序的注释部分   
A.参加编译,并会出现在目标程序中 B.参加编译,但不会出现在目标程序中
  C.不参加编译,但会出现在目标程序中  D.不参加编译,也不会出现在目标程序中
17.设int i=010,j=10;则printf("%d,%d",++i,j++);的输出   
A.11,10    B. 9,10   C.010,9    D.10,9
18.正确的C语言用户自定义标识符是   
  A.print    B. float    C. when?      Drandom%2
19.若从终端上输入以下数据,要给变量C赋以283.19,则正确的输入语句是   
  A.scanf(“%f”,c);        Bscanf(“%4f”,&c);
  Cscanf(“%6.2f”,&c);   Dscanf(“%8”,&c);
20.int a=3,b=4,c=5; 则以下表达式中,值为0的表达式是   
  A.a&&b    Ba<=b    Ca||b+c&&b-c    D!((a<b)&&!c||1)
21.char x=’a’;  printf(“x=%c,y=%c\n”,x,97); 的输出是   
  Ax=a,y=97    Bx=97,y=a   Cx=97,y=97    Dx=a,y=a
22.执行下列程序后输出的结果是   
  int a[3][3]={{1},{2},{3}};
    int b[3][3]={1,2,3};
main()
{  printf(“%d\n”,a[1][0]+b[0][0]);  }         
A. 0        B. 1            C. 2            D. 3   
23.有两个字符数组ab,则以下正确的输入语句是   
  A. gets(a,b);  B. scanf(“%s%s”,a,b);
C. scanf(“%s%s”,&a,&b);  D. gets(“a”), gets(“b”);
24.设有语句 int a=3; 则执行了语句a+=a-=a*a;后,变量a的值是   
A.3        B.0          C.9        D.-12
25.若有说明 int a[10],*p=a;  对数组元素的正确引用是   
A.a[p]        B.p[a]        C.*(p+2)        D.p+2
26.char型常量在内存中存放的是   
  A.ASCII       B.BCD代码值  C.内码值        D.十进制代码值
27.对break语句continue语句,下面说法不正确的是   
  A.break语句强制中断当前循环,退出循环体
  B.break语句只能用在三条循环语句的循环体或switch语句中
  C. 在没有循环情况下,continue语句能用在switch语句中
  D.continue语句不能退出循环体
28.c语言允许if-else语可以嵌套使用规定else总是与    配对。
  A.其之前最近的if            B.第一个if
  C.缩近位置相同的if          D.其之前最近的且尚未配对的if
29.有说明语句int a=1;则执行以下语句后输出   
swich(a)
{
case 1:printf(“你好\n”)
case 2:printf(“再见”)
default(“晚安”);
  A.你好  再见 晚安          B.你好  再见晚安
C.你好
再见晚安                  D.你好再见
c编程网30.已知x是字符变量,下面不正确的赋值语句是   
Ax='x+y'       Bx='\0'    Cx='1'+'2'      Dx=1+2
二、填空题(每小题1分,共20分)
1.能表述"20<x<30x100"C语言的表达式是    x>20&&x<30||x<=100             
2.对源程序进行编译时,每遇到一个变量,就给它分配内存单元,同时记录变量的     变量标识符          数据类型        内存地址        .
3.在内存中存储"A"要占用  2    个字节,存储'A'要占用  1  个字节。
4.在C语言中,二维数组在内存的存放顺序是      按行存放         
5.被调用函数在执行结束时,这个函数中定义的    静态存储类型 (static修饰)    类型的变量不释放。
6.设有以下定义语句 char a[4][10]={"11","22","23","44"};则puts(strcat(a[1],a[3]));的输出结果是___2244____; puts(strcpy(a[0],a[2]));  的输出结果是_____23____。
7.设有char *a=ABCD,则printf(%c,*a)的输出是  A 
8.当定义了一维数组后,可以引用任何一个元素,引用方法为    数组名[下标]        ,称为下标法:C语言还允许使用    指针法        来引用数组元素。
9.值传递方式传递的是__数据___,地址传递方式传递的是__地址__