早めの回答をしてくださると助かります...!!
現在、高等専門学校でC言語のポインタの範囲を勉強しています。
上のような問題を解いています。プログラムの添削、またはここの部分はこうした方がいいじゃないかというのがあれば教えていただきたいです。よろしくお願いします。
c言語
1#include <stdio.h> 2 3void convert(int *answer, int org) { 4 *answer = 0; 5 6 //1の位の数字を求める 7 int last_digit = org % 10; 8 9 //orgの桁数を求める 10 int num_digits = 0; 11 int tmp = org; 12 while (tmp != 0) { 13 num_digits++; 14 tmp /= 10; 15 } 16 17 //answerに1の位の数字を連結する 18 for (int i = 0; i < num_digits; i++) { 19 *answer = *answer * 10 + last_digit; 20 } 21} 22 23int main(void) { 24 int org; 25 int answer = 0; 26 27 //自然数を入力 28 scanf("%d", &org); 29 30 //convert()関数をコール 31 convert(&answer, org); 32 33 //結果を表示 34 printf("%d\n", answer); 35 36 return 0; 37} 38
提示しているコードではどういう結果となるんでしょうか。
また、それをどういうふうにしたいという話なんでしょう。
実行結果は、
(入力)123
(出力)333
というようにできたのですが、コードがこの問題の条件をすべて満たしているのかな..と思ったので質問をしました。条件をすべて満たしていないと0点だぞ!と先生に言われたので..。
自分でチェックはしたつもりですが、良ければ詳しい方にもチェックしていただきたいなと思いました。
意図が分かりにくく、申し訳ないです。
math.h の log10 は使っちゃいけないんでしょうか。
使うこと自体はOKだと思いますが、log10 が使えるんですか?
何乗かを求めるやつですよね。使い方が全く想像できないです...
int num_digits = (int)log10(org)+1;
とか。
すごい!そうやって桁数が求まるんですね!
高校数学の知識が使えるとは..知識増えました!
ありがとうございます
> orgの桁数を求める
こういうのは関数にすると若干すっきりするかも.
まぁ,問題文の指定のされ方的に別の関数を作るのがOKなのか否かよくわかりませんが.
関数化までしないのだとしても,
num_digits の値を求めている部分(line11 ~ line15)を {} で囲むとかすればどうかな.
回答2件
あなたの回答
tips
プレビュー