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

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

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

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

Q&A

解決済

5回答

2465閲覧

異なる種類のデータを異なる方法で入出力するプログラムをscanfとprintfを使ってどう書くか

mMs7ScOiWNZzOie

総合スコア14

C

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

0グッド

0クリップ

投稿2018/05/02 10:25

編集2018/05/02 10:40
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main(void) { char a; int b; long c; float d; double e; scanf("%c", &a); printf("%3c", a); scanf("%d", &b); printf("%d", b); scanf("%ld", &c); printf("%ld", &c); scanf("%f", &d); printf("%f", d); scanf("%lf", &e); printf("%lf", e); return(0); }

入力の詳細
char [](文字列)型の変数を定義し、値 "りんご"で初期化します。
また、char、int、long、float、doubleの各変数を宣言します。 scanf関数を使用して、これら5つの変数の値を読み込みます。
出力の詳細
上で定義した各変数を次のように出力します。
char変数は幅1の文字で、3桁の整数です。
intは3桁、4桁、5桁の変数で、幅は1の文字です。
12桁の長い変数。
float変数:a)全体の幅が10で、小数点の後に4桁あります。 b)全体の幅が6で、小数点以下2桁。 c)全体の幅が6で、小数点以下3桁です。
二重変数:a)全体の幅が15で、小数点以下12桁。 b)オーバーラップ幅が20で、指数が小数点以下10桁。
文字列(型char [])変数:a)全体の幅が20です。 b)全体の幅が30で、左揃え。 c)全体の幅が30で、右揃え。
各出力には1行を使用します。

以上のようなプログラムを書きたいのですが最初からつまずいています。ソースコードをおしえてください。

入力例
A
113
1234567890
123.456
618254793320000

出力例
A
65
113
113
113
q
1234567890
123.4560
123.46
123.456
618254793320000.000000000000
6.1825479332e+14
りんご
りんご
りんご

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

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

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

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

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

guest

回答5

0

まずは一行文字列として読みこみ、示された各フォーマットのどれに該当するか判定するコード書きなされ。

投稿2018/05/03 03:25

episteme

総合スコア16614

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

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

0

入力はscanfは使わずに、fgetsで1行を取得して変換する、というコードは書けるでしょうか。
出力に関しては、printf のフォーマット文字列で対応可能ですね

投稿2018/05/02 23:02

y_waiwai

総合スコア87747

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

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

0

問題細かく読まずに、ちゃちゃっと答えると、
A => A, 65

C

1char v0; 2scanf("%c",&v0) ;printf("%c %d\n",v0,v0);

113 => 113,113,113,q ;

C

1int v1 ; 2scanf("%d",&v1);printf(":%3d:%4d:%5d:%c\n",v1,v1,v1,v1) ;

1234567890 => 1234567890

C

1int v2 ; 2scanf("%d",&v2);printf("%d\n",v2) ;

123.456 => 123.4560, 123.45, 123.456, 四捨五入されるので、123.46になる。

C

1float v3 ; 2scanf("%f",&v3);printf("%.4f %.3f %.5f\n",v3,v3,v3); 3//四捨五入を避けて、切り捨てにする 4printf("%.2f\n",((float)((int)(v3*100)/100.)) ;

618254793320000 => 618254793320000.000000000000 , 6.1825479332e+14

C

1double v4 ; 2scanf("%lf",&v4);printf("%.12lf,%.10le\n",v4,v4);

りんご=>りんご

C

1char v5[100] ; 2fgets(v5,10,stdin) ;v5[strlen(v5)-1] = 0 ; printf("%s\n",v5);

投稿2018/05/03 00:36

編集2018/05/03 00:59
gm300

総合スコア580

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

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

0

ファイルやキー入力読み取り時に値の型が不明であるならばscanfは危険です。例えば、fgetsを用いて一行を文字列としてchar配列に読み取り、この中身を条件分岐してint型なりdouble型なりの変数に載せ替えると良いと思います。

投稿2018/05/02 10:46

HogeAnimalLover

総合スコア4830

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

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

0

ベストアンサー

参考情報

  • 【C言語入門】scanfで数値、文字列の入力(sscanfの使い方も解説)

https://www.sejuku.net/blog/24965

投稿2018/05/03 01:16

katoy

総合スコア22324

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問