C语言哪些那不知道的输入和输出!!!
输入和输出就是简单的库函数scanf和printf,如果我们只会简单的输入输出那就有点太逊了。我们有时候在有些网站上OJ一些题目是经常会遇到一些特殊的输出。例如:保留小数点后几位,输出指定的宽度并指定是补0还是空格;让你右对齐;又或者是只让你输出一个字符串的前几位;
每次遇到你都会问度娘,今天在这我全部教会给你。
一.字符以及字符串的输入与输出
字符和字符串的输入分别用%c和%s,输出很简单,今天我们主要是输出;
%m.ns用于字符串的输出形式。m 规定输出项的总宽度、规定只输出字符串中前n个字符。若输出项的实际长度小于m,则左边补充空格否则,m不起作用。若输出项的实际长度小于:n,则不起作用;否则,只输出左边n个字符,多余的字符被截断。
例:
int main() { printf("%2s,%8s,%3.8s,%.3s\n", "study", "study", "study", "study"); return 0; }
解析:1.由于2小于字符的总长度5所以不起作用
2.8大于字符串的长度默认是空格补充(如果想要补充0,只需要在8前面加0)
3.由于3小于字符串的总长度所以不起作用,又因为8大于字符串的总长度所以可以全部打印
4.只输出字符串的前三位
如果我们想要按左对齐只需要在前面加个'-'就行
int main() { printf("%-2s,%-8s,%-3.8s,%-.3s\n", "study", "study", "study", "study"); return 0; }
二.浮点型的输入与输出
浮点型的输入和输出都是%f或%lf;
%m.nf用于实型数据输出形式,能自动进行末位小数的四舍五入。其中,m规定输出项的总宽度,n规定输出的小数位数(默认输出6位小数)。
①m的宽度大于实际数据位数,右对齐,左补空格;否则,m不起作用,输出宽度9位浮点数,小数位为3,小数点1位,整数1位,右对齐,左补4个空格)。
②如果在m.n之前加一个0,左边多余的空位用0而不是用空格填充,
③如果在m.n之前加一个“一”,则按左对齐的方式输出,
④ 如果n小于实际小数位数,则自动在结束位之后对数值四舍五入。
例:
int main() { float a = 3.1415926; printf("%f\n", a); printf("%.7f\n", a); printf("%.3f\n", a); printf("%9.3f\n", a); printf("%09.3f\n", a); printf("%-9.3f\n", a); return 0; }
解析:1.正常输出一个浮点型只可以输出小数点后6位;
2.如果我们想全部输出就是输出小数点后7位,但是由于浮点型在内存中的存储方式会导致精度的丢失;
3.输出小数点后3位(但是会四舍五入)
4.保留后三位并且输出宽度为9(输出宽度包括'.'),默认补空格
5.保留后三位并且输出宽度为9(加0表示将默认的补空格改为补0)
6.保留后三位并且输出宽度为9并左对齐
三. 整形的输入输出
整形的输入和输出包括%d(%i)(按十进制),%x(按十六进制),%o(按八进制),%u(按无符号位输出);
(1) %m.nd 用于整型数据输出形式,其中 m 指定输出项的总宽度,m为最小有效位数。
① 如果输出项的实际位数小于m,则左端补足空格直至m位;否则,m不起作用,即
按实际位数输出,
②如果在 m.n 之前加一个0,则在小于输出项实际位数的情况下,左边多余的空位用0而不是用空格填充,
③如果输出项的实际有效位数小于n,则左边补足0直至n位;否则,n不起作用,即按实际位数输出
④如果在m,n之前加上一个'-',则左对齐输出
int main() { int a = 10; printf("%d\n", a); printf("%4d\n", a); printf("%5.3d\n", a); printf("%04d\n", a); printf("%-4d\n", a);//左对齐 printf("%x\n", a); printf("%#x\n", a); printf("%#X\n", a); printf("%o\n", a); printf("%#o\n", a); return 0; }
解析:1.按十进制输出a
2.输出宽度为4(默认补空格)
3.输出宽度为5并且输出三个有效数字(有效数字不够补0)
4.输出宽度为4(补0)
5.输出宽度为4并且左对齐
6.按十六进制输出
7.按十六进制输出并且输出十六进制的标志(x小写)
8.按十六进制输出并且输出十六进制的标志(X大写)
9.按八进制输出
10.按八进制输出并且输出八进制的标志
最后整形的输入输出没有说%u,在这里给大家个题目做做,先卖个关子!!!
int main() { int i = -1; printf("%u\n", i); //输出值为多少? return 0; }
以上就是C语言所能看到有要求输出的所有内容,如果有不同的意见欢迎大家在评论区多多交流和指正;