首页 > 代码库 > 呵呵 记录一下

呵呵 记录一下

知识普及(来自网络):

1、printf("这个数是%*d.",b,a);
星号对应的是b,表示可以显示b位数字,也就是显示宽度为b位,这里就是3位。D对应a,打印整数类型。所以*是字符宽度。
但是在打印浮点数是%*.*f时,第一个*表示字符宽度,第二个*表示保留几位小数。
这是在PRINTF函数里面的用法
在SCANF里面就不一样了,他使函数跳过相应的输入项目。
比如,scanf("%*d,%*d,%d",&n);
这里让我们输入3个数字,但是到底哪个才会真正被附给变量n呢,
如果输入的是12,13,14
14才会被附给n,所以*跳过了前面两个输入项,取第三个输入项。

2、%+d对应输出正数时带有正号

 

题目描述:

求sn=a+aa+aaa+……+aa…aaa的值,例如,当a=2,n=4时,sn=2+22+222+2222。a和n的值由键盘输入。《竖式打印提示: printf("%+*d\n",n+5,temp);》

实例输出

<6空格9回车>将产生如下格式输出!

 

技术分享

 

代码:

 

#include<stdio.h>void main(){    int a,n,i,sum=0,temp=0,j;    printf("input a & n:");    scanf("%d%d",&a,&n);/*下面是在输出等式 sn=a+aa+aaa……*****************************/    printf("sum=%d",a);    for(i=1;i<n;i++){//大循环是在输出a+aa+aaa……        printf("+");        for(j=0;j<=i;j++)//这个循环对应输出i个a 即单个的加数            printf("%d",a);    }/*上面是在输出等式 sn=a+aa+aaa……********************************/    printf("\n");    printf("竖式如下:\n");    for(i=1;i<=n;i++)//这个循环是在输出竖式的”——“上面的部分    {        temp=temp*10+a;        //上面这是把i个a转换为一个由i个a构成的整数 aaaaaa…… 然后把它赋值给第一个temp        //注意:第2个temp是由(i-1)个a构成的整数,第一个temp则是i个a构成的整数        printf(i!=n?"%*d\n":"%+*d\n",n+5,temp);        /*        “表达式1:表达式2?指令1:指令2”        表示的是:        1、如果表达式1成立,则执行指令1        2、如果表达式2成立,则执行指令2        */        sum=sum+temp;//求和    }    for(i=0;i<=n+5;i++)//输出n+1个‘_‘,表示是分割        printf("_");    printf("\n");    printf("sum=%d\n",sum);//输出结果sum的值}


辅助图片(简单粗暴):

技术分享

 

呵呵 记录一下