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