• 締切済み

C言語のプログラミングです

#include<stdio.h> main() { int ip,amt; ip=1; amt=0; while(ip!=0){ if(0 == ip % 2){ printf("値を入力してください>"); } else{ amt += ip; printf("%d" , amt); } } printf("偶数の総和は%dです",amt); return 0; } を作成したのですが、上手く実行されませんでした。 「入力された値が偶数の時のみ総和に加えるプログラム」になるように、初心者にもわかるように解説していただけませんか?

みんなの回答

  • POMPUG
  • ベストアンサー率60% (3/5)
回答No.2

すでに他の回答に指摘があるように入力値を読み込んでませんね。 動くプログラムを書いたので、比較してみてください。 説明はコメント参照。 #include<stdio.h> int main(int argc, char ** argv) { int ip,amt; ip=1; amt=0; while(ip!=0){ /* 入力を促すメッセージ */ printf("値を入力してください"); /* 整数を変数ipに読み込ませる */ scanf("%d", &ip); /* 入力値が0だったら抜ける。 */ if(ip == 0) break; /* 入力値が偶数だったら加算する */ if(0 == ip % 2) { amt += ip; } /* if(0 == ip % 2){ printf("値を入力してください>"); } else{ amt += ip; printf("%d" , amt); } */ } printf("偶数の総和は%dです",amt); return 0; }

  • weavaest
  • ベストアンサー率15% (157/1020)
回答No.1

入力値がipに入るのだと思いますが、入力値を取り込んでませんよね。 まずはwhileとifの間で入力値を取り込んでみてはどうですか。 "値を入力してください>"は、入力を促す時常に表示するほうが良くないですか。 もし、そうするなら、入力値取り込みの前で表示ですね。現在の処理では、ipが偶数の時のみ表示になりますね。 総和を求めるロジックの位置ですが、現在はelseのほうに書かれています。これでは奇数の時に処理されますね。 whileから抜ける条件は0を入力した時という仕様ですか。 あと表示の所ですが、文字列の後ろに改行(¥n)を入れたほうが見やすいと思います。 ※こんな文章での回答を求めるより、まずは自分で処理の流れをチャートに起こしたほうが良いと思います。

関連するQ&A

  • C言語について。初心者です。

    参考書の問題で、「整数値以下である正の偶数を照準に表示するプログラムを作成せよ」 例)整数を入力してください:19   2 4 6 8 10 12 14 16 18 とあり、自分で以下のプログラムを作ってみたのですが「222222・・・・・・・・・・・・・・・・・・」となるだけです。どう変えればちゃんと表示されるようになりますか?ちなみにwhile文を使うのが条件です。 #include<stdio.h> int main(void) {       int na; int nb=0; printf("整数を入力してください。:"); scanf("%d",&na); while(nb<na) printf("%d",nb+2); putchar('\n'); return 0; }

  • C言語について

    次のような問題です。 問 自然数nを入力し、nを3で割って割り切れるかどうかを判定し結果を表示する。「割り切れる」、「1余る」、「「2余る」のいずれかが入るものとする。 このようなものをつくりました。 #include<stdio.h> int main(void) { int n; printf("自然数:"); scanf("%d",&n); if(n==0){ printf("割り切れる\n"); }else if(n==1){ printf("1余る\n"); }else{ printf("2余る"); } return(0); } これで合っているかよろしくお願いします。

  • C言語で困っています。

    正の整数を入れたときに、階乗を求めるプログラムを作りたいのですが、 ↓のプログラムを起動させたら、最終的な答えが1(kaizyo=1)になって、非常に困っています。 何故なのでしょうか?それと、どこを直せばいいですか? #include<stdio.h> main() { int x; int kaizyo=1; printf("整数を入力して下さい:"); scanf("%d",&x); if(x<=0) { printf("値が不適当です。"); } else { while(x<1) { kaizyo=kaizyo*x; x=x-1; } printf("%dの階乗は%dです。",x,kaizyo); } }

  • C言語のプログラムについて。

    #include <stdio.h> int main(void) {   int hoge,piyo;   printf("数値を入力せよ。:");   scanf("%d",&hoge);   piyo = hoge % 2;   if (piyo == 0) {     printf("%dは、偶数。\n",hoge);   } else {     printf("%dは、奇数。\n",hoge);   };   return 0; } という、プログラムが、実行できません。 といって、エラーメッセージがでてくれないので、困っています。 ひょっとして、非常に初歩的なミスという気もするのですが。 これはよかった!という、C言語に関する書籍、また、コンピュータのシステムに関する書籍がありましたら、合わせてご教授ください。

  • エラー C言語 プログラミングについて

    #include<stdio.h> int leapYear(int); int main(void){ int year,i; for(i=2001;i=2999;i++){ year=i; printf("%d leap = %d \n",i,leapYear(int year)); return 0; } } int leapYear(int year){ if(year%100==0){ return 0; } else if(year%400==0){ return 1; } else if(year%4==0 && year%100!=0){ return 1; } } をコンパイルすると11行目に式の構文エラーが出るんですが どうしてでしょうか?? 間違ってない気がするんですけど。。

  • C言語!プログラム書いたのですがエラーです!

    課題内容 キーボードから数字を入力してその値までの合計を表示する。 さらに入力した値が偶数なら0から入力した値までのすべての偶数の和を 入力した値が奇数なら1から入力した値までのすべての奇数の和を表示するプログラム。 #include<stdio.h> int main(void) { int i, n, sum; sum=0; scanf("%d",&n); printf("入力値:%d\n", n); if(n%2 = 0) { for(i=0;i<=n;i+=2) { sum=sum+i; } printf("合計値:%d\n",sum); } else { for(i=1;i<=n;i+=2) { sum=sum+i; } printf("合計値:%d\n",sum); } return(0); } これでコンパイルすると10行目に左辺値が必要とでます。 どうすればよいでしょうか? 教えてください。よろしくお願いします。

  • C言語初心者です。

    C言語初心者です。 1^2-2^2+3^3-4^2…+99^2-100^2の値を求めるプログラムを作成したいのですが上手くいきません。 どこが足りないのですか? #include <stdio.h> int main(void) { printf("%d", 1^2 - 2^2 + 3^2 - 4^2 … + 99^2 - 100^2); return (0); } よろしくお願いします。

  • C言語

    以下の出力結果はどうなりますか? 教えてください。 #include <stdio.h> #include <stdib.h> int main (void){ int n,f; n=792; f=2; while(f*f<=n){ while(n%f==0){ printf("%d",f); n=n/f; } f++; } if(n !=1) printf("%d",n); printf("\n"); return 0; }

  • 困ってます…nCrを求めるC言語プログラミング

    nCr、つまりn個のうちr個を取り出すときの場合の数を求めるプログラミングを作りたいのですが、どうもうまくいきません。 関数combinationを作って求めるという指定もあり、自分で出来るとこまで作ってみたのですが訳がわからなくなってしまい、かなり困っています…; コンパイルは出来るのですが実行してもセグメントエラーが出るばかりで… すみませんがご指摘していただけないでしょうか…? #include<stdio.h> //階乗を計算する関数 int fact(int num){ int i; if(num < 0){ return -1; } else if(num == 0){ return 1; } else if(num == 1){ return 1; } else { i = num * fact(num - 1); return i; } } //コンビネーションを計算 int combination(int n, int r) { int fact(int num); int i; i=fact(n)/fact(r)/fact(n-r); return combination(n-1, r-1)-combination(n,r-1); } int main(void) { int n, r; while ( printf("n r を入力して下さい。"), scanf("%d%d", &n, &r) == 2 ) { printf("nCr(%d,%d)=%d\n", n, r, combination(n, r)); } return 0; }

  • C言語 偶数判定

    下記は、「1から5までの整数で偶数の和を表示する」というプログラムなのですが、 偶数判定に用いている if ( ! ( i % 2 ) ) の意味が分からないので、どなたか教えていただけないでしょうか? ( i % 2 = = 0 で条件判定をするのなら理解できるのですが…) #include <stdio.h> int main(){ int i=1,total=0; while (1){ if(i>5)break; if ( ! ( i % 2 ) ) total+=i; i++; } printf("%d",total); return 0; }