第六章 循环结构程序设计
基础练习(A)
一、选择题
1、C语言中while和do-while循环的主要区别是(A)。
A) do-while的循环体至少无条件执行一次
B) while的循环控制条件比do-while的循环控制条件严格 C) C) do-while允许从外部转到循环体内 D) do-while的循环体不能是复合语句
2、以下描述中正确的是(C)。
A) 由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B) do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C) 在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作
D) do-while循环中,根据情况可以省略while 3、设有程序段 int k=10; while(k) k=k-1; 则下面描述中正确的是( A )。 A)while循环执行10次 B)循环是无限循环 C)循环体语句一次也不执行 D)循环体语句执行一次 4、下列循环语句中有语法错误的是( D )。
A) while(x=y) 5; B) while(0) ;
C) do 2;while(x==b); D) do x++ while(x==10);
5、已知int i=1; 执行语句while (i++<4) ;后,变量i的值为( C )。
A) 3 B) 4 C) 5 D) 6 6、语句while(!E);中的表达式!E等价于( A ) 。 A)E==0 B)E!=1 C)E!=0 D) E==1 7、下面程序段的运行结果是( A )。 a=1; b=2; c=2; while(a main() { int num=0; while(num<=2) { num++; printf(“%d\\n”,num); } } A)1 B)1 C)1 D)1 2 2 2 3 3 9、以下能正确计算1×2×3×…×10的程序段是( C )。
A)do{i=1; s=1; B)do{i=1; s=0; s=s*i; s=s*i; i++; i++; }while(i<=10); }while(i<=10); C)i=1; s=1; D)i=1; s=0; do{s=s*i; do{s=s*i; i++; i++; }while(i<=10); }while(i<=10); 10、下面程序的运行结果是( D )。 #include
while(i) switch(i)
{ case 1: i+=1;j++;break; case 2: i+=2;j++;break; case 3: i+=3;j++;break; default: i--;j++;break; }
A) 1 B) 2 C) 3 D) 死循环
12、若运行以下程序时,从键盘输入2473<回车>,则下面程序的运行结果是( #include
1、执行下面程序段后,k值是 36 。 k=1; n=263; do{ k*=n; n/=10; }while(n); 2、下面程序的运行结果是 s=254 。 #include
A )。 }
3、下面程序段的运行结果是 * * 。 x=2; do{ printf(“*”); x--; }while(!x==0);
4、运行以下程序时,从键盘键入China#
是 5,5 。
#include
1、 编程求1*3*5*7*9的值
2、编写程序计算下列算式的值:
直到某一项A<=0.000001时为止。输出最后C的值。
3、从键盘输入的字符中统计数字字符的个数,用换行符结束循环。 1、参考答案: main() { int i;
long p=1; do { p=p*i; i=i+2;
} while (i<=9);
printf(“1*3*5*9=%ld\\n”,t); }
2、参考答案: #define E 0.000001 main()
{ float x,y=1,s=0;
printf(\; scanf(\; while(1/y>E) { s=s+1/y; y=y*x; }
printf(\; }
3、参考答案:
main() { int n=0; char c; c=getchar(); while(c!=’\\n’ )
{ if(c>=’0’&&c<=’9’) n++; c=getchar(); }
printf(“%d\\n”,n); }
能力提高(B)
一、选择填空题
1、下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个
数n,并输出m、n中的较大者,请选择填空。 #include
int m=0,n=0; char c;
while(( A )!=‘\\n’) { if(c>=‘A’&&c<=‘Z’) m++; if(c>=‘a’&&c<=‘z’) n++; }
printf(“%d\\n”,m (1) A)c=getchar() B)getchar() C)scanf(“%c”,c) (2) A)n:m B)m:n C)m:m D)n:n 2、下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择填空。 #include A)a==0 B)a C)!a==1 D)!a 3、下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。 #include } (1) A)n B)(n)*(n) C)n/10 D)(n/10)*(n/10) (2) A)n/1000 B)n/100 C)n/10 D)n 二、读懂程序,并按照程序的功能将程序补充完整 1、下面程序的功能是用“辗转想除法”求两个正整数的最大公约数。请填空。 #include 2、下面程序的功能是用do-while语句求1至1000之间满足“用3除余2;用5除余3; 用7除余2”的数,且一行只打印五个数。请填空。 #include 3、等差数列的第一项a=2,公差d=3,下面程序的功能是在前n项和中,输出能被4整除 的所有的和。请填空。 #include 第2讲 基础练习(A) 一、 选择题 1、下面有关for循环的正确描述是 (D )。 A) for循环只能用于循环次数已经确定的情况 B) for循环是先执行循环体语句,后判断表达式 C) 在for循环中,不能用break语句跳出循环体 D) for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 2、对for(表达式1;;表达式3)可理解为( B )。