C语言day04
【1】按照字符输入输出
1》输出:putchar
定义格式:int putchar(int c);
功能:按照字符输出,向终端输出一个字符
参数:要输出的字符的ascii值、字符
返回值:输出字符的ASCII值
2》输入:getchar
定义格式:int getchar(void)
功能:按照字符输入,从终端输入一个字符
参数:无
返回值:输入字符的ascii值
练习:
(1)尝试使用putchar和getchar完成小写字母转大写字母
输入:a
输出:A
复习练习:
答案:A C
注意:当有符号数和无符号数进行计算时,转成无符号数进行计算
【2】垃圾字符
垃圾字符:空格、tab、回车
回收垃圾字符的方法:%*c 空格 getchar
(1)%*c:只能回收一个字符
只能回收这两个字符中间的一个垃圾字符,要想回收多个,则需要多个%*c
(2)空格:可以回收多个
使用空格,这时你在这两个字符中间不论输入多少个垃圾字符,都不会影响终端读入有效字符。
(3)getchar:用于循环语句中
不加getchar
输入有效字符后会加一个回车来确认,这时这个回车会被当成垃圾字符存在缓冲区内,当下次循环时会会先读入缓冲区的垃圾字符,导致出现错误。
加上getchar后
getchar会把回车吃掉,这时就不会出现错误。
(4)强制转换:在需要转换的变量前面加括号,在括号内填入需要转换的类型(类型)
例:int a = 9;
float b = (float)a/2
这就是把整型的a强制转换为一个浮点型。
【3】分支语句
1》if else
语法:
if(表达式)
{
//当表达式成立执行的代码 代码块1
}else
{
//当表达式不成立执行的代码 代码块2
}
执行顺序:首先判断表达式是否成立,若成立执行代码块1,不成立则执行代码块2
注意:(1)if语句的花括号可以省略,但是省略后就只能控制紧跟在他后面的第一个语句了
(2)if语句后面可以没有else,但是els语句前面不能没有if语句
2》分层结构:if..... else if .... else if ......else
语法:
if(表达式1)
{
//当表达式1成立执行的代码 代码块1
}else if(表达式2)
{
//当表达式2成立执行的代码 代码块2
}else if(表达式3)
{
//当表达式3成立执行的代码 代码块3
}......
else{
//以上条件都不满足执行的代码 代码块4
}
执行顺序:判断表达式1,如果表达式1成立,执行代码块1,其他语句不再执行,但是如果表达式1不成立,继续判断表达式2,如果表达式2成立执行语句块2, 其他语句不再执行,.......如果所有表达式都不成立,执行执行else后面的代码块
3》switch case
语法:
switch(变量或表达式)
{
case 常量1:语句块1;break;
case 常量2:语句块2;break;
case 常量3:语句块3;break;
...
case 常量n:语句块n;break;
default:语句块n+1;
}
执行顺序:判断表达式的结果等于哪一个case后面的常量值,对应执行后面的语句块,break跳出(结束判断,后面代码不执行)如果所有case后面的值都不相等,执行default的语句块
注意:(1)switchd的表达式不能是字符串或浮点型
(2)case后面只能跟常量
(3)break 可以省略,省略后就不会跳出该语句,会紧跟着执行下一条语句