C语言
int scanf(const char *format, …);
scanf()
功能:按照某种格式向终端输入一串信息
参数:一个或者多个,一个字符串,用于填写想要呈现的信息内容,
后续参数由前期字符串中的格式的个数决定
返回值:正确输入的个数,如果第一个参数输入错误,返回0
int a=10,b=10;
scanf("%d %d", &a, &b);
printf("a=%d,b=%d\n",a,b);
垃圾字符回收机制
int不受影响
char:空格也是字符
char a=0,b=0;
scanf("%c%c", &a, &b);
printf("a=%c,b=%d\n",a,b);
空格的ascii码为32;
解决方案
通过空格回收一个或者多个空格、Tab
char a=0,b=0;
scanf("%c %c", &a, &b);//两个%c之间添加了一个空格
printf("a=%c,b=%c\n",a,b);
*抑制符(了解)
回收任意一个字符
char a=0,b=0;
scanf("%c%*c%c", &a, &b);//两个%c之间添加了一个空格
printf("a=%c,b=%c\n",a,b);
getchar()回收
char a=0;
scanf("%c", &a);
printf("a=%c\n",a);
char b=0;
scanf("%c", &b);
printf("b=%c\n",b);
原因是sanf输入‘q’和‘\n’,‘q’赋值给变量a,‘\n’进入暂存区,下次遇到输入输出时,优先从暂存区读取数据,‘\n’被赋值给了变量b。
char a=0;
scanf("%c", &a);
printf("a=%c\n",a);
getchar();
char b=0;
scanf("%c", &b);
printf("b=%c\n",b);
强制转化
float a = (float)5 / 2; // 强制转换只在当前这一行生效
printf("%f\n",a);
float b = 5 / 2;
printf("%f\n",b);
分支语句
顺序结构,分支结构,循环结构
switch语句
switch (变量或表达式)
{
case 常量1:
语句块;
break;
case 常量2:
语句块;
break;
default:
语句块;
break;
}
float a = 0;
scanf("%f",&a);
switch (a)
{
case 'A':
printf("AAA\n");
break;
case 'B':
printf("BBB\n");
break;
default:
printf("输入格式错误\n");
break;
}
注意:1.case对应的常量值不能为浮点数
2.每个case对应的分支需要加break,如果不加break,程序会从符合条件的分支语句开始一直执行,直到switch执行结束
或遇到break为止。执行完语句执行最后一条默认的命令