[ad_1]
saya menulis sebuah program yang mencetak digit terbesar dari suatu angka
#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; }
jika berfungsi dengan baik tetapi jika saya memasukkan angka negatif katakanlah -432 saya akan mencetak 0, bukan 4. Bagaimana cara memperbaikinya?
Apa yang saya coba:
………………………………….
Solusi 1
C++
while (num > 0)
Ini akan gagal untuk angka yang kurang dari 0. Konversikan ke angka absolut sebelum pengujian akan memperbaikinya:
C++
num = abs(num); while (num > 0)
Solusi 2
Halo
Pertama-tama, kamu harus meletakkan WHILE pada IF(angka>=0), lalu kamu harus menjadikan bilanganmu positif di ELSE. misalnya, saya melakukan (num=num-2*(num);) ini. itu berhasil untuk saya. tentu saja Anda dapat menulis ini dengan lebih baik dengan fungsi.
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]
コメント