- 締切済み
C言語について
次のような問題です。 問 自然数nを入力し、nを3で割って割り切れるかどうかを判定し結果を表示する。「割り切れる」、「1余る」、「「2余る」のいずれかが入るものとする。 このようなものをつくりました。 #include<stdio.h> int main(void) { int n; printf("自然数:"); scanf("%d",&n); if(n==0){ printf("割り切れる\n"); }else if(n==1){ printf("1余る\n"); }else{ printf("2余る"); } return(0); } これで合っているかよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
> scanf("%d",&n); > if(n%3==0){ > printf("割り切れる\n"); > }else if(n%3==1){ > printf("1余る\n"); > }else{ > printf("2余る"); > } まぁこれでもいいのですが n % 3 を複数回実行している部分が無駄のように思います 3で割り切れるかなので 2回の判定ですが 10で割り切れるとなれば9回実行しなければなりません scanf("%d",&n); // これを追加 n = n % 3; if (n == 0){ printf("割り切れる\n"); } else { printf("%d余る\n", n); } といった具合の方が効率がいいかも … # n余るの nを全角で表示したいとなるともう少し工夫が必要ですが
- TinyPine
- ベストアンサー率30% (719/2386)
これでは、0を入れた時に割り切れる、1の時に1余る、その他の時に2余るになってしまいます。 scanf("%d",&n); n = n % 3; <- これを入れる。 if(n==0){
補足
これではどうでしょう。 #include<stdio.h> int main(void) { int n; printf("自然数:"); scanf("%d",&n); if(n%3==0){ printf("割り切れる\n"); }else if(n%3==1){ printf("1余る\n"); }else{ printf("2余る"); } return(0); }