C语言试题及答案解析(五)
班级                    姓名                学号____________
题号
总得分
评卷人
审核人
得分
一、选择题(每题1分,共20分)
1.以下叙述中正确的是(    )
A. C程序中注释部分可以出现在程序中任意合适的地方
B. 花括号"{"和"}"只能作为函数体的定界符
C. 构成C程序的基本单位是函数,所有函数名都可以由用户命名
D. 分号是C语句之间的分隔符,不是语句的一部分
2.在一个C语言程序中(    )
  A. main函数必须出现在所有函数之前
  B. main函数可以在任何地方出现
  C. main函数必须出现在所有函数之后
  D. main函数必须出现在固定位置
3.判断下面标识符中哪个是C语言中合法的用户定义标识符(    )
A. a-b    B. #abd    C.  typedef    D. _max
4.为表示关系X≥Y≥Z,应使用C语言表达式(    ) 
A. (X≥Y)&&(Y≥Z)      B. X>=Y>=Z
C. (X>=Y)‖(Y>=Z)        D.  (X>=Y)&&(Y>=Z)   
5.设有一分段函数:    x=1      a<b且c=d
x=2      a>=b
  则下列程序段哪个是正确的(    )
A. if(a<b)      B.  if (a<b)    C.  if (a>b)      D.  if (a>=b)
  if(c= =d)        {if (c= =d)      if (c= =d)          x=2;
x=1;            x=1;          x=1;          else
else x=2;        else x=2;}      else x=2;          {if(c= =d)  x=1;}
6.若有两条语句:static char x[]=”abcde”;
         static char y[]={‘a’,’b’,’c’,’d’,’e’};   
  则下列说法中正确的是(    )
A.  x数组和y数组长度相同  B. x数组长度大于y数组长度 
C. x数组长度小于y数组长度  D. 以上三种说法均错误。
7.返回值为void的函数,其含义是(    )
A.调用函数之后,被调用的函数没有返回值;
B.调用函数之后,被调用的函数不返回   
C.调用函数之后,被调用的函数返回值为任意类型
D. 以上三种说法均不正确。
8.指出下列程序段中那个语句是不正确的(    )(int x,y,z[10],*px,*py)
  A. px=&x,py=px  B. px=x  C.  py=&y  D. px=z
9.在printf语句中按字符串输出的格式是(    )
  A. “%s”    B. “%c”    C. “%f”  D. “%d”
10.C语言中,运算对象必须是整型的运算符是(    )
A. %    B. /  C. %和/    D. >=
11.以下说法正确的是(    )
A.C语言程序总是从第一个定义函数开始执行;
B.在C语言程序中,要使用的函数必须在main()函数中定义;
C.C语言程序总是从main()函数开始执行;
D.  C语言程序的main()函数必须在程序的开始部分。
12.已定义以下函数
  fun(int *p)
  { return *p; }
该函数的返回值是(    )
A. 不确定的值                B. 形参p中存放的值
C. 形参p所指存储单元中的值    D. 形参p的地址值
13.对于scanf(“A=%d”,&a)语句,输入10的正确的输入形式是(    )
  A. a=10    B. A=10    C. 10    D. =10
14.当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是(    )   
 A.c=b=a;  B.(a=c)‖(b=c);  C. (a=c)&&(b=c);  D. a=c=b;
15.在C语言中,不正确的int类型的常数是(    )
A .32768  B. 0  C. 037    D. 0xAF
16.若有以下说明语句(已知int占2个字节,long 占4个字节),则下面printf的输出结果是(    ) 
A. 24    B. 26  C. 20    D. 30
    union uarea
{  int x;
  long y;};
struct str
{  char s[20];
  union uarea z;};
main()
{printf(“%d\n”,sizeof(struct str));}
17.下列关于switch和break语句的讨论中,只有(  )是正确的。
A.  break语句是switch 语句的一部分
B.  在switch语句中可以根据需要使用或不使用break语句 
C.  switch语句中必须使用break语句 
D.  以上三种说法都不正确。
18.以下不能正确定义二维数组的选项是 (    ) 
A. int a[2][2]={{1},{2}};    B. int a[2][]={{1,2},{3,4}};
C. int a[2][2]={{1},2,3};    D. int a[][2]={1,2,3,4};
19.执行以下程序后,输出结果是(    ) 
A. 1    B. 1    C. 8      D. 0
  main()
  { int y=11;
while(--y)
{ y--;}
printf(%d\n,y--);
    }
20.main()
{ int a=5,*b,**c;
  c=&b; b=&a;
        ……
}
程序在执行了c=&b;b=&a;语句后,表达式:**c的值是(    )
A. 变量a的地址      B. 变量b中的值
C. 变量a中的值      D. 变量b的地址
二、写出下列程序的执行结果(每题5分,共20分)
1.                                        2.
3.4.
三、程序改错题(每题5分,共20分)
注:下列每小题有一个错误,出并改正
1. #i nclude "stdio.h"
  main()
  { char c,*ch=&c;
    while((c=getchar())!=’\n’)
    { if(ch>=’a’&&ch<=’z’)
        putchar(*ch-’a’+’A’);
      else
        putchar(*ch);
    }
  }
2.求100以内的正整数中为13的倍数的最大值。
  main()
  { int i;
    for(i=100;i>=0;i--);
    if(i%13==0)  printf("%d",i);
  }
3. 求1+2+3+…+100
main()
  { int i=1;
    do
    { sum+=i; i++;
    }while(i <=100);
    printf("%d",sum);
}
4. 计算 1+1/2+1/3+…+1/10
  main()
  { double t=1.0;
    int i;
    for(i=2;i<=10;i++)
      t+=1/i;
    printf("t=%f\n",t);
  }
四、把以下的程序补充完整(每空2.5分,共10分)
1、1.以下程序中,select 函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。
#define N 3
#define M 3
select(int a[N][M],int *n)
{ int i,j,row=1,colum=1;
  for(i=0;i<N;i++)
  for(j=0;j<M;j++)
  if(a[i][j]>a[row][colum]){row=i;colum=j;}
  *n=       ;
  return       ; }
2.函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下
1                 
1  1                其构成规律是:
1  2  1            (1) 第0列元素和主对角线元素均为1
1  3  3  1          (2) 其余元素为其左上方和正上方元素之和
1  4  6  4  1      (3) 数据的个数每行递增1
请将程序补充完整。
#define N 6
void yanghui(int x[N][N])
{ int i,j;
  x[0][0]=1;
  for(i=1;i<N;i++)
  {  x[i][0]=c语言程序总是从什么开始执行    =1;
    for(j=1;j<i;j++)
      x[i][j]=    ;
  }
}
五、编程题(每题10分,共30分)
注:每个编程题都应画出N-S图,N-S图占一半的分数
1.判断某一年是否为闰年。(规则:如果某年份能被4整除而不能被100整除,该年份为闰年;如果某年份能被4整除,且又能被400整除,该年份也为闰年。除此之外,都不是闰年。)
2.写一个函数,在主函数中输入一个数,然后调用该函数判断该数是否是素数,最后输出判断结果。(判断一个数m是否是素数可让该数m被2,3,4…去除,如果m能被其中的任何一个整数整除,则证明它不是素数;相反,如果m不能被2~之中的任何一个整数整除,则证明m为素数。)
3.编写函数,将整型数组中的各元素按相反顺序存放(不使用辅助数组)。要求采用两种方法:
1)函数中采用下标运算;
2)函数中利用指针自加或自减间接访问数组单元。
要求:输入、输出在主函数中完成。main函数和子函数都要写出。
参考答案
一、选择题(每题1分,共20分)
1-5:ABDDD    6-10:BABAA    11-15:CCBCA    16-20:ABBDC
二、写出下列程序的执行结果(每题5分,共20分)

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