反转数字直方图:给定一个整数N,对于来自N末尾的每个数字,打印一行星数,其星数等于该数字

时间:2014-07-07 18:10:14

标签: c++ histogram digits

给定一个整数N,对于N末尾的每个数字,打印一行星数,其星数等于该数字C ++

示例输入: 2863

示例输出:

***
******
********
**

我的代码在12345,...等输入中工作。但不是在2863工作!!我不知道为什么以及如何编辑我的代码来处理这个问题!

#include <stdio.h>

int main()
{
    int b,d,j=0,num,num1,length=0,length1,x[100];
    float a,c;

    scanf("%d",&num);

    num1=num;

    while(num!=0){
        num/=10;
        length++;
    }

    length1=length;

    for(int i=0; length!=0; i++){
        a=(float)num1/10;
        b=num1/10;
        c=a-(float)b;
        d=c*10;
        x[i]=d;
        length--;
        num1=b;printf("%d\n",d);
    }

    while(length1!=0){
        while(x[j]!=0){
            printf("*");
            x[j]--;
        }
        length1--;
        j++;
        printf("\n");
    }
}

2 个答案:

答案 0 :(得分:0)

试试这个:

void print(int num)
{
    while (num > 0)
    {
        int digit = num%10;
        for (int i=0; i<digit; i++)
            printf("*");
        printf("\n");
        num /= 10;
    }
}

int main()
{
    int num;
    scanf("%d",&num);
    print(num);
    return 0;
}

答案 1 :(得分:0)

我的五美分。

#include <iostream>
#include <iomanip>


int main() 
{
    std::cout << std::setfill( '*' );

    while ( true )
    {
        const unsigned int Base10 = 10;

        std::cout << "Enter non-negative number (0 - exit): ";
        unsigned int n = 0;
        std::cin >> n;

        if ( !n ) break;

        std::cout << std::endl;

        do
        {
            std::cout << std::setw( n % Base10 + 1 ) << '\n';
        } while ( n /= Base10 );

        std::cout << std::endl;
    }

    return 0;
}