关于国家计算机二级C语言的几个问题,高手来教教我吧.....十分感谢!!!!

最近在自学C语言,遇到几个问题,觉得很棘手,特来在此请教.......
1.scanf能不能读入空格,回车????我在网上看好像scanf不能读入空格,如果输入两个字符串,中间可以用空格或是回车隔开;后来我做题时发现有的题目写着如果输入两个字符串,中间不能用空格隔开,若用空格,则空格记入空格后面的那具字符串中,需用回车隔开,到底怎么回事啊??????????
2.关于switch语句
如题:
main()
{ int a,i;a=o;
for(i=1;i<5;i++)
{ switch(i)
{ case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;}
}printf("%d\n",a);}

我不明白的就是(1)若i=1,case0,case3是不是都不运行了,直接运行case1??若是i=2,直接执行case2,不执行case0,case3,case1???
(2)执行完case1,case1语句中无break,是不是接着执行case2?还是跳出本次循环,执行下一次循环????

就这些问题了,呵呵,请高手来解答下..........希望高手能留个QQ,便于以后交流....万分感激...........

1.scanf() 遇到空格和回车后会结束输入 所以其实scanf只会读到你空格或者回车前面的东西.而后面的变量将从键盘缓冲区中等待或者消失.我个人习惯scanf()函数中尽量不使用空格和回车

2.case后如果没有break 则执行下一个case语句.你用vs2008调试一下就可以了
按F10 逐句调试就好了.
(1)若i=2 就执行case2 default的.
(2)case1中无break就执行case2的 再执行case3 再执行default

最后答案a=31
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-02-04
2(1) I等于1的时候,CASE 0和3都不运行了。运行CASE 1.I等于2,运行CASE 2.其实当I等于1和2的时候都是运行A+=3;当I等于0和3的时候都是运行 A+=2;
没有BREAK语句的话,当你执行到那一步的时候,还会执行下面的。然后又运行下一次的循环。
第一题的,我不是很明白问题,
第2个回答  2010-02-04
不是诚信学的话,找个保过班算了
第3个回答  2010-02-04
(1)是
(2)不会立即跳出,会挨个判断,然后退出,不过不会执行别的case后边的东西
第4个回答  2010-02-04
看书吧
相似回答