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

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

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

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

配列

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

Q&A

解決済

3回答

1029閲覧

c言語 配列 初心者

masaki5759

総合スコア9

C

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

配列

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

0グッド

0クリップ

投稿2021/05/16 09:32

ボールドテキスト### 前提・実現したいこと
c言語初心者です。
10,20,30,40,50,60,で配列を初期化して、ループ処理により3で割った余りを表示するプログラムを作成したいです。
■■な機能を実装中に以下のエラーメッセージが発生しました。

エラーは出てないのですが、実行結果が求めてるものと異なっています。
number[i]: =1.000000

number[i]: =2.000000

number[i]: =0.000000

number[i]: =1.000000

number[i]: =2.000000

該当のソースコード

正しいソースコードを教えていただきたいです。よろしくお願いします????

#include 〈stdio.h〉

int main (){
int number[6]={10,20,30,40,50,60};
int i;
double x;

for(i=0;i<5;i++) { x = number[i] % 3; printf(“number[i] : %f¥n”, x); }

}

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

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

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

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

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

pepperleaf

2021/05/16 09:47

求める答えは何でしょう? 計算はあっていると思いますが、、、。 (10 %3 => 1) ただ、コードに全角文字が多用されているようですが、コンパイル通ります?
masaki5759

2021/05/16 09:50

求める答えは、初期化された配列のループ処理により3で割ったあまりを表示するって答えになります。 スマートフォンから自分の作ったソースコードを送ってますので全角になってるのですが、pc上では全て半角で作成してます。
thkana

2021/05/16 10:03

number[i]: =1.000000 number[i]: =2.000000 number[i]: =0.000000 number[i]: =1.000000 number[i]: =2.000000 というのは「正しい答え」なのですか? それとも、実際に出た答えなのですか? 間違っているようには思えないし、そのプログラムが(全角半角の修正でちゃんと動けば)その結果を出すし...状況がよくわかりません。
masaki5759

2021/05/16 10:11 編集

状況をうまく伝えられず申し訳ございません。 thkanaさんが記載していただいている答えは「正しい答え」ではありませんでして、3で割った余りを表示されているのが「正しい答え」になります。 余りが表示されていないため、余りが表示されるプログラムを教えていただけると嬉しいです????‍♂️
masaki5759

2021/05/16 10:20

thkanaさん申し訳ございません。 私の完全な認識の違いでございまして、1.2.0.1.2というのを渡しが余りってのを知らずに、小数点以下で表示されないといけないと勘違いしておりました。 ですので、間違えてる箇所はi<6のところで自己解決できました。 お手数おかけして申し訳ございません。アドバイス本当にありがとうございました。????
guest

回答3

0

余りを整数として得たいのであれば double x ではなく int x で宣言、printf で %dで出力すればよいかと思います。

投稿2021/05/16 10:25

Serbonis

総合スコア586

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

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

masaki5759

2021/05/16 10:54

整数として得た方が見やすいですね。 整数に置き換えます。ありがとうございます????
guest

0

自己解決

i<6で配列を全て処理できる

投稿2021/05/16 10:22

masaki5759

総合スコア9

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

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

0

printf(“number[i] : %f¥n”, x);

doubleの変数を出すなら、 %lf としましょう

投稿2021/05/16 09:35

編集2021/05/16 09:36
y_waiwai

総合スコア88042

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

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

thkana

2021/05/16 09:54

それは、有名なアレですね。 浮動小数点はdoubleでもfloatでもprintfの書式指定は%fというのが規格だったのですが、%lfと書く「誤り」があまりに多かったのでC99では規格に取り入れられてしまった、という。 (本当かどうかは知りませんが)
masaki5759

2021/05/16 09:54

printf上でも%lfとするのでしょうか?
masaki5759

2021/05/16 10:02

なるほど、つまりprintf上でも%lfとするんですね。ありがとうございます。 %lfに訂正して実行したのですが、実行結果に余りが表示されないのですが、修正箇所を教えていただけると嬉しいです????
thkana

2021/05/16 10:05

ちょっと文章がよくなかったか、誤解されてしまったような。 本来は"%f"と書くところ、"%lf"と書いてもいいことになった、ということです。 "%f"は間違いではありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問