程序用星号分隔数字的数字

时间:2014-06-09 15:55:57

标签: c

我正在构建一个程序,要求用户输入一个5位数的正数。然后它将显示由星号分隔的每个数字。例如,如果用户输入51408,则输出将为5*1*4*0*8

但是,我似乎无法找到(数字的)单独数字的逻辑。我该怎么办?

现在,这是我的代码:

#include <stdio.h>

int main()
{
    int mnumber, num5, num4, num3, num2, num1;

    printf("Input number:");
    scanf ("%d", &mnumber);

    //these are the ones that i have trouble with i can't seem to get the logic//
    num5 = (mnumber/10000) / 1;
    num4 = (mnumber/1000) / 1;
    num3 = (mnumber/100) / 1;
    num2 = (mnumber/10) / 1;
    num1 = (mnumber/1) / 1;

    printf("=%d", num5); 
    printf("*%d", num4); 
    printf("*%d", num3); 
    printf("*%d", num2); 
    printf("*%d", num1); 

    return 0;
}

5 个答案:

答案 0 :(得分:1)

要使用您的方法解决问题,您必须在处理后删除数字中最重要的部分。例如:

num5 = mnumber/10000;
mnumber -= num5*10000;
num4  = mnumber/1000;
mnumber -= num4*1000;
num3 = mnumber/100;
mnumber -= num3*100;
num2 = mnumber/10;
mnumber -= num2*10;
num1 = mnumber;

但是,我认为转换为字符串然后打印出该字符串的每个字符会更加清晰,与星号交替显示,如@clcto所示。

答案 1 :(得分:1)

您可以将数字转换为字符串(或者可以在输入中将其作为字符串读取并对其进行验证),然后一次打印一个字符:

 char input_str[15];
 sprintf( input_str, "%d", mnumber );

 int len = strlen( input_str );
 if( len > 0 )
     printf( "%c", input_str[0] );

 for( int i = 1; i < len; ++i )
     printf( "*%c", input_str[i] );

答案 2 :(得分:1)

替代方法:使用字符串

您可以将输入视为stringchar数组),而不是陷入所有麻烦。这将使您的工作更轻松,更整洁。

解决的步骤

我建议您这样做:

1。将输入读取为长度为6个字符的字符串。

2。打印&#39; = &#39;即等号。

3. 使用循环逐个打印数字,每个数字前面都有一个     星号。

示例代码

如果您按照上述步骤操作,您将会得到类似的内容......

int main(void)
{
    //taking string input//
    char num[6];
    printf("Input number:");
    scanf("%s", num);

    //printing = and first digit//
    printf("=");
    printf("%c", num[0]);

    //printing * and digit// 
    for (int i=1; i<5; i++)
    {
        printf("*");
        printf("%c", num[i]);
    }

    return (0);
}  

答案 3 :(得分:0)

您可以使用模数%运算符让您的生活更轻松。

num5 = (mnumber/10000);
num4 = (mnumber/1000) % 10;
num3 = (mnumber/100) % 10;
num2 = (mnumber/10) % 10;
num1 = (mnumber/1) % 10;

答案 4 :(得分:0)

像...一样的东西。

char str[50];
char tmp[50];
str[0] = '=';
str[1] = 0;
while (mnumber>0)
{
     int n = mnumber % 10;
     mnumber /= 10;
     if (mnumber>0)
        sprintf (tmp,"%s%d*", str, n );
     else
        sprintf (tmp,"%s%d", str, n );
     strcpy ( str, tmp);
}
printf ("%s\n",str);