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

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

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

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

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

1回答

708閲覧

このソースコードは何が間違っていますか?

Yoshikita5412

総合スコア20

C

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

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2020/05/12 13:18

編集2020/05/13 13:33

C言語で初歩的なエラーをしています。

1~1000までの整数のうち素数を表示するプログラムを作ろうとしています。
しかし、17行目の割り算のところで処理が引っかかっているようです。
何が間違っているでしょうか?

#include<stdio.h>

int main()
{
int i,j,k;
float mod=0;
int N=1000;

printf("checkpoint1\n");

for(i=0;i<=N;i++)
{
printf("checkpoint2\n");
for(j=0;j<=N;j++)
{
printf("checkpoint3\n");
mod = i%j;
printf("%e\n",&mod);
if(mod != 0)
{
printf("%mod\n",&mod);
}
}
}
return 0;
}

{20200513追記}
ご回答ありがとうございます!
書き直しました!いろいろ思考錯誤しました。

あともう一歩のところまで来ました。
素数以外の数値を書き出すことが出来ましたが、肝心の素数を書きだすことが出来ません。
どう書き換えたらいいでしょうか?```c言語
コード

#include<stdio.h> int main() { int i,j,k,mod; int N=10; for(i=1;i<=N;i++) { for(j=1;j<=i;j++) { mod = i % j; if(j>1 && j<i) { if(mod==0) { break; } else { printf("%d\t",i); continue; } } } printf("\n\n"); } return 0; }

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

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

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

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

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

cateye

2020/05/12 13:24 編集

0での除算はありませんか? →https://ja.wikipedia.org/wiki/%E3%82%BC%E3%83%AD%E9%99%A4%E7%AE%97
Yoshikita5412

2020/05/12 13:27

あ、なるほど!ありがとうございます
Yoshikita5412

2020/05/12 13:35

初期値を1にしてみましたが…それでもうまくいきませんね
jimbe

2020/05/12 19:07

> 処理が引っかかっているようです コンピュータに「引っかかる」という状況はありません. エラーが表示されたのならその内容を併記してください. 何も表示無く終わってしまったり, 逆にいつまで経っても終わらないのでしたら, その様に書いてください.
Yoshikita5412

2020/05/13 15:28

ありがとうございます!確認します
guest

回答1

0

ベストアンサー

mod = i%j;・・・整数をfolatに入れて
printf("%e\n",&mod);・・・指数形式浮動小数点数で表示
printf("%mod\n",&mod);・・・全般に printf()にアドレスを渡しているのは何故ですか?
・・・各関数や演算子の仕様を確認しましょう。→stdio.h
以下のワーニングを全て修正しましょう。

text

1usr ~/Project/test % cc t1.c 2t1.c:15:21: warning: implicit conversion from 'int' to 'float' may lose precision [-Wimplicit-int-float-conversion] 3 mod = i % j; 4 ~ ~~^~~ 5t1.c:16:28: warning: format specifies type 'double' but the argument has type 'float *' [-Wformat] 6 printf("%e\n", &mod); 7 ~~ ^~~~ 8t1.c:17:20: warning: comparing floating point with == or != is unsafe [-Wfloat-equal] 9 if(mod != 0) { 10 ~~~ ^ ~ 11t1.c:18:34: warning: data argument not used by format string [-Wformat-extra-args] 12 printf("%mod\n", &mod); 13 ~~~~~~~~ ^ 14t1.c:5:17: warning: unused variable 'k' [-Wunused-variable] 15 int i, j, k; 16 ^ 175 warnings generated.

投稿2020/05/12 15:27

編集2020/05/12 15:40
cateye

総合スコア6851

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

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

cateye

2020/05/12 15:32

%modと言うような変換指定子はありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問