1000以下の素数を求めるプログラム kadai7-2.c を作成せよ。各素数を整数4桁で出力し、15個の素数を出力した時点で改行処理 を行うこと。作成したプログラムを提出せよ。
という問題なのですが、以下のプログラムを実行しても動きませんでした。どこが違うのでしょうか。ご指摘お願いします。
#include<stdio.h>
#include<math.h>
main(){
int i,j,ix,k,h;
for (i=2;i<=1000;i++){
ix=(int)(sqrt((double)i));
k=0;
for(j=2;j<=ix;j++){
if(i%j==0){
k=1;
}
}
if(k==0){
printf("%4d",i);
h+=1
if(h=15){
printf("\n");
h=0;
}
}
No.5ベストアンサー
- 回答日時:
★ソースを掲載するのでしたら、必ずコンパイルしたものを・・。
(エラーが出たら、そのことを質問すれば・・)
>以下のプログラムを実行しても動きませんでした。
このソースでは、「実行」の前のコンパイルがとおりません。
コンパイラが表示する、エラー・警告を理解しましょう。
★プログラミング用テキストエディタを使いましょう。
フリーで使い勝手のいいものがたくさんあります。
"{"と"}"の「対」もチェックできます。
★自分のコーディングの形にこだわりを持ちましょう。
例)if(h=15){ は、if( 15 = h ){ と if文では数を前(◆)にしましょう。
こうすることで、= がひとつ足りないという単純なコーディングミスを
コンパイラが検出してくれます。
if(h=15){ 自体はエラーではなく、常に「真」で冗長な文です。
★コーディングでは、(タブを用い)必ず《インデント》しましょう。
下に、質問者様のソースを、全角空白2つでインデントしたものを示します。
}が2つ足りないことが判るでしょう。
(実際のコーディングでは、タブキー(\t)を用いて。ここでの全角空白は「回答」表現のため用いています)
main(){ // 関数名に付く"{"は1カラム目の"}"と対とする
int i,j,ix,k,h=0; // 修正
for (i=2;i<=1000;i++){
ix=(int)(sqrt((double)i));
k=0;
for(j=2;j<=ix;j++){
if( 0 == i%j ){ // ◆
k=1;
break; // 追加(なぜ・どこへ?考えて)
}
}
if( 0 == k ){ // ◆
printf("%4d",i);
h+=1; // 訂正
if( 15 == h ){ // 訂正 ◆
printf("\n");
h=0;
}
}
------質問者様のソースはここまで--------
}
return( 0 );
}
こだわりを持って綺麗にコーディングする→バグとりが楽になります。
No.4
- 回答日時:
これ、以下の質問と丸っきり同じですね(それどころか投稿者も同じです・苦笑)。
http://oshiete1.goo.ne.jp/qa3616488.html
まだ解けなかったんですか(笑)。
「エラトステネスの篩」のアルゴリズムは理解しましたか?
No.3
- 回答日時:
#include<stdio.h>
#include<math.h>
main(){
int i,j,ix,k,h;
h = 0; /* 一応念のため */
for (i=2;i<=1000;i++){
ix=(int)(sqrt((double)i));
k=0;
for(j=2;j<=ix;j++){
if(i%j==0){
k=1;
}
}
if(k==0){
printf("%4d",i);
/* セミコロンが足りない */
h+=1;
/* h = 15じゃないよ。h == 15 だよね?。*/
if(h==15){
printf("\n");
/* やらねばならぬことはh=0ではない。*/
break;
}
}
/* 閉じ括弧が足りない。 */
}
return 0;
}
No.2
- 回答日時:
どのようにうまくいかないかを説明しましょう
h +=1 は行末の『;』の記述がありません
if ( h=15 )では hが15になったかどうかのチェックはできません
比較演算子は == です
if ( h = 15 )ですと hに15を代入してしまいこの式は0にならないので毎回改行するでしょう
またhを0で初期化されていないので if(k==0)のブロック内でhが15に一致するかどうかは保障されません
あとご提示のソースでは『}』が2個足りないようです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C言語 3 2022/11/09 13:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
4の倍数を論理演算で表す。。
-
10個出力で改行したいのですが...
-
hit&bolwのプログラミングがで...
-
defineで定数が置き換えられな...
-
strcmp
-
c言語 プログラム ピラミッド
-
コンパイルすると『breakの位置...
-
パスカルの三角形についてのCプ...
-
C言語での、年複利の計算方法...
-
if文がコンパイルエラーを起こ...
-
Cでオセロゲームプログラム
-
コンパイルエラーについて
-
困ってます!Cプログラミングに...
-
error C2143: 構文エラー : ';'...
-
C言語です このプログラミング...
-
平均合計偏差値標準偏差の出し方
-
Cプログラミングのアルゴリズム...
-
C言語についてです学籍番号、名...
-
円の面積を求めるプログラミン...
-
コマンドプロンプトがすぐ消える
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
既約分数の表示プログラム
-
printf で二進表示を行いたい。
-
8人分のテストの点数を入力し、...
-
printf( " %2d", p * q );
-
strcmp
-
CTRL+Dでループを抜けるには
-
4の倍数を論理演算で表す。。
-
%P と %X の違い
-
【C言語教えてください】sin波...
-
c言語でAからZまでを表示する...
-
cshの文字列操作(0埋め)
-
万年カレンダーのC言語プログラ...
-
コマンドラインに出力した文字...
-
scanfに文字が入力されたときに...
-
コンパイルエラーについて
-
ホームページをC言語で作りたい...
-
改行について 1行に何個かづ...
-
台形の面積を求めるプログラム
-
なぜgccはstdio.hをインクルー...
おすすめ情報