B)while循环控制条件比do-while的循环控制条件严格。 C)do-while允许从外部转入到循环体内。 D)do-while的循环体不能是复合语句。 参考答案:A
5.15 以下能正确计算10!的程序段是 。
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); 5.16 以下程序段 。
x=-1;
do x=x*x; while(!x);
A)是死循环 B)循环执行两次 C)循环执行一次 D)有语法错误 参考答案:C
5.17 以下描述中正确的是 。
A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。
B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。
C)在do-while循环体中,一定要有能使while后面表达式的值变为零(\假\的操作。 D)do-while循环中,根据情况可以省略while。 参考答案:C
5.18 若有语句如下,则程序段的输出是 。
int x=3;
do {printf(\
A)1 B)1和-2 C)3和0 D)死循环
*5.19下面程序的功能是计算正整数2345的各位数字平方和。
#include \main()
{int n,sum=0; n=2345;
do {sum=sum+【1】; n=【2】; } while(n);
printf(\
【1】A)n B)(n)*(n) C)n/10 D)(n/10)*(n/10) 【2】A)n/1000 B)b/100 C)n/10 D)n 参考答案:【1】B 【2】C
5.20 下面程序是从键盘输入学号,然后输出学号中百位数是3的学号,输入0时结束循环。请选择填空。
#include
{long int num;
scanf(\do
{if(【1】) printf(\ scanf(\}while(【2】); }
【1】A)num0/10==3 B)num/100==3 C)num/10==3 D)num/10==3
【2】A)!num B)num>0==0 C)!num==0 D)!num!=0 参考答案:【1】B 【2】C
5.21 等比数列的第一项a=1,公比q=2,下面程序的功能是求满足前n项和小于100的最大n,请选择填空。
#include
{int a,q,n,sum; a=1;q=2;n=sum=0; do
{【1】; ++n;a*=q;
}while(sum<100); 【2】;
printf(\}
【1】A)sum++ B)sum+=a C)sum*=a D)a+=sum 【2】A)n=n-2 B)n=n C)n++ D)n-=1 参考答案:【1】B 【2】D
5.22 下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除。请选择填空。
#include
{int i=0,j,k; do
{i++;k=316-13*i;}while( ); j=k/11;
printf(\}
A)k/11 B)k C)k/11==0 D)k==0 参考答案:B
5.23 下面程序的运行结果是 。
#include
do {y--;}while(--y); printf(\}
A)-1 B)1 C)8 D)0 参考答案:D