• ベストアンサー

次のような課題を解くプログラムを作りましたが

LegaC2の回答

  • LegaC2
  • ベストアンサー率52% (224/428)
回答No.5

幾つか間違いがあります。 No.1 for文の最後の”;(セミコロン)”  for文で、次の行以下の{}内の処理を繰り返したい場合、for文の最後にはセミコロンは付与しません。  このように書くと、{}内の処理を繰り返すのではなく、for文の)と;の間の処理を繰り返すことになります。  ただ、今回の場合、)と;の間に何も処理が既述されていないため、何の処理も繰り返しません。 No.2 for文の()内のsuretu<=99  for文の()内の2番目の記述は、繰り返し条件を表します。  今回の場合、suretuが99以下の間、処理を繰り返すということになります。  つまり、suretuが99を超えると処理が終了します。  今回は、suretu(合計値)が99を超えると処理を止めたい訳ではなく、  kauntoが99を超えた場合に、処理を止めたいはずなので、ここを修正する必要があります。 No.3 int suretu=3  初期値として、suretuに3を代入してしまうと、合計値の値がおかしくなります。  最初は、0であるべきだと思われるので、そのように修正する必要があります。 今回の真因は、No.1だと思いますが、No.2が正しく記述されていれば、間違いに気付いたと思います。 そうすれば、結果的にNo.3にも気付いたと思います。 やってみるとわかると思いますが、No.2を直すと、何かしらの回答が表示されるはずです。 逆に、No.2が間違っているせいで、No.1が無限ループを起こしており、何も表示されない結果となっています。  

関連するQ&A

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

    #include <stdio.h> int main(void) { printf("hello,world\n"); } □■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■ #include <stdio.h> int main(void) { printf("hello"); printf(",world"); printf("\n"); } 上の2つのプログラムをコンパイルするとどのような違いが生じるんですか??printfってどんな働きをするんですか?

  • 課題で悩んでます

    #include <stdio.h> void main(){ int okane; float kion; printf("今日のお金は?\n"); scanf("%d",&okane); printf("今日の気温は?\n"); scanf("%f",&kion); if( okane >=700&&kion>=30.0 ){ printf("冷やし中華を食べよう\n"); } if( okane >=700&&kion<30.0 ){ printf("ラーメンを食べよう\n"); } if( okane <=700){ printf("バイトしろ"); } } この文で論理演算子を抜いてifelse文に書き換えろという課題が出たのですが分からないので全文教えて下さい

  • プログラムの最適化について質問です。

    プログラムの最適化について質問です。 /* 課題7 */ #include<stdio.h> #define A n /* n=10^0~9 */ void main() { int a,x; for(a=0;a<A;a++){ x=x+1; } } /* 課題8 */ #include<stdio.h> #define A n /* n=10^0~9 */ void main() { int a,x; for(a=0;a<A;a++){ x++; } } 課題7に比べて課題8の記述のメリットとして、単にソースコードを短くできる以外に、何が考えられるか。 という質問に対しての答えが分かりません。解説お願いします。

  • このプログラムみてもらえますか?

    課題は標準入力から正整数aを読み込み、aが素数であるか否か判定するプログラムを作れ、です。 #include <stdio.h> int main(void) { int a,b,c; for(;;){ printf("正整数を入力して下さい。\n"); scanf("%d",&a); c=a%b; for(b=2;b=a-1;b=b+1){ if(c==0) printf("素数でない。\n"); break; } printf("素数です。\n"); break; return(0); } } コンパイルはできますが、実行すると9が「素数です」と表示されます^^; よろしくおねがいします。

  • プログラムが上手く動作しません。

    質問です。 1.整数を1個入力し、その数を3で割った余りが0ならば"Good morning"、1ならば"Good evening"、2ならば"Good afternoon"と出力するプログラムを作成せよ。ただしswhitc文を用いること。 という問題で私は #include <stdio.h> main() {      int a;      printf("整数a:");      scanf("%d",&a);      switch(a%3)      {      case '0':           printf("Good morning \n");           break;      case '1':           printf("Good evening \n");           break;      case '2':           printf("Good afternoon \n");           break;      } } と考えましたが実行しても入力はできますがprintfが表示されません。 どこが間違っているのでしょうか?ちゃんとコンパイルはできるのですが・・・。 2.10個の整数値をキー入力し、合計と平均値を計算してその結果を表示するプログラムを書きなさい。 #include <stdio.h> main() {      int a[11],b,c,i;      for(i=1;i<11;i++)      {           printf("整数%d:\n",i);           scanf("%d",&a[i]);      }      for(i=1;i<11;i++)           b+=a[i];      c=b/10;      printf("合計値は%d",b);      printf("平均値は%d",c); } というプログラムを考えましたが、計算結果がめちゃくちゃになってしまいます。 これもどこを直したらいいべきでしょうか?

  • 16進数を入力するプログラムを作成するという課題がでたのですが、

    16進数を入力するプログラムを作成するという課題がでたのですが、 下記の内容でコンパイルしたところ、'A'一文字は10を表示しましたが 3E8は148など、数と組み合わせるとまったく違う答えが表示されます。 どうしたらよいのか見当も付かず困っております、教えてください #include<stdio.h> main() { int number; int ch; printf("input ?"); number=0; ch=getcher(); while(ch !='\n'){ if('0'<= ch && ch <= '9'){ number=number*10; number=number+(ch-'0'); } if('A'<= ch && ch <= 'F'){ number=ch-'A'+10; } ch=getcher; } printf("your input number is %d\n",number); }

  • Cの九九を表示するプログラムについて

    九九の表示を変えたいんですけど #include <stdio.h> int main(void) { int x,y; for (x = 1;x <= 9;x++) { for (y = 1;y <= 9;y++) { printf(" %2d ", x * y); } printf("\n"); } return 0; } これを実行すると 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 . . 9 . . . . . . . 81 となるのですが、これを 1 * 1 1 * 2 1 * 3 . . . 1 * 9 1 * 2 . . 1 * 9 . . . . . 9 * 9 と表示させたいのですがどなたか知恵を貸していただきませんでしょうか?

  • 次のプログラムが作れません…

    キーボードから与えられた整数iに対して、iの階乗(i!)を求める関数"fact"を作成するというものなのですが… メイン関数は次のように与えられています。 #include<stdio.h> int fact(int); int main(void){ int in, i; printf("Input a number:"); scanf("%d",&in); for (i=1; i<=in; i++){ printf(" %d %d\n",i , fact(i) ); } return 0; } よろしくお願いします。

  • C言語について

    #include <stdio.h> int main(void) { printf("123456\tABC DEFGHIJK\n"); printf("2006/4/14\n"); printf("programing\n"); } のprintfをすべてputsに書き換えてコンパイル・実行すると、 #include <stdio.h> int main(void) { puts("123456\tABC DEFGHIJK\n"); puts("2006/4/14\n"); puts("programing\n"); } になると思うんですけど、そのputsを用いて上のprintfを用いたプログラムと同じ出力を得るにはどのようなプログラムに変えればいいのでしょうか?

  • 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行目に左辺値が必要とでます。 どうすればよいでしょうか? 教えてください。よろしくお願いします。