質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

3回答

946閲覧

入力した値をケタごとに配列に入れる

unagiiiii

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/12/16 02:00

c言語で入力した値をケタごとに配列に入れるコードが知りたいです

<例>a=123を入力すると
b[0]=1
b[1]=2
b[2]=3となるコード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BeatStar

2021/12/16 02:09

自分でやりましょう。
SaitoAtsushi

2021/12/16 02:22

Teratail は自分のかわりにコードを書いてもらうというような依頼をする場所ではないです。 具体的にどこで躓いたのかを示しましょう。 https://teratail.com/help/question-tips Tetatail は相互に助け合うコミュニティです。 現時点ではともかく、将来的には質問者が回答者側になれる程度の知識を身に着けてくれるということを期待して回答者は回答しています。 逆にいえば知識を身に着けようとする意欲が感じられない場合には回答がつきにくいです。
guest

回答3

0

再帰を使ってみた。

C

1#include <stdio.h> 2 3size_t to_digits(unsigned int *digits, unsigned int n) 4{ 5 size_t count; 6 7 if (n == 0){ 8 return 0; 9 } 10 11 count = to_digits(digits, n / 10); 12 digits[count++] = n % 10; 13 14 return count; 15} 16 17int main(void) 18{ 19 unsigned int a; 20 unsigned int b[32]; 21 size_t count; 22 23 scanf("%u", &a); 24 printf("a = %u\n", a); 25 26 count = to_digits(b, a); 27 for (size_t i = 0; i < count; ++i){ 28 printf("b[%zu] = %u\n", i, b[i]); 29 } 30 31 return 0; 32}

投稿2021/12/16 10:10

shsh_

総合スコア113

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

  • 入力値の型が不明であるので,unsigned int だとした.
  • 入力処理は面倒だし本質的部分でないので省略(a の値を直接記述)した.
  • 配列 b の要素数はてきとーな固定値とした.

(このコードでは使わない余分な要素の値は 0 となる.)
入力値に見合う配列の要素数を決める部分はご自身で検討されたい.

C

1#define B_LENGTH (10) 2 3int main() 4{ 5 unsigned char b[B_LENGTH] = { 0 }; 6 unsigned char n = 0; 7 8 unsigned int a = 123; //input value 9 printf( "a = %u\n", a ); 10 11 while( a ) 12 { b[ B_LENGTH - (++n) ] = (a % 10); a /= 10; } 13 14 for( unsigned char i=0; i<B_LENGTH; ++i ) 15 { b[i] = ( i<n ? b[ B_LENGTH-n+i ] : 0 ); } 16 17 //show result 18 for( unsigned char i=0; i<n; ++i ) 19 { printf( "b[%u] = %u\n", (unsigned int)i, (unsigned int)( b[i] ) ); } 20 21 return 0; 22}

投稿2021/12/16 02:59

fana

総合スコア11708

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2021/12/16 03:02

配列 b の要素数に関しては log10 と ceil あたりを使って決めて → b は malloc とかで用意すればいいんじゃない?
guest

0

q=123 から始めて:

q(=123) を 10で割った商:qと余り:r は q=12 と r=3
q(=12) を 10で割った商:qと余り:r は q=1 と r=2
q(=1) を 10で割った商:qと余り:r は q=0 と r=1 (q=0になったら終了)

各工程で得られたrが各桁の値(逆順)です。

※ 文字列化して、"123" から一文字ずつ取り出すのもアリ

投稿2021/12/16 02:37

編集2021/12/16 02:40
episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問