格式化输入输出
一.输入函数scanf
1.scanf( <控制字符串>,<参数1>,<参数2>,···)
其功能是从标准输入中读字符,按<控制字符串>中所指定 的格式来解释它们,并将结果存储到相应的参数中。除<控制字符串>外,其他的每一个参数都必须是地址,它指出转换后的每一个输入数据赢存储的位置。
2.控制字符串包括普通字符和格式说明
普通字符(不能是%):必须在输入中输入与这些字符相同的字符
格式说明:由字符%开始,到转换字符结束,中间可有指明数据宽度的正整数.小写字母l和小写字母h
转换字符有d.o.x.c.s.e.f,此含义类似printf的转换字符,其中f与e的作用相同,用来输入实数
3.
定义 | scanf() |
int num | ”%d",&num |
char ch | "%c",&ch |
float f_num | "%f",&f_num |
double d_num | "%lf",&d_num |
int a[3] | "%d",&a[i] |
char src[100] | "%c",&src[i] |
char src[100],scanf("%c",&src[i])
二.输出函数printf
1.printf(<控制字符串>,<参数1>,<参数2>,···)
其功能是按照<控制字符串>,将参数转换成一定格式进行输出。
<控制字符串>是用双引号括起来的字符串,塔包括两种信息:
a.格式说明:它由%和转换字符组成,%d,%f等,作用是将输出的数据转换为指定的格式输出。格式说明总是由%开始,以转换字符结束。转换字符是有特定含义的单个字符,它决定数据以何种类型输出,如d代表十进制数。
b.普通字符:即按照原样输出的字符。
2.printf格式字符
格式字符 | 说明 |
d,i | 以带符号的十进制输出整数 |
u | 以无符号十进制形式输出整数 |
c | 以字符形式输出,只输出一个字符 |
s | 输出字符串 |
3.float——%f\n
double——%lf\n
无符号整型%u\n,如unsigned int u_num
int *p = &num——printf("p=%p\n",p)
\t 输出一个TAB(8字节)
4.printf注意事项,printf输出条件
a.printf是行缓冲,满一行或遇到\n才输出,如printf("hello world! \n")
b.程序结束输出
c.scanf用缓冲区输出,加一个scanf("%d",&num),清缓冲
5.printf使用技巧
printf("\033[字背景颜色;字体颜色m字符串\033[0m");
例:printf("\033[47;31mhello world\033[5m")
47是背景颜色,31是字体颜色,hello world是字符串,后面的\033[5m是控制码
三.运算符与表达式
1.i++先用再加(使用完毕再加)
++i先加再用
使用完毕,结束的标志:,() ;三个
计算num
int i = 2;
i = (i++)+(i++)+(i++)+(i++)
i = (++i)+(++i)+(++i)+(++i)
i = i*((i++)+(++i));
i = (i++)+(++i)+(i++)+(++i);
i = (++i)+(i++)+(++i)+(i++);
依次计算i = ?
12,19,19,15,16
2.类似于func(i++,++i)
适用于:++i被替换为变量名,i++被替换为数值
int i = 2;
func(++i,i++);
func(i++,++i);
func(++i,++i,i++,++i,i++);
func(i++,++i,i,i++,++i);
结果分别为(4,2),(3,4),(7,7,4,7,2),(5,6,6,3,6)