赞
踩
scanf
*在scanf中起到过滤的作用,就比如写入了三个数,而就只想要中间的数,那我们就可以应用 *
int main()
{
int b;
scanf("%*d %d %*d",&b);
printf("%d",b);
return 0;
}
下面还有一些相关的例子
int main() { int a = 1, b = 1; //输入2 2 scanf("%d %*d",&a,&b); printf("%d %d\n",a,b); //输入 2 a 2 a = 1, b = 1; scanf("%d %*c %d",&a,&b); printf("%d %d\n",a,b); a = 1, b = 1; //输入 2 abc 2 scanf("%d%*s%d",&a,&b); printf("%d %d",a,b); return 0; }
printf
*在printf中类似的用法我们也是见过的,和%5d的用法就很类似,但是 *的用法更加的灵活,它们都是用来限制输出宽度的,*的方法更加灵活,为动态输出格式。
int main()
{
int a = 2;
float b = 12.45f;
char* p = "abcdef";
printf("%*d\n",10,a);
printf("%*.*f\n",0,5,b);
printf("%*.*s",10,3,p);
return 0;
}
%*d和%5d的用法是完全一样的,%*.*f和%10.5f也是一样的,
小数点前面的为整体要输出多少位,意味着至少输出*个字符,其中“.”和“+”“-”也算入其中,而小数点后面的为小数点要保留多少位,意味着最多只能输出 * 个字节。
int main()
{
char* p = "abcdef";
printf("%3s\n",p);
printf("%*s\n",3,p);
printf("%.*s",3,p);
return 0;
}
如果所输出的字符串长度大于这个数,则按此宽度输出,如果小于,则输出实际长度
#这也是写这篇文章的主要目的,因为在写题的时候,碰到了该知识点,看到之后整个人是懵的。
题目:十进制整数1234对应的八进制和十六进制(字母大写),用空格分开,并且要求,在八进制前显示前导0,在十六进制数前显示前导0X。
下面这也就是答案了
#include<stdio.h>
int main()
{
printf("%#o %#X", 1234, 1234);
return 0;
}
例子:
#include<stdio.h>
int main()
{
//printf("%#o\n%#X", 1234, 1234);
printf("%o,%#o,%x,%#x",10,10,10,10);
return 0;
}
%g和%G它们两个效果是相同的
以%f%e中较短的输出宽度输出单、双精度实数,至多6位有效数字(例:0.00314159这就属于有效数字6位,前面的零并不是有效数字),去除多余的0,在保留精度的时候还会进行四舍五入。
当指数大于等于6或小于等于-5时,使用%e。
#include <stdio.h>
int main()
{
printf("%f\n", 12.3);
printf("%g\n", 12.3);
printf("%f\n", 12.3 + 12.7);
printf("%d\n", (int)(12.3 + 12.7));
printf("%g\n", 12.3 + 12.7);
printf("%g\n",2.555566);//最多六位有效数字
printf("%.5g\t%.5g\n", 2.255555e13, 2.3456789);
//这里可以自己控制精度
return 0;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。