.初学者不懂。
求助..菜鸟不懂。。
各位大大,我在学习printf用法的时候出现了些问题,求高手解答..
程序如下:
#include<stdio.h>
int main(void)
{
int x=1234;
float f=123.456;
double m=123.456;
char ch='a';
char a[]="hello,world!";
int y=3,z=4;
printf("%d %d\n",y,z);
printf("y=%d , z=%d\n",y,z);
printf("%8d,%2d\n",x,x);
printf("%f,%8f,%8.1f,%.2f,%.2e\n",f,f,f,f,f);
printf("%1f\n",m);
printf("%3c\n",ch);
printf("%s\n%15s\n%10.5s\n%2.5s\n%.3s\n",a,a,a,a,a);
return 0;
}
我希望倒数第二个输出是A,可它却输出了a,想问这是什么原因?
另外我希望知道关于这些代码如“%8d”、“%8f”、“%.2f”、“%2d”的意思,求懂得高手解疑!!!
------解决方案--------------------
你定义ch就这样的char ch='a';输出当然也是a了
%8d不足补以空格;多出按实际长度输出,其他同样道理
------解决方案--------------------
定义ch就这样的char ch='a',当然输出A
%8d表示输出字符占八个字符长度,不足八个长度空开,超过八个按实际长度输出。
------解决方案--------------------
各位大大,我在学习printf用法的时候出现了些问题,求高手解答..
程序如下:
#include<stdio.h>
int main(void)
{
int x=1234;
float f=123.456;
double m=123.456;
char ch='a';
char a[]="hello,world!";
int y=3,z=4;
printf("%d %d\n",y,z);
printf("y=%d , z=%d\n",y,z);
printf("%8d,%2d\n",x,x);
printf("%f,%8f,%8.1f,%.2f,%.2e\n",f,f,f,f,f);
printf("%1f\n",m);
printf("%3c\n",ch);
printf("%s\n%15s\n%10.5s\n%2.5s\n%.3s\n",a,a,a,a,a);
return 0;
}
我希望倒数第二个输出是A,可它却输出了a,想问这是什么原因?
另外我希望知道关于这些代码如“%8d”、“%8f”、“%.2f”、“%2d”的意思,求懂得高手解疑!!!
------解决方案--------------------
你定义ch就这样的char ch='a';输出当然也是a了
%8d不足补以空格;多出按实际长度输出,其他同样道理
------解决方案--------------------
定义ch就这样的char ch='a',当然输出A
%8d表示输出字符占八个字符长度,不足八个长度空开,超过八个按实际长度输出。
------解决方案--------------------
- C/C++ code
#include <stdlib.h> #include<stdio.h> int main(void) { int x=1234; float f=123.456; double m=123.456; char ch='a'; char a[]="hello,world!"; int y=3,z=4; printf("%d %d\n",y,z); printf("y=%d , z=%d\n",y,z); printf("%8d,%2d\n",x,x); printf("%f,%8f,%8.1f,%.2f,%.2e\n",f,f,f,f,f); printf("%1f\n",m); printf("%3c\n",ch-32);//在ASCII码表 'a'比'A'大32 printf("%s\n%15s\n%10.5s\n%2.5s\n%.3s\n",a,a,a,a,a); return 0; }
------解决方案--------------------
定义ch就这样的char ch='a',当然输出A
%8d表示输出字符占八个字符长度,不足八个长度空开,超过八个按实际长度输出。
------解决方案--------------------
C/C++ code#include <stdlib.h>
#include<stdio.h>
int main(void)
{
int x=1234;
float f=123.456;
double m=123.456;
char ch='a';
char a[]="hello,world!";
int y=3,z=4;
printf("%d %d\n",y,z);
printf("y=%d , z=%d\n",y,z);
printf("%8d,%2d\n",x,x);
printf("%f,%8f,%8.1f,%.2f,%.2e\n",f,f,f,f,f);
printf("%1f\n",m);
printf("%3c\n",ch-32);//在ASCII码表 'a'比'A'大32
printf("%s\n%15s\n%10.5s\n%2.5s\n%.3s\n",a,a,a,a,a);
return 0;
}
%d 十进制有符号整数
%u 十进制无符号整数
%f 浮点数
%s 字符串
%c 单个字符
%p 指针的值
%e 指数形式的浮点数
%x, %X 无符号以十六进制表示的整数
%0 无符号以八进制表示的整数
%g 自动选择合适的表示法
说明:
(1). 可以在"%"和字母之间插进数字表示最大场宽。
例如: %3d 表示输出3位整型数, 不够3位右对齐。
%9.2f 表示输出场宽为9的浮点数, 其中小数位为2, 整数位为6,
小数点占一位, 不够9位右对齐。
%8s 表示输出8个字符的字符串, 不够8个字符右对齐。
如果字符串的长度、或整型数位数超过说明的场宽, 将按其实际长度输出。
但对浮点数, 若整数部分位数超过了说明的整数位宽度, 将按实际整数位输出;
若小数部分位数超过了说明的小数位宽度, 则按说明的宽度以四舍五入输出。
另外, 若想在输出值前加一些0, 就应在场宽项前加个0。
例如: %04d 表示在输出一个小于4位的数值时, 将在前面补0使其总宽度
为4位。
如果用浮点数表示字符或整型量的输出格式, 小数点后的数字代表最大宽度,
小数点前的数字代表最小宽度。
例如: %6.9s 表示显示一个长度不小于6且不大于9的字符串。若大于9, 则
第9个字符以后的内容将被删除。
(2). 可以在"%"和字母之间加小写字母l, 表示输出的是长型数。
例如: %ld 表示输出long整数
%lf 表示输出double浮点数
(3). 可以控制输出左对齐或右对齐, 即在"%"和字母之间加入一个"-" 号可
说明输出为左对齐, 否则为右对齐。
例如: %-7d 表示输出7位整数左对齐
%-10s 表示输出10个字符左对齐
实践出真知,自己试试输入试试!!!