格式说明由“%”和格式字符组成,如%d,作用是将输出的数据转换为指定的格式输出。
具体:
%d 整型输出,%ld 长整型输出,%lld 为long long型输出,
%o 以八进制数形式输出整数,
%x 以十六进制数形式输出整数,或输出字符串的地址,输出的英文字母是小写,
%X 以十六进制数形式输出整数,或输出字符串的地址,输出的英文字母是大写,
%u 以十进制数输出unsigned型数据(无符号数),
%c 输出一个字符,
%s 输出一个字符串,
%f 输出实数,以小数形式输出,最多保留小数点6位,
%e 以指数形式输出实数,
%g 根据大小自动选f格式或e格式,且不输出无意义的零
注意:
printf 输出时不管是 %lf 和 %f 都是最多保留小数点6位;因此两者均可。
scanf 输入时 %lf 代表double型,而 %f 代表float型。
此外,用代码表示进制转换(本人新手,自己写的,有错误请指正):
#include <stdio.h>
#include <stdlib.h>
void main(){ //十进制转m进制,m>0
int n,m,i,j;
char x[100];
while(scanf("%d%d",&n,&m)!=EOF){ //n为输入数字
if(n==0) break;
memset(x,0,sizeof(x));
if(m==10) printf("%d\n",n);
if(m<10){ //二进制、八进制等
i=0;
while(n!=0){
x[i++]=n%m+'0';
n=n/m;
}
}
if(m>10){ //十六进制等
i=0;
while(n!=0){
if(n%m<10) x[i++]=n%m+'0';
else x[i++]=n%m-10+'A';
n=n/m;
}
}
if(m!=10){
for(j=i-1;j>=0;j--)
printf("%c",x[j]);
printf("\n");
}
}
}