if else语句下面不能接switch语句么?

我想在输入成绩之前先判断输入的数值是否在正常范围内,这样写为什么出错啊,就是在ifelse跟swith语句之间的衔接,这该怎么写?#include<stdio.h>voi... 我想在输入成绩之前先判断输入的数值是否在正常范围内,这样写为什么出错啊,就是在if else跟swith语句之间的衔接,这该怎么写?
#include <stdio.h>
void main()
{
int num;
float C;

printf("成绩查询\n\n");
printf("请输入成绩:\n");
scanf("%f",&C);
if(C>100)
if(C<0)
printf("输入有误,请重新输入!");
else

num=(int)(C/10);
switch(num)
{ case 10:
case 9:
printf("成绩优秀!");
break;
case 8:
case 7:
printf("成绩优良!");
break;
case 6:

printf("成绩及格!");
break;
default:
printf("不及格!");

break;
}

}
展开
 我来答
yi_yi901
2013-09-09 · TA获得超过230个赞
知道小有建树答主
回答量:286
采纳率:100%
帮助的人:185万
展开全部
#include <stdio.h>
int main()
{
int num;
float C;

printf("成绩查询\n\n");
printf("请输入成绩:\n");
scanf("%f",&C);
//if(C>100)
// if(C<0)
// printf("输入有误,请重新输入!");逻辑上没有错误,但是对于c语言来说语法有错
//改为如下
if(C>100||C<0)
printf("输入有误,请重新输入!");
else
num=(int)(C/10);
switch(num)
{ case 10:
case 9:
printf("成绩优秀!");
break;
case 8:
case 7:
printf("成绩优良!");
break;
case 6:

printf("成绩及格!");
break;
default:
printf("不及格!");

break;
}
return 0;

}
bhtzu
2013-09-09 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4268万
展开全部
#include <stdio.h>
void main()
{
int num;
float C;

printf("成绩查询\n\n");
printf("请输入成绩:\n");
scanf("%f",&C);
//if(C>100||C<0)//这是优化后的写法,下面强调一下你原来写法的错误
if(C>100)
printf("输入有误,请重新输入!");
else if(C<0)//连续的条件判断,不可偷懒,这个和case语句的灵活不同
printf("输入有误,请重新输入!");
else
{//这里要加上大括号
num=(int)(C/10);
switch(num)
{  case 10:
case 9:
printf("成绩优秀!");
break;
case 8:
case 7:
    printf("成绩优良!");
break;
case 6:

printf("成绩及格!");
break;
default:
printf("不及格!");

break;
}
}//大括号结束
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
XHHISEA02274
2015-07-07 · TA获得超过8万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:3666万
展开全部
if else内部可以使用switch语句,只不过是独立的部分。
如:
int i,a;
scanf("%d",a);
i=0
if(a>0)
i=i+a;

switch(i){
case 1: 语句1

case 2: 语句2
default: 语句3

}

else
printf("wrong!");
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
紫素宇心
2013-09-10
知道答主
回答量:4
采纳率:0%
帮助的人:4.6万
展开全部
你的两个if是不可以这样用的,如果满足if语句就执行接在if后面的那条语句(注意:只是那一条),或者是{}里面括起来的语句。你的代码,如果满足C>100就执行if(C<0)这条语句,但是C是大于100的,不满足if(C<0)这条语句,所以printf(……);这条语句就不执行了,跳过去执行else后面的了。如果C<100,就不满足if(C>100),跳过if(C<0)这条语句,直接执行printf()。看得懂吗??你学了逻辑或吗?把那两个if语句改成if(C>100||C<0)就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-10
展开全部

有些标点符号没写对,另外建议多使用{}括号限制作用范围

if要用||做逻辑或操作

#include <stdio.h>
void main()
{
int num;
float C;

printf("成绩查询\n\n");
printf("请输入成绩:\n");
scanf("%f",&C);
if(C>100 || C < 0)
{
printf("输入有误,请重新输入!");
}
else
{
num=(int)(C/10);

switch(num)
{  case 10:
case 9:
printf("成绩优秀!");
break;
case 8:
case 7:
printf("成绩优良!");
break;
case 6:

printf("成绩及格!");
break;
default:
printf("不及格!");

break;
}
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式