happy_1[1]_% cat kadai8-4.c #include #define MAX_LENGTH 100 /* 扱える最大文字数+1 */ main() { char string[MAX_LENGTH]; /* 変数宣言 */ int i,sum; printf("Input numerical string: "); /* Input numerical stringと表示 */ scanf("%s",string); /* stringに入力 */ i=0; /* 変数を初期化 */ sum=0; while (string[i]!='\0') { /* 文字列の終りまで */ sum=sum+string[i]-'0'; /* 0のコードを引いて、sumに足す */ i=i+1; /* 次の文字に移るため */ } printf("Result: %d\n",sum); /* 結果を表示 */ } happy_1[2]_% gcc -o kadai8-4 kadai8-4.c -lm happy_1[3]_% kadai8-4 Input numerical string: 20011210 Result: 7 happy_1[4]_% kadai8-4 Input numerical string: 123456789 Result: 45 happy_1[5]_% kadai8-4 Input numerical string: p Result: 64 happy_1[6]_% kadai8-4 Input numerical string: r Result: 66 happy_1[7]_% kadai8-4 Input numerical string: o Result: 63 happy_1[8]_% kadai8-4 Input numerical string: program Result: 424 「ヒント:'0'から '9'までは順にコードが並んでいるので文字(char)から '0' を引くと「数値」になる。」より、"p"のコードである112から "0"のコード48を引くと64になる。 同様にして、"r","o"はそれぞれ66,63になり、"program"はそれらの数値を 加算した結果になる。