こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

質問です。

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);
}

というプログラムを考えましたが、計算結果がめちゃくちゃになってしまいます。
これもどこを直したらいいべきでしょうか?

投稿日時 - 2003-06-08 02:05:25

QNo.568997

すぐに回答ほしいです

質問者が選んだベストアンサー

こんばんは


switch-caseですが、
case '0' :
ではcharとして比較してしまいますので
case 0x30 :

case 48 :
と書くのと等しいですね。a%3は0か1か2しか返しませんので、絶対にprintには行かないです。
0と比較するので
case 0 :
です。当然他のcaseも
case 1 :
case 2 :
となります。

2.
これはbが初期化されていない状態で、合計を計算している事が原因です。

b = 0 ;
for(i=1;i<11;i++) b+=a[i];

の様に合計を求める前にbの値に0を入れておけば良いでしょう。

では、がんばってください。

投稿日時 - 2003-06-08 02:19:01

お礼

回答ありがとうございました。

おかげで両方上手く動きました。(^-^)

投稿日時 - 2003-06-09 15:33:43

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問