[ad_1]
tôi đã viết một chương trình in chữ số lớn nhất của một số
#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; }
nếu hoạt động tốt nhưng nếu tôi nhập số âm, giả sử -432, nó sẽ in cho tôi 0, thay vì 4. Làm cách nào để sửa điều đó?
Những gì tôi đã thử:
………………………………………….
Giải pháp 1
C++
while (num > 0)
Điều này sẽ không thành công đối với các số nhỏ hơn 0. Chuyển đổi thành số tuyệt đối trước khi thử nghiệm sẽ khắc phục được:
C++
num = abs(num); while (num > 0)
Giải pháp 2
Xin chào
Trước hết, bạn nên đặt WHILE trên IF(num>=0), sau đó bạn nên đặt số của mình là dương trong ELSE. ví dụ: tôi làm (num=num-2*(num);) điều này. nó ổn với tôi. hoàn toàn bạn có thể viết điều này tốt hơn với hàm.
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]
コメント