- ベストアンサー
構文エラー";"が型の前にありませんとは、どうしたら解決できるのですか。
キーボードから正の整数を読み取り、n個の奇数を加算しディスプレイにかきだすプログラムです。;が型の前に必要というエラーがずっとでてきて、でも足りないところはわからないのですが、何が違うのでしょう??もうわけがわからなくて困ってます。お願いします。 /*演習1-3*/ #include<stdio.h> int main() { int i; int n; int sum=0; printf("%d¥n",n); for (i=1;i<=n;i+=2); int scanf("%d",&n); sum+=i; printf("1+2+...+n=%d\n",sum); return 0; }
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
(1) #includeの次に半角スペースがない。 (2) 変数n を初期化していない。 (3) printf文の\(半角文字)が¥(全角文字)になっている。 (4) for文の最後に不要な ; が付いている。 ただし、これは、コンパイルエラーにはならない。 これらを修正すると、以下のようになります。 インデント(字下げ)は全角スペースを使用しているので、 そこはTABとかに直して使ってみてください。 #include <stdio.h> int main() { int i, m, n, sum; printf("正の整数(最大32767)を入力してください >"); scanf("%d\n", &m); printf("0~%dの奇数の合計を計算します\n", m); sum = 0; /* 奇数の合計 */ n = 0; /* 奇数の数 */ for(i=1; i<=m; i+=2) { sum += i; if( i==1 ) { printf("%d",i); } else { printf("+%d",i); } n++; } printf("=%d\n", sum); printf("0~%dまでの奇数の数は%dで、合計は%dです\n",m,n,sum); return(0); }
その他の回答 (2)
- Wr5
- ベストアンサー率53% (2173/4061)
>(intが32ビットの環境ならば0から約42億回までのどこか。現状では空ループなので一瞬ですが) 訂正です。 42億回でなく21億回…です。 i+=2を見逃していました。 ということで、for文をブロックに修正しても、 > printf("1+2+...+n=%d\n",sum); は正しくありませんが。 "1+3+...+n"ということになります。
お礼
ありがとうございます! 訂正します!
- Wr5
- ベストアンサー率53% (2173/4061)
>;が型の前に必要というエラーがずっとでてきて、でも足りないところはわからないのですが、何が違うのでしょう?? 一緒に行番号も表示されているかと思われますが。 その前後(このエラーだと表示された行より前)に問題があるかと。 > printf("%d¥n",n); ¥は半角だと思いますが……。 未初期化の変数を参照しているので表示される値は不定です。 後のループ回数を入力させたいのではないですか? > for (i=1;i<=n;i+=2); この行の最後の;は必要ですか? この場合空ループするだけですが意図したものですか? なお、ループ回数は不定です。(intが32ビットの環境ならば0から約42億回までのどこか。現状では空ループなので一瞬ですが) > int scanf("%d",&n); 何故intが書かれているのでしょう? ループ中に数字を入力させて合計値を算出したい。 というのであれば、for文のあとをブロックで囲む必要があります。
お礼
すみません。;がたりないっていわれたので、やたらにつけてみたのです!もう一度一から考え直してみます!ありがとうございました!!
お礼
詳しい回答をありがとうございました!! もう一度やってみます!!