【解決方法】C プログラムの数値の最大桁

プログラミングQA


数値の最大桁を出力するプログラムを書きました

#include <stdio.h>
int main(){
    int num ,  large = 0, rem = 0;
    scanf("%d" , &num);
    while (num > 0) {
                rem = num % 10;

                if (rem > large) {
                        large = rem;
                }

                num = num / 10;
        }

        printf("the biggest digit is %d\n", large);
        return 0;
  }

正常に動作しているが、-432 などの負の数を入力すると、4 ではなく 0 が表示されます。これを修正するにはどうすればよいですか?

私が試したこと:

……………………………………………

解決策 1

C++
while (num > 0)

0 未満の数値の場合、これは失敗します。テストで修正される前に絶対数値に変換します。

C++
num = abs(num);
while (num > 0)

解決策 2

こんにちは
まず第一に、IF(num>=0) に WHILE を設定し、次に ELSE の数値を正の数にする必要があります。 たとえば、これを (num=num-2*(num);) します。 それは私にとってはうまくいきます。 関数を使用すると、これをより適切に書くことができます。

C++
#include<stdio.h>
int main()
{
    int num,r=0,max=0;
    scanf("%d",&num);
    if(num>=0)
    {
        while(num>0)
        {
            r=num%10;
            if(r>=max)
            {
                max=r;
            }
            num=num/10;
        }
    }
    else
    {
        num=num-2*(num);
        while(num>0)
        {
            r=num%10;
            if(r>=max)
            {
                max=r;
            }
            num=num/10;
        }
    }
    printf("%d",max);
    return 0;
}

コメント

タイトルとURLをコピーしました