for (j=0; j<=3; j++)
{ if (j%2) continue; x++; } x++; }
printf(“x=%d\\n”,x); }
该程序的运行结果是 。 12.阅读下列程序:
#include “stdio.h” main()
{ int v1=0,v2=0; char ch; while ((ch=getchar())!=?#?) switch(ch)
{ case ?a?: case ?h?: default: v1++; case ?o?: v2++; }
printf(“%d,%d\\n”,v1,v2); }
在执行以上程序时,如果从键盘上输入:china#<回车>,则运行结果是 。
五、程序填空题:
1.完成下面给出的部分程序,函数所表示的数学函数关系是: 0 (x<0)
y = -1 (x=0) 1 (x>0) main() { int x,y; scanf(“%d”,&x); y= ;
if(x!=0) if (x>0) y= ; else y= ;
}
2.根据以下函数关系,对输入的每个x值,计算出相应的y值。
X Y X<0 0
16
0≤X<10 X 10≤X<20 10 20≤X<40 -0.5X+20 main() {int x,c,m; float y;
scanf(“%d”,&x);
if ( ) c=-1; else c= ; switch(c)
{case –1:y=0;break; case 0:y=x;break; case 1:y=10;break; case 2:
case 3:y=-0.5*x+20;break; default:y=-2; }
if ( ) printf(“y=%f”,y); else printf(“error\\n”); }
3.假设奖金税率如下(a代表奖金,r代表税率) a<500 r=0% 500≤a<1000 r=5% 1000≤a<2000 r=8% 2000≤a<3000 r=10% 3000≤a r=15%
以下程序对输入的一个奖金数,求税率和应交税款以及实得奖金数(扣除奖金税后)。题中r代表税率,t代表税款,b代表实得奖金数。 main()
{ float a,r,t,b; int c; scanf(“%f”,&a); if (a>=3000) c=6;
else c= ; switch (c)
{ case 0:r=0;break; case 1:r=0.05;break; case 2:
case 3: ;break; case 4:
17
case 5:r=0.1;break; case 6:r=0.15;break; } t=a*r; b=a-t;
printf(“r=%f,t=%f,b=%f”,r,t,b);
}
4.求1!+2!+ … + 10! = ? ,程序如下:
#include “stdio.h” main()
{ int s,n,t=1;
for ( ; n<=10; n++)
{ t= ; s= ; } printf(“s=%d”,s); }
5.下列程序是求1+1/2+1/4+…+1/50的值。 #include “stdio.h” main()
{ int i=2;float sum=1.0; while( )
{ sum+=1/(float)i; ;} printf(“sum=%f”,sum);
}
6. 下列程序输出***** main() { int x=5;
do{printf(“*”);x--;}while( ); }
7. 下列程序输出23456 main()
{ int a=10,b=2,i;
for(i=b;i<=a;i++, ) printf(“%d”,i); }
22222
8.下列程序用公式π/6=1/1+1/2+1/3+…+1/n,求π的近似位直到最后一项的
-8
值小于10时为止。 #include “math.h” main()
{ long i=1;double pi=0;
while(i*i<=10e+8){pi= ;i++;}
18
pi=sqrt(6.0*pi);
printf(“pi=.6lf\\n”,pi); }
9.下列程序求1—1000间“用3除余2,用5除余3”的数,且一行打印10个数。
main()
{ int i=1,j=0;
do{ if ( )
{ printf(“%d”,i); j=j+1;
if ( ) printf(“\\n”); }
i=i+1;
}while(i<1000); }
10.下列程序求所输入的整数的所有因子。
#include “stdio.h” main()
{ int i=1,x;
scanf(“%d”,&x); for ( ; ; )
{ if (x%i==0) printf(“=”,i); i++; } }
11.试求个位数为6且能被3整除的5位数..(设i为统计所求数的个数, m为所求的5位数变量.)
#include “stdio.h” main()
{ int i, m;
for (i=0,m=10006; m<=99999; ) if ( ) { ; printf(“m=%d\\n”,m); }
printf(“i=%d\\n”,i); }
第四章 数组和字符串
一、
单项选择题:
19
1.对两个静态数组A和B进行如下初始化: static char A[]=“ABCDEF”;
static char B[]={?A?, ?B?, ?C?, ?D?, ?E?, ?F?}; 则下列叙述正确的是 。
A. A和B完全相同。 B. A和B只是长度相等。 C. A数组长度比B数组短。 D. A数组长度比B数组长。 2.下面的程序中 有错误(每行程序前面的数字是行号)。
1 #include
4 float a[3]; 5 int i;
6 for (i=0;i<3;i++) scanf(“%d”,&a[i]); 7 for (i=1;i<3;i++) a[0]=a[0]+a[i]; 8 printf(“%f\\n”,a[0]); 9 }
A. 没有。 B. 第4行。 C. 第6行。 D. 第8行。 3. 下述对C语言字符数组的描述中错误的是 。
A.字符数组可以存放字符串。
B.字符数组中的字符串可以整体输入、输出。
C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值。 D.不可以用关系运算符对字符数组中的字符串进行比较。 4. 定义如下变量和数组: int i;
int x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是 。
for (i=0;i<3;i++) printf(“%d,”,x[i][2-i]);
A. 1,5,9, B. 1,4,7, C. 3,5,7, D. 3,6,9, 5. 不能把字符串:Hello!赋给数组b的语句是 。
A. char b[10]={?H?, ?e?, ?l?, ?l?, ?o?, ?!?,?\\0?}; B. char b[10]; b=“Hello!”;
C. char b[10]; strcpy(b, “Hello!”); D. char b[10]= “Hello!”; 6. 若有以下说明:
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c=?a?,d,g;
则数值为4的表达式是 。
A.A[g-c] B. a[4] C. a[?d?-?c?] D. a[?d?-c] 7. 合法的数组定义是 。
20