文章目录
输入输出
1.按格式输入输出
按格式输出
通过 man 3 printf 查看 printf函数
#include <stdio.h>
int printf(const char *format, …);
功能:按照指定的格式向终端输出
参数:format:字符串 “hello”
格式:
“%d” int
“%hd” short
“%ld” long
“%lld” long long
“%f” float
“%lf” double
“%c” char
“%s” 字符串
“%#x” 十六进制
“%#o” 八进制
“%p” 地址
“%e” 指数
“%- m .n” 含义:
.n:打印小数点后n位
m:位宽 // 当 m 大于实际位宽的时候,按 m 输出
// 当 m 小于实际位宽的时候,按照实际位宽输出
-:左对齐,默认右对齐
返回值:输出字符的个数(不常用)
按格式输入
#include <stdio.h>
int scanf(const char *format, …);
功能:按格式从终端输入
参数:同 printf;
返回值:正确输入数据的个数
当第一个数输入格式不正确时,会直接返回0
2.按字符输入输出
输入:
int getchar(void);
功能:从终端输入一个字符
参数:无
返回值:输入字符的ASCII值
输出:
int putchar(int c);
功能:向终端输出一个字符
参数:c:要输出字符的ascii值
返回值:要输出字符的ascii值
3.垃圾字符回收
通过空格回收
scanf(“%c %c”, &str, &ch);
可以回收一个或多个的空格、回车、tab
%*c
回收任意一个字符
scanf(“%c%*c%c”, &str, &ch);
getchar()
只能回收任意一个字符,一般用于循环里面
强制类型转换
int a = 5;
float b = (float)a / 2;
printf(“%f\n”, b); // 2.500000
printf(“%d\n”, a); // 5
分支语句
if
基本结构
if(表达式)
{
// 你符合这个条件的时候,就执行语句块1
语句块1;
}
else
{
// 你不符合这个条件的时候,就执行语句块2
语句块2;
}
分层结构
if(表达式1)
{
语句块1;
}
else if(表达式2)
{
语句块2;
}
…
else
{
// 都不符合条件
语句块n;
}
嵌套结构
if(表达式1)
{
if(表达式2)
{
语句块2;
}
else
{
语句块3;
}
}
else
{
语句块;
}
注意
1)if后面可以没有else,但是else前面必须有if
2)if和else后面{}可以省略,但是只能匹配之后的一条语句
switch_case
switch(变量或表达式)
{
case 常量1: 语句块1; break;
case 常量2: 语句块2; break;
case 常量3: 语句块3; break;
…
case 常量n: 语句块n; break;
// 如果以上都没有匹配的话,就执行 default 后面的语句
default: 语句块n+1
}
执行顺序:
判断switch后面的表达式的结果,和case后的常量相匹配,如果匹配成功,就执行对应的语句块,如果没有匹配成功就执行default后面的语句块,遇到break结束
循环
for循环
基本结构
for(表达式1; 表达式2;表达式3)
{
语句块;
}
表达式1:赋初值
表达式2:循环的终止条件
表达式3:增值减值语句
嵌套结构
for(表达式1; 表达式2; 表达式3)
{
for(表达式4; 表达式5; 表达式6)
{
语句块;
}
}