#include<stdio.h>
int main()
{
char ch;
printf("请输入成绩:\n");
scanf("%c",&ch);
switch(ch)
{
case'A':printf("你的成绩在90分以上!\n");break;
case'B':printf("你的成绩在80~90分之间!\n");break;
case'C':printf("你的成绩在70~80分之间!\n");break;
case'D':printf("你的成绩在60~70分之间!\n");break;
case'E':printf("你的成绩在60分以下!\n");break;
default:printf("请输入有效的成绩评级!\n");break;
}
return 0;
}
备注:break必须写,否则会出Bug
分支嵌套
#include<stdio.h>
int main()
{
int a,b;
printf("请输入两个数:");
scanf("%d%d",&a,&b);
if (a!=b)
{
if(a>b)
{
printf("%d>%d\n",a,b);
}
else
{
printf("%d<%d\n",a,b);
}
}
else
{
printf("%d=%d\n",a,b);
}
return 0;
}
类似于程序框图
谈谈bug else悬挂
约同学小花
问有没有空,如果有空,问下雨吗,如果下雨,带伞
如果没空,就else
#include<stdio.h>
int main()
{
char isRain,isFree;
printf("是否有空?(Y/N)");
scanf("%c",&isFree);
getchar();
printf("是否下雨(Y/N)");
scanf("%c",&isRain);
if (isFree=='Y')
if (isRain=='Y')
printf("记得带伞哦^-^\n");
else
{
printf("女神没空!T-T\n");
}
return 0;
}
备注:
getchar();是过滤回车,会把回车当成一个字符处理
这个程序还有bug
先输入Y再输入N就会出现女神没空
应该给第二个if加上大括号,因为else会与最近的if匹配
#include<stdio.h>
int main()
{
char isRain,isFree;
printf("是否有空?(Y/N)");
scanf("%c",&isFree);
getchar();
printf("是否下雨(Y/N)");
scanf("%c",&isRain);
if (isFree=='Y')
{
if (isRain=='Y')
{
printf("记得带伞哦^-^\n");
}
}
else
{
printf("女神没空!T-T\n");
}
return 0;
}
这样也有问题,应该这样
#include<stdio.h>
int main()
{
char isRain,isFree;
printf("是否有空?(Y/N)");
scanf("%c",&isFree);
if (isFree=='Y')
{
getchar();
printf("是否下雨(Y/N)");
scanf("%c",&isRain);
if (isRain=='Y')
{
printf("记得带伞哦^-^\n");
}
}
else
{
printf("女神没空!T-T\n");
}
return 0;
}
备注:必须用==,不能用=,否则系统认为=后面非0,就是正确的,就执行第一个了