[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,它会打印 0,而不是 4。我该如何纠正?
我尝试过的:
…………………………………………
解决方案1
C++
while (num > 0)
对于小于 0 的数字,这将失败。在测试之前转换为绝对数字将修复它:
C++
num = abs(num); while (num > 0)
解决方案2
你好
首先,您应该将 WHILE 放在 IF(num>=0) 上,然后您应该在 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]
コメント