嵌入式学习--C语言Day03
输入输出
按字符输入输出
用' '包裹单个字符
getchar
int getchar(void);
int a = getchar();
printf("%d\n",a);
功能 终端输入字符
参数 无
返回值 输入字符的ascii值
注:输入多个字符时,只识别输入的第一个字符
putchar
int putchar(int c);
int a = getchar();
putchar(a);
putchar(10);//or putchar('\n')
功能 终端输出一个字符
参数 字符的ascii值
返回值 字符的ascii值
注:参数也可输入字符,原因:输入字符,本质也是输入ascii值
按格式输入输出
prinft
int printf(const char *format, ...);
功能 按指定格式终端输出
参数 多个
返回值 输出的元素个数
格式:
%d == int
%c == char
%f == float %.nf == 保留n位小数
%lf == double
%p == 指针
%o %#o == 八进制
%x %#x == 十六进制
位宽:
%nd n要小于等于数据位宽才有效
int x = 6;
int y = 66;
int z = 666;
printf("%d\n",x);
printf("%d\n",y);
printf("%d\n",z);
printf("%3d\n",x);
printf("%3d\n",y);
printf("%3d\n",z);
结果:
6
66
666
6
66
666
scanf
int scanf(const char *format, ...);
功能 按照格式向终端输入
参数 多个
返回值 正确输入个数
int a = 0;
scanf("%d",&a); //&取地址符
printf("%d\n",a);
return 0;
垃圾字符回收
- 通过一个空格,回收一个或多个空格
char a = 0,b = 0;
scanf("%c%c",&a,&b); //scanf("%c %c",&a,&b);
printf("%c %d\n",a,b);
hq@ubuntu:~/24081/C_Day03$ ./a.out
q w
q 32
2.%*c
scanf("%c%*c%c",&a,&b);
printf("%c %c\n",a,b);
输入:wqw
打印:w w
3.getchar
多个scanf给char赋值时,回收scanf换行,一般对char类型使用,换行也是一个字符
scanf("%c",&a);
//getchar();
printf("%c\n",a);
scanf("%c",&b);
printf("%c\n",b);
回收前:
q
q
回收后
w
w
r
r
分支语句
if-else
基本格式
if(表达式)
{
语句块1;
}else
{
语句块2;
}
运行顺序:
分层结构
if(表达式)
{
语句块1;
}else if(表达式2)
{
语句块2;
}else
{
语句块3;
}
嵌套结构
if(表达式1)
{
if(表达式2)
{
语句块1;
}
}else
{
语句块2;
}
注:else前面必须有if,if后面可以没有else
switch-case
switch (表达式)
{
case 常量值1:
语句块1;
break;
case 常量值2:
语句块2;
break;
default:
语句块3;
break;
}
===================
case 后面的常量值只能是数字或字符
循环
for
for (表达式1; 表达式2; 表达式3)
{
语句块;
}
表达式1 循环变量赋初值
表达式2:终止条件
表达式3:增值
for (int i = 0; i < 5; i++)
{
prinft("%d\n",i);
}
嵌套
for(int i=0;i<5;i++)
{
for(int j=0;j<i;j++)
{
}
}
while
int i=1;
while(i<5)
{
printf("%d\n",i);
i++;
}