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输出格式%bfor ( i = 0 ; i<10; i + + )
{ j = i *10 + 6 ;
if (j%3!=0) continue;
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;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论