帮我做几道C语言的选择题,要过程

#include<stdio.h>
void main( )
{
int s;
while((s=getchar( ))!=’\n’)
{
switch(s-‘2’)
{
case 0:
case 1: putchar(s+4);
case 2: putchar(s+4); break;
case 3: putchar(s+3);
default: putchar(s+2); break;
}
}
printf(“\n”);
}
输入数据:2473<回车>
(A) 6688766
(B) 66778777
(C) 668966
(D) 668977
2. 下面程序的运行结果是【 】。
void 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
4
3. 若i为整型变量,则以下循环执行次数是【 】。
for( i=2 ; i==0; ) printf(“%d”,i--);
(A) 无限次 (B) 0次 (C)1次 (D) 2次

4. 下面程序的运行结果是【 】。
void main( )
{
int y=10;
do{ y--; } while( --y );
printf(“%d\n”, y--);
}
(A) 0 (B) 1 (C) 8 (D)-1
5. 以下程序段【 】。
x=-1;
do
{
x=x*x;
}
while(!x);
(A) 是无限循环 (B) 循环执行二次
(C) 循环执行一次 (D) 有语法错误
6. 设有程序段
int k=10;
while(k=0) k=k-1;
则下面描述中正确的是【 】。
(A) 循环语句一次也不执行 (B) 循环是无限循环
(C) while循环执行10次 (D) 循环体语句执行一次
7. 下面程序的运行结果是【 】。
#include<stdio.h>
void main( )
{
int i, j, x=0;
for(i=0;i<2;i++)
{
x++;
for(j=0;j<=3;j++)
{
if(i%2) continue;
x++;
}
x++;
}
printf(“x=%d\n”,x);
}
(A) x=4 (B) x=6
(C) x=8 (D) x=12

答案:(1)D
switch(s-‘2’)
{
case 0:
case 1: putchar(s+4);
case 2: putchar(s+4); break;
case 3: putchar(s+3);
default: putchar(s+2); break;
}
输入数据:2473<回车>
当2时 由于执行 case 0,1没有break语句,所以执行case 0,1,2,当执行到case2后的break时,跳出循环,相当于if((s-‘2’)==0)
{
case 0:
case 1: putchar(s+4);
case 2: putchar(s+4); break;

} ;输出 66;
当输入4时,执行case 2 语句,输出 8
当输入7时,执行default语句, 输出 9
当输入3时,执行case1,2,输出7,7
(2) B
while(num<=2)
{
num++;
printf(“%d\n”,num);
}
执行步骤1、当num=0时,进入循环 输出 1;
2、当num=1时,进入循环 输出2;
3、当num=2时,进入循环 输出 3;
4、当num=3时,不进循环,程序结束。
(3)答案 B
for( i=2 ; i==0; ) printf(“%d”,i--);
这条语句相当于
i=2;
if(i==0)
{
printf(“%d”,i--);
}
(4)答案A
void main( )
{
int y=10;
do{ y--; } while( --y );
printf(“%d\n”, y--);
}
该题 主要的题眼在于 y-- 和 --y的 作用;
例如 y=10;
i=y--;
结果是 i = 10 ;y=9;
y=10;
i=--y;
结果是 i = 9; y=9;
(5)答案 C
x=-1;
do
{
x=x*x;
}
while(!x);
执行步骤:
1、x=-1;
2、x=x*x;(x=1)
3、while(!X);(while (0))
(6)答案 A
int k=10;
while(k=0) k=k-1;
这段程序中的while语句,不是标准的while语句,内部不是比较语句而是赋值语句,
相当于
int k=10;
k=0;
while(k)// 相当于while(0)
{
k=k-1;
}
所以一次循环也不执行;
如果是
int k=10;
while(k=1) k=k-1;
则是死循环。
(7)答案是C
此题的主要是考虑continue关键字的用法。
continue是关键字。该语句的功能只是用在循环体中,执行该语句则结束本次循环,再去判断是否继续下次循环。该语句也是用于循环体中if语句内,即满足某种条件才结束本次循环。
以上是个人看法,由于水平有限,可能说的不完全正确,期望对楼主能起到一些作用。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-19
d a b a c a c
用手机发的 不太方便 主要注意符号细节就行
第2个回答  2011-04-19
D A B A C A C
解释都差不多;在这就不多说了;希望仔细看别人的解释;化为自己的;
第3个回答  2011-04-19
1.d 解答:输入2473 当输入2时s-'2'=0,执行case 0;case0与case1都没用break;所以显示结果为 66,当输入4时,s-‘2’=2,执行case2 ,显示为8;当输入为7时,执行default语句,显示为9.当输入为3时,执行case1,case1没有break,所以显示77综合所述选d。
2.首先num=0;满足while的条件,num自加得1,输出1;num=1满足while的条件num自加得2,输出2,num=2满足while的条件num自加输出3,所以最后输出结果为1 2 3
3.b i的初始值为2,不满足i==0,所以循环0次
4.A 虽然i的初始值为10,但一直在做do while循环,当i==0时,退出循环,再执行printf语句输出为0,然后i再再减
5.C执行一次循环x的值为1,!x为0,退出循环。
6.a,while的判断条件为k=0,不满足循环条件。
】7.c
相似回答