お世話になっております。
「C実践プログラミング」という本を読んでいるのですが、この本には問題の
回答例がないようで、自分で作らないとダメみたいです。なんとか問題を解い
てきたつもりですが、マクロの説明のところの問題で分からなくなっています。
以下に問題文を示します。
実習10-2 引数が10進数の場合は真を返すマクロis_digitを記述してください。
で、僕なりに作ってみたソースが以下です。
c
1#include <stdio.h> 2#define is_digit(i) (0 <= i && i <= 9) ? 1 : 0 3 4int main(){ 5 6 int num; 7 int n; 8 char line[20]; 9 10 printf("数値を入力してください\n"); 11 fgets(line, sizeof(line), stdin); 12 sscanf(line, "%d", &num); 13 14 n = is_digit(num); 15 if( n == 0 ) printf("10進数ではありません\n"); 16 else if( n == 1 ) printf("10進数です\n"); 17 18 return 0; 19}
しかしこれでは0から9までの数字しか判定しません。
(-999999 <= i && i <= 9999999) ? 1 : 0
のようにしたら判定できる数字の範囲が広がりますがなにか違う気がします。
これは参考になるかどうか分かりませんが、別の問題の実習10-1を他の本を
参考にしたりして作った僕の回答例を下に載せます。
実習10-1 パラメーターが10で割り切れる場合は真を、そうでない場合は偽を
返すマクロを記述してください。
c
1#include <stdio.h> 2 3#define JUDG(i) (i%10==0) ? 1 : 0 4 5int main(){ 6 int num; 7 int n; 8 char line[20]; 9 10 printf("数値を入力してください\n"); 11 fgets(line, sizeof(line), stdin); 12 sscanf(line, "%d", &num); 13 14 n = JUDG(num); 15 if( n == 0 ) printf("10で割り切れません\n"); 16 else if( n == 1 ) printf("10で割り切れます\n"); 17 18 return 0; 19}
みなさんだったら実習10-2の問題をどのように解釈し、どのように回答するで
しょうか。参考までに教えて頂ければと思います。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/22 01:57