C语言求助(4道选择题)要说下怎么想的

下面程序的输出是____(选项竖着看)。
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

1.2 下面程序的输出结果是____。
main()
{ int a=1,b=0;
do
{ switch(a)
{ case 1: b=1;break;
case 2: b=2;break;
default : b=0;
}
b=a+b;
}while(!b);
printf("a=%d,b=%d",a,b);
}
A) 1,2 B) 2,1 C) 1,1 D) 2,2

从键盘上输入"446755"时,下面程序的输出是____。
#include <stdio.h>
main()
{ int c;
while((c=getchar())!='\n')
switch(c -'2')
{ case 0:
case 1: putchar(c+4);
case 2: putchar(c+4);break;
case 3: putchar(c+3);
default: putchar(c+2);break;
}
printf("\n");
}
A) 888988 B) 668966 C) 88898787 D) 66898787

下面程序的输出结果是____。
main()
{ int k=0;
char c='A';
do
{ switch(c++)
{ case 'A': k++;break;
case 'B': k--;
case 'C': k+=2;break;
case 'D': k=k%2;contiue;
case 'E': k=k+10;break;
default: k=k/3;
}
k++;
}while(c<'C') ;
printf("k=%d\n",k);
}
A) k=1 B) k=2 C) k=3 D) k=4

下面程序的输出结果是____。
main()
{ int x,i;
for(i=1;i<=100;i++)
{ x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
printf("%d ",x);
}
}
A) 39 81 B) 42 84 C) 26 68 D) 28 70

第一题:答案是 B。num=0这是初始值,下面进入while循环因为num<=2,所以做num++;这个表达式的值等价与num=num+1现在num=1了;然后就做printf打印出num的值是1。在进行判断num=1<2就在继续做num++,num变为了2在打印,再循环num=2<=2就再做num++,num现在变为3在打印,最后判断num=3>2所以跳出循环程序结束!最后答案就是 1 2 3 所以B
第二题:答案是A。a=1进入switch语句做case 1: b=1;break;这时b就变为1了啊!在做b=a+b;这时b=2了!在下面就做while(!b);那就退出do—while循环了!最后打印a=1,b=2整个程序结束所以答案就是A
第三题: 答案C 先做while((c=getchar())!='\n') 这时c=4在做switch(c -'2')所以就到了语句 case 2: putchar(c+4);break;这时就打印出8了!当4467输入时就自然打印出8889了但是请注意当输入5时做switch(c -'2')这时做的是case 3: putchar(c+3);
default: putchar(c+2);break;也就是说做到break为止switch语句一定要注意做到break才能跳出这整个switch所以当输入5时就自然得到87这2个数了!最后一个5也是87这2个得数;所以最后答案88898787
第4题:答案D先做switch(c++) ;做完做 case 'A': k++;break;因为C++是先用后++的
也就是说C++这时的值还是“A”做完之后做k++; 这时k=2了 然后因为while(c<'C')为真所以就做 switch(c++)这时做 case 'B': k--;(这时k=1)case 'C': k+=2;break;(这时k=3)是上面说过的先用在++;最后在做k++;(这时k=4)应为C已经变为了"C"所以跳出循环打印出k=4 所以答案:D
第5题:答案D 要是做题就把答案反带回去看它题目++你就——符合题意就OK了 要是上机的话可以单步调试来看看的!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-04-14
1.B num = 0,一直循环到num = 2,从0到2一共三次循环。每次打印的都是num+1,所以是1 2 3.

2.A do while循环,不论条件,先做一次。a是1,所以,先进case 1 ,b就为1,然后b=a+b,所以b就为2.进入判断循环条件!b,此条件不成立,因为2不为0,非后为0,0表示假。a的值没变,还是1,b的值为2

3.C 主要考察switch case中的break。没有break的语句要继续执行下一个case的语句,直到遇到break。switch的值是输入的值-2,所以446755就是224533,但是输入值没变,只是这个表达式c-'2'的值为224533.一次判断。并且由于没有break的case要继续执行,所以输出的数据的位数一定大于原来的数据。

4. C 首先明确C++是先使用c的值。所以第一次,进入的是case'A',第二次是case'B'

5.此题目只有方法。以四个选项分别带入原程序。方法是 结果/7 整除的话, 将结果-1再/3,整除的话,将结果再-1,再/2,整除的话,这个值就是输出。
第2个回答  2009-04-14
B; A; C ; C; D;
相似回答