簡體   English   中英

程序使用星號分隔數字

[英]Program to separate digits of a number using asterisk

我正在構建一個程序,該程序將要求用戶輸入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;
}

為了使用您的方法解決問題,在處理完數字后,您必須刪除數字中最重要的部分。 例如:

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所示。

您可以將數字轉換為字符串(或可能以字符串形式讀入輸入並對其進行驗證),然后一次將其打印一個字符:

 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] );

替代方法:使用字符串

您可以將輸入作為字符串char數組)來處理,而不用費神費力。 這將使您的工作更加輕松和整潔。

解決步驟

我建議您這樣做:

1.將輸入讀取為6個字符長的字符串。

2.打印' = ',即等號。

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

您可以使用模數%運算符使您的生活更輕松。

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

就像是...

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM