【问题标题】:Reversed Digits Histogram: Given one integer N, for each digit from the end of N, print a line of stars which has number of stars equal to that digit反转数字直方图:给定一个整数 N,对于 N 末尾的每个数字,打印一行星星,其中星星的数量等于该数字
【发布时间】:2014-07-07 18:10:13
【问题描述】:

给定一个整数 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");
    }
}

【问题讨论】:

  • 示例输出:*** ****** ******** **
  • 你了解%(余数)运算符吗?
  • 是的.. %10 返回数字的最后一位,但我怎样才能返回没有最后一位的原始数字?!
  • 使用/ 10,就像您的代码已经拥有一样。

标签: c++ histogram digits


【解决方案1】:

试试这个:

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;
}

【讨论】:

    【解决方案2】:

    我的五分钱。

    #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;
    }
    

    【讨论】:

    • 使标准库完成工作的好方法。不过,setw 会影响 operator&lt;&lt;(char),我有点惊讶。
    • 看看 OP 的代码,我会说他或她有点……嗯……还没有准备好。也许更基本的东西会更适合手头的当前知识......
    • @barak manos 当我展示一个更基本的代码时,马上就会出现一些白痴,因为他们认为这是原始的,所以对我的帖子投了反对票。
    • 哇,我不能再同意你了!!!特别是在标签显示 C++ 时使用 printf 之类的函数。好像这是手头问题的主要问题。
    • 这是一个这样的例子,当我回答一个问题时,虽然它被标记为 C++,但您很容易注意到 OP 的问题与 C++ 独有的特定语法无关,而是完全功能性的。我给出了这个答案:stackoverflow.com/a/21246119/1382251,并使用printf 只是为了给出一个使用示例。然后,正如您在 cmets 中看到的那样,您提到的其中一个白痴立即开始让我对它是 C 而不是 C++(包括否决票和所有内容)感到厌烦。
    猜你喜欢
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    相关资源
    最近更新 更多