1.输出数据所占宽度
1.float a=12.346;
printf("%4.2f\n",a);//12.35 输出数据多于n2位,截去右边多余的小数,并对截去部分的第一位小数做四舍五入处理
2.float a=12.346;
printf("%.3f",a);//12.346不指定总宽度,仅指定小数位,其他有系统自动突破
3.float a=12.346;
printf("%3.0f",a);//空格12
4.float a=12.346;
printf("%.0f",a);//不输出小数部分
5.int a=3;
printf("%5d");//4个空格3
6.int a=3;
printf("%05d");//00003
7.int a=3;
printf("%.5d");//00003
8.float a=12.346
printf("%8.4f",a);//空格12.4360
9.float a=12.346
printf("%8.4f",a);//012.4360
10.char s[18]="a book";
printf("%.4s",s);//a bo n2小于字符串的长度,将只输出字符串的前n2个字符
2.字符串的长度
1.语句printf("%d\n",strlen("AFS\n\x2E"));输出结果是5
AFS是三个 \n一个 \x2E一个
2.语句printf("%d\n",strlen("AFS\n\\123"));输出结果是8
AFS是三个 \n一个 \\是转义字符\是一个 123三个
3.语句printf("%d\n",strlen("AFS\n\035\\"));输出结果是6
AFS是三个 \n一个 \035是一个八进制数 \\是转义字符\是一个
4.语句printf("%d\n",strlen("\x3Df\085\\"));输出结果是1
\x3DF是十六进制数 是一个 \085 不是八进制数 因此先是\0 \0结束字符串不做数
5.语句printf("%d\n",strlen("\x3Dde8965G\085\\"));输出结果是2
\x3Dde8965是个十六进制数 是一个 G是一个 \085 不是八进制数 因此先是\0 \0结束字符串不做数
6.语句printf("%d\n",strlen("\\TOP\t\65\""));输出结果是7
\\一个 TOP三个 \t一个 \65一个 \"一个
3.
char str[]={'s','t','r','i','n','g','!'};
以上定义了一个有7个元素的字符数组str,因为所赋初值的末尾没有串结束标志,因此不能认为在str中存放了字符串,这时不能把它当作字符串使用。正确格式应是:char str[]={'s','t','r','i','n','g','!','\0'};
4.
定义 float f1,f2,f3;
scanf("%f%f%f",&f1,&f2,&f3);
在输入整数和实数这类数值型数据时,输入的数据之间必须用空格、回车符、制表符(Tab键)等间隔符隔开,间隔符个数不限。即使在格式说明中人为指定了输入宽度,也可以用此方式输入。
若要给f1赋值10,f2赋值12.3,f3赋值1234567.89,输入格式可以是(输入的第一个数据之前可有任意空格):
10 12.3 1234567.89
此处
10
12.3
1234567.89
只要能把3个数据正确输入,就可以按任意格式添加间隔符。
5.设char *s="\ta\017bc";则指针变量s指向的字符串所占的字节数是:
首先,字节数不是指字符串长度,字符串长度比存储字节数少一。
\t 是一个转义字符 相当于键盘“Tab”键
a 普通字符
\017 转义字符 ASCII代码值为8进制数17即10进制数15的那个符号
b 普通字符
c 普通字符
字符串结束标志‘\0’
s是字符串类型。每一个都是char型变量;char型变量的二进制长度是8,也就是一个字节,
所以指针变量s 指向的字符串所占字节数是6 ,字符串长度是5.
6.如果函数值的类型与返回值类型不一致,以函数值类型为准。
如果形参与实参类型不一致,以形参类型为准。