窗体顶端
窗体底端
一、单项选择题(50道小题,共50分)
1、一个C语言程序是由(    )。1分)
A、一个主程序和若干子程序组成
B、函数组成
C、若干过程组成
D、若干子程序组成
2、以下叙述中,正确的是(    )。1分)
A、在C程序中,main函数必须位于程序的最前面
BC语言本身没有输入输出语句
CC程序的每行只能写一条语句
D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误
3、以下叙述中,正确的是(    )。1分)
A、在C程序中,main函数必须位于程序的最前面
BC程序的每行中只能写一条语句
CC语言本身没有输入输出语句
D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误
4、若有语句:int x=3;do{printf("%d\n",x-=2);}while(!(--x));,则程序段(    )。1分)
A、输出的是1
B、输出的是1-2
C、输出的是30
D、是死循环
5、下面四个选项中,均是不合法的转义字符的选项是(    )。1分)
A'\'''\\''\xf'
B'\1011''\' '\xyz'
C'\011''\f''\}'
D'\abc''\101''xlf'
6、设所有变量均为整型,则表达式z=(a=2,b=5,b++,a+b)的值是(    )。1分)
A7
B8
C6
D2
7、设以下变量均为int类型,则值不等于7的表达式是(    )。1分)
A(x=y=6,x+y,x+1)
B(x=y=6,x+y,y+1)
C(x=6,x+1,y=6,x+y)
D(y=6,y+l,x=y,x+1)
8、设有说明:char w;int x; f1oat y;double z;,则表达式w*x+z-y值的数据类型为(    )。1分)
Afloat
Bchar
Cint
Ddouble
9、已有定义int x;f1oat y;,且执行scanf("%3d%f",&x,&y);语句,若从第一列开始输入数据12345  678(回车),x的值为(    )。1分)
A12345
B123
C45
D345
10、已有定义和输入语句:int a1,a2;char c1,c2;scanf("%d%d",&a1,&a2);scanf("%c%c",&c1,&c2);,若要求a1,a2,c1,c2的值分别为10,20,A,B,当从第一列开始输入数据时,正确的数据输入方式是(    )。1分)
A1020AB<CR> 
B10  20<CR>AB<CR>
C10  20   AB<CR>
D10 20AB<CR>
11C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符(    )。1分)
A、必须为字母
B、必须为下划线
C、必须为字母或下划线
D、可以是字母,数字和下划线中任一种字符
12、已知各变量的类型说明如下:int k,a,b;unsigned long w= 5; double x=1.42;,则以下不符合C语言语法的表达式是(    )。1分)
Ax%(-3)
Bw+=-2
Ck=(a=2,b=3,a+b)
Da+=a-=(b=4)*(a=3)
13、下列运算符中,优先级最高的是(    )。1分)
A<
B+
C&&
D!=
14putchar函数可以向终端输出一个(    )。1分)
A、整型变量表达式值
B、实型变量值
C、字符串
D、字符或字符型变量值
15、设exp是一个表达式,若有条件表达式(exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是(    )。1分)
A(exp==0)
B(exp!=0)
C(exp==1)
D(exp!=1)
16、若希望当A的值为奇数时,表达式的值为“真”A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是(    )。1分)
AA%2==1
B!(A%2==0)
C!(A%2)
DA%2
17、设有:int a=1,b=2,c=3,d=4,m=2,n=2;,执行(m=a>b)&&(n=c>d)后,n的值为(    )。1分)
A1
B2
C0
D4
18、执行语句片段:int a,b,c;a=b=c=1;++a||++b&&++c;后,a的值为(    )。1分)
A、错误
B0
C2
D3
19、以下正确的描述是(    )。1分)
Acontinue语句的作用是结束整个循环的执行
B、只能在循环体内和switch语句体内使用break语句
C、在循环体内使用break语句或continue语句的作用相同
D、从多层循环嵌套中退出时只能使用goto语句
20、下列四组选项中,均不是C语言关键字的选项是(    )。1分)
AdefineIFtype
Bgetccharprintf
Cincludescanfcase
Dwhilegopow     
21、下面四个选项中,均是不合法的浮点数的选项是(    )。1分)
A160.0.12e3
B1232e4.2.e5
C-.18123e40.0
D-e3.2341e3
22、下面四个选项中,均是非法常量的选项是(    )。1分)
A'as'-0fff'\0xa'
B'\\''\01'12,456
C-0xl8011770xf
D0xabc'\0'"a"
23printf函数的作用是向终端、循环语句for(x=0,y=0;(y=123)&&(x<4);x++); 的执行次数是(    )。1分)
A、是无限循环
B、循环次数不定
C、执行4
D、执行3
24、若运行int x,y;scanf("%d",&x);y=x>12?x+10:x-12;printf("%d\n",y);时,给变量x输入12,则以下程序的运行结果是(    1分)
A0
B22
C12
D10
25、当a=1,b=3,c=5,d=4,执行程序段:if(a<b)if(c<d)x=1;else if(a<c) if(b<d)x=2;else x=3;else x=6;else x=7;后,x的值是(    )。1分)
A1
B2
C3
D6
26、以下程序:float a,b;scanf("%f",&a);if(a<10.0)b=1.0/a;else if((a<0.5)&&(a!=2.0))b=1.0/(a+2.0);else if(a<10.0) b=1.0/x ;else b=10.0;printf("%f\n",y);运行时,输入2.0(回车),则上面程序的输出结果是(    )。1分)
A0.000000
B0.500000
C1.000000
D0.250000
27、为了避免在嵌套的条件语句If-else中产生二义性,C语言规定else子句总是与(    )配对。1分)
A、缩排位置相同的if
B、其之前最近的if
C、之后最近的if
D、同一行上的if
28、以下不正确的语句为(    )。1分)
Aif(x>y);
Bif(x=y) && (x!=0) x+= y;
Cif(x!=y)scanf("%d",&x);else scanf("%d",&y);
Dif(x<y){x++;y++;}
29、对for(表达式1;;表达式3)可理解为(    )。1分)
Afor(表达式1;0;表达式3) 
Bfor(表达式1;1;表达式3)
Cfor(表达式1;表达式1;表达式3)
Dfor(表达式1;表达式3;表达式3)
30、设有程序段:int k=10;while(k=0)k=k-1;,则下面描述中正确的是(    )。1分)
Awhile循环执行10
B、循环是无限循环
C、循环体语句一次也不执行
D、循环体语句执行一次
31、逻辑运算符两侧运算对象的数据类型(    )。1分)
A、只能是01
B、只能是0或非0正数
C、只能是整型或字符型数据
D、可以是任何类型的数据
32、在C语言中,一维数组的定义方式为:类型说说明符 数组名(    )。1分)
A[常量表达式]
B[整型表达式]     
C[整型常量][整型表达式]
D[整型常量]
33、以下能对一维数组a进行正确初始化的语句是(    )。1分)
Aint a[10]=(0,0,0,0,0)
Bint a[10]={}
Cint a[]={0};
Dint a[10]={10*1};
34、若有说明:int a[10];,则对a数组元素的正确引用是(    )。1分)
Aa[10]
Ba[3.5]
Ca[15]
Da[10-10]
35、下面描述中,正确的是(    )。1分)
A、两个字符串所包含的字符个数相同时,才能比较字符串
B、字符个数多的字符串比字符个数少的字符串大
C、字符串" STOP"(注:有一个空格)"STOP"相等
D、字符串"That"小于字符串"The"
36、判断字符串ab是否相等,应当使用(    )。1分)
Aif(a= =b)
Bif(a=b)
Cif(strcpy(a,b))
Dif(strcmp(a,b))
37、以下不能对二维数组a进行正确初始化的语句是(    )。1分)
Aint a[2][3]={0};
Bint a[][3]={{1,2,3},{4,5,6}};
Cint a[2][4]={{1,2,3},{4,5}{6}};
Dint a[][3]={{1,0,1},{},{1,1}};
38、以下各组选项中,均能正确定义二维实型数组a的选项是(    )。1分)
Afloat a[3][4];float a[][4];float a[3][]={{1},{0}};
Bfloat a(3,4);float a[3][4];float a[][]={{0},{0}};
Cfloat a[3][4];static float a[][4]={{0},{0}};auto float a[][4]={{0},{0},{0}};
Dfloat a[3][4];float a[3][];float a[][4]
39、以下能对二维数组a进行正确初始化的语句是(    )。1分)
Aint a[2][]={{1,0,1},{5,2,3}};
Bint a[][3]={{1,2,3},{4,5,6}};
Cint a[2][4]={{1,2,3},{4,5},{6}};
Dint a[][3]={{1,0,1},{},{1,1}};
40、若有说明:int a[3][4];,则数组a各元素(    )。1分)
A、可在程序的运行阶段得到初值0
B、可在程序的编译阶段得到初值0   
C、不能得到确定的初值
D、可在程序的编译或运行阶段得初值0
41、以下对二维数组a的正确说明是(    )。1分)
Aint a[3][];
Bfloatf a(3,4);
Cdouble a[1][4];
Dfloat a(3)(4);
42、若有说明:int a[3][4];,则对a数组元素的正确引用是(    )。1分)
Aa[2][4]
Ba[13]
Ca[1+1][0]
Da(2)(1)
43、对两个数组ab进行如下初始化:char a[]="ABCDEF";char  b[ ]={'A','B','C','D','E','F'};,则以下叙述正确的是(    )。1分)
Aab数组完全相同
Bab长度相同
Cab中都存放字符串
Da数组比b数组长度长
44、在C语言中,形参的缺省存储类别是(    )。1分)
Aauto
Bregister
Cstatic
Dextern
45、若用数组名作为函数调用的实参,传递给形参的是(    )。1分)
A、数组的首地址
B、数组第一个元素的值
C、数组中全部元素的值
D、数组元素的个数
46、以下正确的函数定义形式是(    )。1分)
Adouble fun(int x,int y)
Bdouble fun(int x;int y)
Cdouble fun(int x,int y);
Ddouble fun(int x,y);
47、在宏定义 #define PI "3.14159" 中,用宏名PI代替一个(    )。1分)
A、常量
B、单精度数
C、双精度数
D、字符串
48、程序段:int arr[]={6,7,8,9,10};int * ptr;ptr=arr;*(ptr+2)+=2;printf("%d,%d\n",*ptr,*(ptr+2));的输出结果为(    )。1分)
A8,10
B6,8
C7,9
D6,10
49、程序段:char str[]="ABC";*p=str;printf ("%d\n",*(p+2));的运行结果是(    )。1分)
A0
B、字符'C'ASCII
C、字符'C'的地址
D、字符'C'
50、在C语言中,如果一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为(    )。1分)
A0255
B032767
C065535
D02147483647
二、填空题(7道小题,共30分)
1输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
#include <stdio.h>
void main()
{ char ;
  int letters=0,spaces=0,digits=0,others=0;
  printf("\n请输入一行字符:");
  while((=getchar())!='\n')
   { if(c>='a'&&c<='z' || c>='A'&&c<='Z') letters++;
     else if(c==' ') spaces++;
          else if(c>='0'&&c<='9') digits++;
               else others++;
  }
   printf("\n字符数=%d,空格数=%d, 数字数=%d, 其他=%d, \n:",letters,spaces,digits,others);
}



4分)
2下面程序的功能是在输入的一批正整数中求出最大者,输入 0 结束循环。
       #include <stdio.h>
       void main()
       {
         int a,max=0;
         scanf("%d", &);
         while(a!=0)
         {
           if(max<a)  max=;
           scanf("%d",&a);
          }
         printf("%d", max);
       }



4分)
3两个乒乓球队进行比赛,各出三人甲队为ABC.乙队为XYZ三人.已经抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X,C说他不和XZ编程序出三对赛*手的名单.
#include<stdio.h>
void main()
{char i,  j,  k;
 for ( i='X'; i<='Z'; i++)
   for ( j='X'; j<='Z'; j++)
     if(!=) for (k='X';k<='Z';k++)
          if(i!=k&&j!=k)
            if ( i!='X'&&k!='X'&&k!='Z') printf("A--%c\tB--%c\tC--%c\n" , i , j , k);
}



4分)
4下面程序的功能是删除字符串中的空格。
#include <stdio.h>
void main()
{ char s[]="Beijing ligong daxue";
  int i,j;
  for(i=j=0;s[i]!='\0';i++)
  if(s[i]!=' ') s[j++]=s[i];
  else  s[  ]=s[  ];
  s[j]='\0';
  printf("%s",s);
}



4分)
5编写程序,建立一个6×6的二维数组(数据由随机函数产生),输出数组中的最大元素,并统计最大元素所在行的所有元素之乘积。
#include "stdlib.h"
#include <stdio.h>
#include <time.h>
int main()
{ int a[6][6],i,j,max,maxi;
  double s=;
  srand(time(NULL));
  for(i=0;i<6;i++)
    for(j=0;j<6;j++)
      a[i][j]=rand();
  =a[0][0];
  maxi=0;
  for(i=0;i<6;i++)
    for(j=0;j<6;j++)
      if(a[i][j]>max)
 { max=a[i][j];
   maxi=i;
 }
  printf("\n%d",max);
  for(j=0;j<6;j++)
     s=s*a[maxi][j];
  printf("\n%.3lf",s);
  return 0;
}



4分)
6下面程序的功能是将形参x的值转换为二进制数,所得的二进制数放在一个一维数组中返回,二进制数的最低位放在下标为0的元素中。
   fun(int  x,int [])
   {
    int k=0,r;
    do{
          r=x%2;
          b[k++]=r;
          /=2;
       }while(x);
   }


4分)
7下面程序的输出结果是:34列矩阵,第1行是1,3,5,7;第2行是:9,11,13,15;第3行是:17,19,21,23.
#include <stdio.h>
int main()
 {int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
  int ;
  for(p=a[0];p<a[0]+12;p++)
    {if((-a[0])%4==0)printf("\n");
     printf("%4d",p);
  }
  printf("\n");
  return 0;




6分)

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