switch语句和分支嵌套 视频演示中的问题
#include<stdio.h>int main()
{
char ch;
printf("成绩:");
scanf("%c",&ch);
switch(ch)
{
case'A':printf("分数在90分以上");break;
case'B':printf("分数在80-90分以上"); break;
case'C':printf("分数在70-80分以上"); break;
case'D':printf("分数在60-70分以上"); break;
case'E':printf("分数在60分以下"); break;
defaultt:printf("请输入有效成绩!");break;
}
return 0;
}
'A''B';'C';'D';'E'。这几个输入小写会出现default
'A,a'default
'A|a'default
'A','a'错误
在不另起一段代码的情况下输入a可以得到printf("分数在90分以上");
#include<stdio.h>
int main ()
{
int a,b;
char c;
printf("输入两个数:");
scanf("%d %d",&a,&b);
scanf("%c",&c);
if(a!=b)
{
if(a<b)
{
printf("%d<%d",a,b);
}
else
{
printf("%d>%d",a,b);
}
}
else if(a=b)
{
printf("%d=%d",a,b);
}
else
{
printf("%c请输入有效数字!",c);
}
return 0;
}
为什么会报错?语法错误? yixinwenxin 发表于 2019-9-23 17:12
大哥... 在不重复下面的代码情况下如何能让他做到 abcde 也能得到ABCDE的结果
#i ...
#include<stdio.h>
#include<ctype.h>//C专门处理字符的函数
int main()
{
char ch;
printf("成绩:");
scanf("%c",&ch);
ch = toupper(ch);//toupper()--输入小写返回大写 调用大写字母转换小写字母函数,兼容大小写。
switch(ch)
{
case'A':printf("分数在90分以上");break;
case'B':printf("分数在80-90分以上"); break;
case'C':printf("分数在70-80分以上"); break;
case'D':printf("分数在60-70分以上"); break;
case'E':printf("分数在60分以下"); break;
default:printf("请输入有效成绩!");break;
}
return 0;
}
兄弟,你的第一个问题说具体点 你的第二个问题,我试了下,没有报错 cplus 发表于 2019-9-22 21:44
兄弟,你的第一个问题说具体点
第一个问题在不另起一行代码的时候
输入a可以得到大写A的结果 cplus 发表于 2019-9-22 21:45
你的第二个问题,我试了下,没有报错
第二个问题代码有问题
在输入字母的时候
不会得到
printf("%c请输入有效数字!",c); 本帖最后由 理想小青年 于 2019-9-22 22:58 编辑
第二段代码错误:
错误:else if(a=b)并不是a = b
改为:else if(a == b)
上面case语句,最好加上作用域,防止过老的编译器有一些问题,像vc6
switch(ch)
{
case 'A':
{
printf("xxxxx");
}
break;
} 理想小青年 发表于 2019-9-22 22:57
第二段代码错误:
错误:else if(a=b)并不是a = b
改为:else if(a == b)
但是...
第二段代码输入字符得到的结果并不是
printf("请输入有效数字!"); yixinwenxin 发表于 2019-9-23 12:24
但是...
第二段代码输入字符得到的结果并不是
printf("请输入有效数字!");
你只判断了 a,b的数值
1. a != b
2. a == b
3. else 这个条件根部不成立
因为你输入的a,b两个数值要不相等,想么不相等,没有第三种可能的,所以永远不可能进入else 兄弟,第二个问题,加个判断就是了 兄弟,注意语法哦
defaultt:printf("请输入有效成绩!");break;
cplus 发表于 2019-9-23 14:46
兄弟,注意语法哦
defaultt:printf("请输入有效成绩!");break;
大哥... 在不重复下面的代码情况下如何能让他做到 abcde 也能得到ABCDE的结果
#include<stdio.h>
int main()
{
char ch;
printf("成绩:");
scanf("%c",&ch);
switch(ch)
{
case'A':printf("分数在90分以上");break;
case'B':printf("分数在80-90分以上"); break;
case'C':printf("分数在70-80分以上"); break;
case'D':printf("分数在60-70分以上"); break;
case'E':printf("分数在60分以下"); break;
case'a':printf("分数在90分以上");break;
case'b':printf("分数在80-90分以上"); break;
case'c':printf("分数在70-80分以上"); break;
case'd':printf("分数在60-70分以上"); break;
case'e':printf("分数在60分以下"); break;
default:printf("请输入有效成绩!");break;
}
return 0;
} cplus 发表于 2019-9-22 21:45
你的第二个问题,我试了下,没有报错
第二个问题自己解决了 加个char c[]=""定义
#include<stdio.h>
int main ()
{
int a,b;
char c[]="";
printf("输入两个数:");
scanf("%d %d",&a,&b);
scanf("%s",c);
if(a!=b)
{
if(a<b)
{
printf("%d<%d",a,b);
}
else
{
printf("%d>%d",a,b);
}
}
else if(a=b)
{
printf("%d=%d",a,b);
}
else(c);
{
printf("请输入有效数字!");
}
return 0;
} 换种判断方式,if else 或者这样
case'A':
case'a': printf("分数在90分以上");break; cplus 发表于 2019-9-25 19:57
或者这样
case'A':
#include<stdio.h>
#include<ctype.h>//C专门处理字符的函数
int main()
{
char ch;
printf("成绩:");
scanf("%c",&ch);
ch = toupper(ch);//toupper()--输入小写返回大写 调用大写字母转换小写字母函数,兼容大小写。
switch(ch)
{
case'A':printf("分数在90分以上");break;
case'B':printf("分数在80-90分以上"); break;
case'C':printf("分数在70-80分以上"); break;
case'D':printf("分数在60-70分以上"); break;
case'E':printf("分数在60分以下"); break;
default:printf("请输入有效成绩!");break;
}
return 0;
}
他这个代码我没有试验,不过我想要的其实就是他这个结果
我突然发现其实我的问题和课后题动动手的问题很像只不过我没看课后题的前提想出来这个问题所以陷入了自己的陷阱中
页:
[1]