输入函数留下的“垃圾”
#include<stdio.h>
int main(int argc, char *argv[])
{
int x;
char y;
scanf("%d", &x);
scanf("%c", &y);
printf("x=%d, y=%c\n", x, y);
return 0;
}
当执行上面程序时,容易输入一个数字,再按回车就结束了对y的输入
结果:

处理垃圾方法:
- 用getchar()清除
#include<stdio.h>
int main(int argc, char *argv[])
{
int x;
char y;
scanf("%d", &x);
getchar();
y = getchar();
printf("x=%d, y:%d, y=%c\n", x, y, y);
return 0;
}
运行结果:

第一个scanf后的getchar就把"回车"给接收了,字符y就从另外一个getchar获得,也就是回车后再次输入的字符。
- 用格式串中空格或"%*c"


控制语句

if-else语句
if语句概述
if(表达式)
语句块1
else
语句块2
#include<stdio.h>
int main(int argc, char *argv[])
{
float score;
printf("Please input your score:");
scanf("%f", &score);
if(score < 0 || score > 100)
{
printf("error\n");
}
else{
if(score >= 90)
printf("A\n");
else{
if(score >= 70)
printf("B\n");
else{
if(score >= 60)
printf("C\n");
else
printf("D\n");
}
}
}
return 0;
}
结果为:

注意:
语句块:当有若干条语句时,必须用{...}括起来
表达式:
-
一般情况下为逻辑表达式或关系表达式
-
也可以是任意类型(包括整形、实型、字符型、指针类型)
switch语句
switch语句的基本格式:
switch(表达式)
{
case 常量表达式1:语句块1;
break;
case 常量表达式2:语句块2;
break;
case 常量表达式3:语句块3;
break;
...
default:语句块n+1;
}
switch语句的使用:
每个常量表达式的值必须各不相同,否则将会出现矛盾。
当表达式的值与case后面的常量表达式值相等时,就执行此case后面的语句。
switch中表达式可以是整形、字符型表达式或枚举。
case常量只起语句标号的作用。
break语句用于强行跳出switch体,一般每个case后面应有一个break语句,default分支的break可以省略。
多个case可以执行一组语句。

网友评论