输入输出:
-
C语言没有输入输出语句,不能进行IO操作,使用#include<stdio.h>
格式化输入输出:
-
格式化输入:
scanf(“格式控制串”, 地址表);
格式控制串:
%i/%d:输入十进制整数
%x/%X:输入十六进制无符号整数
%o:输入八进制无符号整数
%u:输入无符号十进制整数
%c:输入单个字符
%s:输入字符串
%e:输入指数形式的浮点小数
%f:输入小数形式的浮点小数
**注意:在格式控制串中不要写’\n’ -
格式化输出函数:
printf(“格式控制串”, 输出表);
格式控制串:1.%[修饰符],格式字符,用于指定输出格式
2.普通字符,原样输出
格式符:
%i/%d:输出十进制整数
%x/%X:输出十六进制无符号整数
%o:输出八进制无符号整数
%u:输出无符号十进制整数
%c:输出单个字符
%s:输出字符串
%e/E:输出指数形式的浮点小数
%f:输出小数形式的浮点小数
%g:输出e和f中较短一种
%%:输出百分号本身
修饰符:
m:输出数据域宽,数据长度<m,左补空格,否则原样输出
int a = 123
printf("%5d %2d\n", a, a); —> __123 123(我用下划线表示空格)
.n:对实数,指定小数点后几位数(四舍五入)
对字符串,指定时间输出位数
float f = 12.3
char s[5] = “hello”
printf("%08.3f, %.3", f, s); --> 0012.300, hel
-:输出数据在域内左对齐(缺省右对齐)
0:输出数值时指定左面不是要的空位置自动填0
#:显示输出八进制和十进制的前导字符的输入输出:
输入:getchar(); char c; c = getchar(); 输出:putchar(); putchar(c); 注意:putchar不带换行
字符串的输入输出:
输入:gets(); char str[20]; gets(str); 输出:puts(); puts(str); 注意:puts()带换行
“垃圾字符”的处理
1.getchar(); 2.%*c或scanf("%d ",&a),添加空格
控制语句:
顺序、分支(选择)、循环
分支:
if-else:
-
简易结构
if(表达式)
{
语句序列1;
}
else
{
语句序列2;
}
注意:1.语句序列如果只有一句,可以不写花括号,但是有多句就一定要写
2.else后面没有表达式 -
阶梯形式:
if-else-if
if(表达1)
{
语句序列1;
}
else if(表达式2)
{
语句序列2;
}
else if(表达3)
{
语句序列3;
}
…
else
{
语句序列n;
}
3.嵌套形式:{
if(表达式4)
{
if(表达式3)
{
if(表达式2)
{
if(表达1)
{
语句序列1.1;
}
else
{
语句序列1.2;
}
}
else
{
语句序列2;
}
}
else
{
语句序列3;
}
}
else
{
语句序列4;
}
注意:嵌套的层次不要太深
}
注意:else总是与上一个未配对的if配对
}switch语句:
switch (表达式) { case 常量表达式1:语句块1;break; case 常量表达式2:语句块2; break; …. case 常量表达式n:语句块n; break; default :语句块n+1; } 注意:switch表达式不能为浮点型 }
循环结构:
1.for: 一般形式:for(表达式1;表达式2;表达式3) { 语句序列; } 1.表达式1,只做一次,可省,前提是变量初始化 2.判断表达式2, 表达式2,也可省,死循环 3.表达式3:也可省,在语句序列里进行变量的操作 4。三个表达式可以同时省,形成死循环for(;;); 2.while: 一般形式:while(表达式) { 语句序列; } 3.do-while: 一般形式:do{ 语句序列; }while(表达式); 4.goto: 跳转 flag: 语句序列; goto flag; 6.辅助控制: break :结束本轮循环 continue :结束本次循环,继续下一次循环(即continue以下的语句不执行)