2010-2011 C语言程序设计期中测验
填空题 
16.  已知:int a=5,b=6,w=1,x=2,y=3,z=4;执行语句“(a=w>x)&&(b=y>z);”后b 的值为 6
19.  已知:int  k= 4,a=3,b=2,c=1;则表达式“k<a ? k : c<b ?c :a”的值为 1 
21.  下面程序的功能是用"辗转相除法"(设两个数m,n,假设m>=n,用m除以n,求得余数r。若r为0,则n为最大公约数;若r不等于0,则进行如下迭代:m=n,n=r,即原除数变为新的被除数,原余数变为新的除数重复算法,直到余数为0为止。余数为0时的除数n,即为原始m、n的最大公约数。)求两个正整数的最大公约数。请填空。
#include <stdio.h>
int main()
{int r,m,n;
  scanf("%d%d",&m,&n);
  if(m<n) {  r=m;m=n;n=r;    }
  r=m%n;
  while(r!=0){m=n;n=r;r= m%n;}
  printf("%d\n",n);
return 0;
}
24.  下面程序的功能是打印100以内个位数为6且能被3整除的所有数。
#include <stdio.h>
int main ( )
{ int i , j ;
printf输出格式%b
for ( i = 0 ; i<10; i + + )
    { j = i *10 + 6 ;
      if (j%3!=0continue;
      printf ( “ %d “ , j ) ;
    }
}   
26. 构成C语言程序的基本单位是函数
28.下面程序的功能是在一个正整数的各数字中出最大者,如4721,最大数为7。请填空。         
#include<stdio.h>
int main()
{
int n,max,t;
max=0;
scanf("%d",&n) ;
  do{ t=  n%10 ;
    if(max<t ) max=t ;
      n= n/10  ;
} while( n!=0  ) ;
printf(" max=%d\n ",max) ;
return 0;
31.  若s是int型变量,且s=6,则下面表达式的值为 1
s%2+(s+1)%2 
选择题 
14.  以下定义语句,编译时会出现编译错误的是 A
A. char a=“a”;          B. char a=’\0’;        C. char a=’a’;            D. char  a=‘\x2d’; 
15.  以下程序中的变量已正确定义
for(i=0;i<4;i++,i++)
for(k=1;k<3;k++);printf("*");
程序段的输出结果是D
A. ********            B.****            C. **                D. * 
13.  设有定义: int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是: C
A. if(a>b)c=a,a=b,b=c;                  B. if(a>b){c=a,a=b,b=c;}
C. if(a>b)c=a;a=b;b=c;                    D. if(a>b){c=a;a=b;b=c;} 
12. 以下选项中,能用作用户标示符的是C
A. viod                B. 8_8            C. _0_                D. unsigned   
11.  有输入语句:int a,b,c; scanf("a=%d,b=%d,c=%d", &a, &b, &c); 为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式应当是(注:#表示空格) D
A.  132<回车>                        B. 1,3,2<回车>   
C. a=1#b=3#c=2<回车>                    D. a=1,b=3,c=2<回车> 
2.  已知:char a=’a’;float b=2.3;double c=41;int d;则执行语句d=a+b+c;后变量d的数据类型为  A   
A. int                  B. char              C. float                  D. double
3.  设整型变量x和y的值均为7,则表达式“x/(y-4)”的值是C
A. 3                    B. -3            C. 2                    D. 1
4.  设字符型变量ch中存放字符'A',则执行'ch+++5'后,ch中的字符是 B
A. A                    B. B                C. F                    D. G
6.  若变量a的数据类型为double,执行下面两条语句后:
a=3.5;
printf("%d",a);
输出的数据或判断正确的是:D
A. 3                    B. 4                C. 3.500000            D. 输出格式错误
10.  若有变量定义int a; double b; 要输入数据存放在a和b中,则下面正确的输入数据的语句为:C
A. scanf("%d%f",a,b);                    B. scanf("%d%f",&a,&b);
C. scanf("%d%lf",&a,&b);                D. scanf("%d%lf",a,b);
编程题 
20.  程序调试及改错:改正程序中的错误,不要改动主函数,不得增行或删行。
【问题描述】 本程序计算:y=1-1/22-1/32-1/42-…-1/m2, 改正程序中的错误,不要改动主函数,不得增行或删行。
#include<stdio.h>
int main()
{  int m, i
  double y=1.0;
  scanf(“%d”, m);
  for(i=2;i<=m; i++)  y-=1.0/i*i;
  printf( “the result is: %f\n”, y );
  return 0;
}
修改为:
#include<stdio.h>
int main()
{  int m, i;
  double y=1.0;
  scanf("%d", &m);
  for(i=2;i<=m; i++)  y-=1.0/(i*i);
  printf("the result is: %lf\n",y );
  return 0;
}
23.  编程实现:输入整数a和b,若a2+b2大于100,则输出a2+b2百位及以上的数据,否则输出两数之和。
参考程序如下:
#include<stdio.h>
int main()
{
    int a,b,temp;
    scanf("%d%d",&a,&b);
    temp=a*a+b*b;
    if(temp>100)
        printf("%d",temp/100);
    else 
        printf("%d", a+b );
return 0;
}
25. 编写程序实现:输入任意整数给n后,输出n行由大写字母A开始构成的三角形字符阵列图形。例如,输入整数7时(注意:n不得大于10),程序运行结果如下:
A B C D E F G
H I J K L M
N O P Q R
S T U V
W X Y
Z A
B
参考程序如下:
#include<stdio.h>
int main()
{
  int i,n,j;
    scanf("%d",&n);
  char c='A';
  for(i=1;i<=n;i++)
  {
    for(j=n;j>=i;j--)  或者 是  for(j=i;j<=n;j++)
    {
        if(c>'Z')c='A';
        printf("%c ",c);
        c++;
    }
  printf("\n");}
return 0;
}
30.  输入一个正整数n,再输入n个学生的百分制成绩,统计各等级成绩的个数,成绩等级分为五级,分别为A(90~100),B(80~89),C(70~79),D(60~69)和E(0~59)    注:用switch语句实现。
参考程序如下:
#include<stdio.h>
int main()
{
    int n,score,A=0,B=0,C=0,D=0,E=0;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&score);
        score=score/10;
        switch(score)
        {
            case 10:
            case 9:A++;break;
            case 8:B++;break;
            case 7:C++;break;
            case 6:D++;break;
            default:E++;
        }
    }
    printf("A(90-100):%d\n",A);
    printf("B(80-89):%d\n",B);
    printf("C(70-79):%d\n",C);
    printf("D(60-69):%d\n",D);
    printf("E(0-59):%d\n",E);
return 0;
}