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

タイトルの通りなんですがエラーがでます><
コンパイラはできたのですが、実行して二つ目の入力するとこで、入力したあと止まります。
どこがおかしいのでしょうか?
#include <stdio.h>
int sikaku(void); int en(void);

int main(void)
{
char ch;
int a,b;

printf("円(A) 長方形(B) 三角形(C)\n");
printf("入力してください:");
ch = getche();

if(ch == 'C'){
printf("\n底辺を入力してください:");
scanf("%d ",a);
printf("高さを入力してください:\n");
scanf("%d",b);
printf("%dです",a * b);
}
else if(ch == 'B')
sikaku();
else if(ch == 'A')
en();
return 0;
}

int en(void)
{
int a;
float f;
printf("\n半径を入力してください:");
scanf("%d",a);
printf("円周率を入力してください:");
scanf("%f",f);
printf("%fです",a * a * f);
return 0;
}

int sikaku(void)
{
int a,b;

printf("\n縦を入力してください:");
scanf("%d",a);
printf("横を入力してくさい:\n");
scanf("%d",b);
printf("dです",a * b);
return 0;
}

A 回答 (5件)

#include <stdio.h>


int sikaku(void);
int en(void);

int main(void)
{
char ch;
int a,b;

printf("円(A) 長方形(B) 三角形(C)\n");
printf("入力してください:");
ch = getchar(); // getche()という関数は標準にはありません。

if(ch == 'C'){
printf("\n底辺を入力してください:");
scanf("%d", &a); // 引数は、aではなく、&aにすべきです。
printf("高さを入力してください:\n");
scanf("%d", &b);
printf("%fです", a * b / 2.0); // 三角形ですので、2で割りましょう。
}
else if(ch == 'B')
sikaku();
else if(ch == 'A')
en();
return 0;
}

int en(void)
{
int a;
float f;
printf("\n半径を入力してください:");
scanf("%d", &a);
printf("円周率を入力してください:");
scanf("%f", &f);
printf("%fです", a * a * f);
return 0;
}

int sikaku(void)
{
int a,b;

printf("\n縦を入力してください:");
scanf("%d", &a);
printf("横を入力してくさい:\n");
scanf("%d", &b);
printf("%dです",a * b);
return 0;
}
    • good
    • 0
この回答へのお礼

本当にありがとうございます><
見比べてみたらミスがたくさんありました;;
scanfで&を完璧にわすれてました・・・
助かりました

お礼日時:2008/06/28 14:53

getche( )を使うなら


#include <conio.h>
    • good
    • 0
この回答へのお礼

ありがとうございます!
インクルードするの忘れてました・・・
助かりました

お礼日時:2008/06/28 14:54

> f ではなく b でしょうか。


何故?

> float f;
って書いてますけど。
    • good
    • 0

scanf("%f",f);


printf("%fです",a * a * f);

f ではなく b でしょうか。
    • good
    • 0

> コンパイラはできたのですが


コンパイルができた、です。コンパイルをするためのソフトウェアが、コンパイラです。

> scanf("%d ",a);
scanf()の第2引数は、アドレスです。

> printf("%dです",a * b);
三角形の面積を求める式が正しくありません。

> printf("dです",a * b);
長方形の面積を出力する際の書式文字列が正しくありません。

それから、en()とsikaku()の戻り値の意味は何ですか?
どこでも利用していませんので、とりたててint型にする必要はありません。
    • good
    • 0
この回答へのお礼

コンパイルでした 間違えてました><
色々指摘ありがとうございます。
助かります
必要ない場合は無理にint型などにしなくていいんですね!!
勉強になりました

お礼日時:2008/06/28 14:58

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