#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,就是正确的,就执行第一个了