1.输入输出语句
1.1 格式输出
int printf(const char *format, ...);
格式控制串 输出表
格式控制串:
%[修饰符]格式符 控制输出的格式
普通字符: 原样的输出
格式符:
%d ---> 十进制整数
%o ---> 八进制
%x ---> 十六进制
%u ---> 无符号的十进制
%c ---> 单个字符
%s ---> 字符串
%f ---> 浮点数
%e ---> 指数
%g ---> %f 和 %e 较短的一种
%% --->输出%自己
修饰符:
m:输出的域宽,数据长度 < m ,左边补空格,否则实际输出;
.n:
实数: 小数点的位数
字符串:实际输出的位数
-: 左对齐
+:在指定有符号前面显示正号
l:
ld \ lu \ lx \ lo 精度为long
lf \ le \ lg 精度为double
1.2 格式输入
int scanf(const char *format, ...);
功能:从终端读取
参数: 格式控制串 和地址表
返回值:成功返回输入的个数;
在输入字符的时候会产生垃圾字符;
处理垃圾字符:
① 加空格
eg:
scanf("%c %c", &ch1, &ch2);
scanf("%c ", &ch1);
scanf("%c", %ch2);
②抑制符
eg:
scanf("%c%*c", &ch1);
scanf("%c", %ch2);
输入: A B --》正常得到结果;
③ getchar()
scanf("%c", &ch1);
getchar(); //将一个空格或者回车获取掉
scanf("%c", %ch2);
1.3字符的输入
函数原型:
int getchar(void);
功能:从终端读取一个字符;
返回值:返回读取到的字符
1.4字符的输出
函数原型:
int putchr(int c)
功能:将一个字符输入到终端;
参数:要输出的字符串;
返回值:返回要输出的字符串
1.5字符串的输入
函数原型:char * gets(char *s);
功能:gets()用来从标准设备读入字符并存到参数s所指的内存空间, 直到出现换行字符或读到文件尾为止, 最后加上NULL作为字符串结束。
参数:s为一个指针,指向一个空间的首地址
返回值: gets()若成功则返回s指针, 返回NULL则表示有错误发生。
由于gets()无法知道字符串s的大小, 必须遇到换行字符或文件尾才会结束输入, 因此容易造成缓冲溢出的安全性问题。建议使用fgets()取代。
1.6 字符串输出
函数原型:
int puts(const char *c);
功能:
将 C指向的字符串输出
返回值:
puts自带换行功能
换行:
puts("");
printf("\n");
putchar('\n');
1.7 字符串的输出
函数原型:
int puts(const char *s);
功能:
将s指向的字符串输出到终端
返回值:输出的字符个数
puts自带换行功能;
换行:
printf("\n");
putchar('\n');
puts("");
puts("hello")
char buf[32] = "hello";
puts(buf);
2. 控制语句
三种结构:
三种结构:
顺序结构、选择结构、循环结构
2.1 选择结构
2.1.1 if
if(表达式)
{
语句块;
}
// 表达式成立就执行语句块,否则不执行语句块
2.1.2 if-else
if(表达式)
{
语句块1;
}
else
{
语句块2;
}
// 如果表达式成立,执行语句块1,否则执行表达式2。
else总是与最近的if相结合。
2.1.3 if-else if……else阶梯结构
if(表达式1)
{
语句块1;//表达式1成立则执行语句块1
}
else if (表达式2)
{
语句块2;//表达式1不成立,表达式2成立则执行语句块2
}
else if(表达式3)
{
语句块3;// 表达式1、2不成立。表达式3成立则执行语句块3
}
else
{
语句块4;//表达式1、2、3都不成立,则执行语句块4
}
2.1.4 嵌套结构
if(表达式1)
{
if(表达式2)
……
{
}
else
{
语句块2;// 表达式1成立,表达式2不成立;
}
}
else
{
语句块1://表达式1不成立
}
2.2 goto跳转
eg:
flag:
语句块:
……
goto flag;
2.3 while
while(表达式)
{
循环体;
}
表达式成立,执行循环体
2.4 do while
do
{
循环体
}
while(表达式);
先执行循环体,再进行表达式的判断。循环体至少执行一次。
2.5 for
for( 表达式1;表达式2 ;表达式3 ;)
{
循环体
}
for循环顺序:
执行表达式1;
判断表达式2;
若表达式2成立,执行循环体
执行表达式3;
判断表达式2,成立执行循环体,不成立则退出循环
for循环中的表达式可以省略,但“;”不能省略,如果表达式2省略,相当于死循环
2.6 辅助控制语句
break:跳出当前循环(用在Switch中跳出switch)
continue:结束本次循环继续下一次循环
return:结束程序