码迷,mamicode.com
首页 > 其他好文 > 详细

呵呵 记录一下

时间:2015-01-14 21:14:56      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

知识普及(来自网络):

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的值
}


辅助图片(简单粗暴):

技术分享

 

呵呵 记录一下

标签:

原文地址:http://www.cnblogs.com/yanglingwell/p/4224796.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!