C语言switch问题

1、一定要有default吗?
2、case1:case3:printf();break;对吗
即case之间如果前一个是空的,可以并排吗
3、switch后可以不加括号吗
4、case3:
case3:printf();break;
对吗?
大家请不要带主观色彩啊 这是考试题 又不是我出的 我是初学者 很虚心的 但也不带你们这么批评人的呀

1:不一定要有default。但是一般来说外国的教材喜欢在每个switch中加一个default这是良好习惯的显示,因为default的意思是输入除case以外的字符的情况程序如何运行。
2:可以的
3:不可以,你得说明要输入什么类的数据,比如switch(a),这里的a不仅代表一个变量,更主要的是它代表了a变量的类型
4:不可以,第一个"case3:"后面少一个“;”
怎么说呢,看得出你是一个初学的朋友,作为初学的朋友不要把多个话句写在一行,就是老手也不会这样做的,这样不利于读更不利于标准化。为什么有C++,为什么有软件革命,为什么印度的程序员受世界的好评?这都是在于一个标准化的问题。你是初学者,这些都不是问题,有一个好的习惯是最重要的!希望你能好好学习C,认真思考!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-01
可以不要default啊,第二个不对,必须连续的哈,第三个对的
第2个回答  2010-01-02
1. 不一定。但是从预防bug的角度来说,最好有default。
2. 对。
3. 不可以
4. 不可以,缺少;。
你的问题2,4比较无聊。学习编程,要养成良好的习惯。不要在一行上放几个语句。不要编写可读性差或者依赖于编译器而通用性可移植性差的语句。记住,你是要编写简洁优美的程序而不是去测试编译器的细节。
第3个回答  2010-01-02
可以不用,用了也不一定就能满足我们需要做的,完全可以用if……else 来做,个人感觉C语言的switch不是很好用,还不如用if 条件判断,第二个貌似不对,空的这样写的 case 1:;这样才能表示一个语句,你完全可以试下,给个范例给你,你自己看看,结合楼上的朋友所说的:

#include<stdio.h>
main()
{
int i;
printf("please input a number:\n");
scanf("%d",&i);
if(i<0||i>100)
printf("ERRO");
else
switch(i/10)
{
case(10):;
case(9):putchar('A');break;
case(8):putchar('B');break;
case(7):putchar('C');break;
case(6):putchar('D');break;
default: putchar('E');
}
}
基本上就能把这个问题搞通
第4个回答  2012-07-22
4的一点: case 3:后面可以不要分号,表示执行与下一个case语句相同的操作,即内容与下一个case的内容相同
相似回答