アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語の初心者です。
キーボードから値を入力して、1から入力された値までの奇数の和を求めて出力するプログラムを作成します。以下のように組んでみましたが、全然うまくいきません。誰か教えていただけませんか?

#include<stdio.h>

int main(void)
{
int i,n,sum;
sum=0;
printf("入力値:",n);
scanf("%d",&n);
if(n<=0)
{
printf("\n合計値:0\n");
}
else
{
printf("入力値:\n",n);
for(i= 1; i<= n; i=i+2)
{
if(n%2=1)
{
sum=sum+i;
}
}

}
printf("\n合計値\n",sum);
}

A 回答 (3件)

> printf("入力値:",n);



,n は不要です。nの値を出力する局面ではないです。

> printf("入力値:\n",n);

nの値を出力するには、%dなどの書式文字列が必要です。

> for(i= 1; i<= n; i=i+2)

iを2つずつ増やしていくのはまずいです。ここはあくまでも
1つずつ増やすようにしないと。

> if(n%2=1)

nが偶数かどうかではなく、iが偶数かどうかを判定してください。
また、判定の際、等号は1つでいいですか?
    • good
    • 0
この回答へのお礼

年末のお忙しい中、お答えいただきましてありがとうございました。

お礼日時:2007/12/30 19:23

おかしなところを訂正します。


>for(i= 1; i<= n; i=i+2)
(訂正1)for(i= 1; i<= n; i++)
>if(n%2=1)
(訂正2)if(i%2==1)
>printf("\n合計値\n",sum);
(訂正3)printf("\n合計値:%d\n",sum);
それぞれの理由を以下にまとめます。
訂正1:i++(あるいはi=i+1)でないとその次の商の余りのif文の意味がありません。
訂正2:代入してはif文を使って奇数の判定をする意味がありません。
訂正3:合計値を出力しなくては意味がありません。

他にも「入力値:」などの文字が2重に出力されるパターンがあります。
プログラムのフローを考えながら作ってみてはいかがでしょうか。
    • good
    • 1
この回答へのお礼

年末のお忙しい中、本当にありがとうございます。もう一度考え直して、年内には完成したいと思います。ありがとうございました。

お礼日時:2007/12/30 19:21

if(n<=0)


{
printf("\n合計値:0\n");
}
 
 不要。
 
    • good
    • 1
この回答へのお礼

年末のお忙しい中、お答えいただきましてありがとうございました。

お礼日時:2007/12/30 19:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!