[ad_1]
数値の最大桁を出力するプログラムを書きました
#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; }
[ad_2]
コメント