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;
}
} 展开
#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;
}
} 展开
5个回答
展开全部
#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;
}
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;
}
展开全部
#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;
}
}//大括号结束
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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!");
如:
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!");
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的两个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;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询