![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
C言語で関数を用いたプログラムを作成しています。内容はA君、B君のボーリングの成績を入力し、その点数をランク付けするというものです。(250以上はS、200以上はA、150以上はB、100以上はC、50以上はD、50未満はFになります。)
それから、このプログラムの条件は
1、main関数は値の入力と関数を呼び出すだけ。
2、関数の引数は入力した2つの値。
3、関数の中で結果を表示。
4、関数の戻り値はなし。
というもので、3番の結果のmain関数以外での結果の表示の仕方がわからず、どうやって結果を表示させていくのかよくわからず、行き詰っています。そのあたりの解説をしていただくとありがたいです。
なお、私が途中まで書いたので、問題点の指摘をおねがいいたします。
#include<stdio.h>
int ia(int x);
int ib(int y);
int main(){
int a,b;
printf("A君のスコア");
scanf("%d",&a);
printf("B君のスコア");
scanf("%d",&b);
}
int ia(int x);
char ix;
if(x>=250){
ix = 'S';
}else if(x>=200 && x<250){
ix = 'A';
}else if(x>=150 && x<200){
ix = 'B';
}else if(x>=100 && x<150){
ix = 'C';
}else if(x>=50 && x<100){
ix = 'D';
else{
ix='F';
}
int ib(int y);
char iy;
if(y>=250){
iy = 'S';
}else if(y>=200 && y<250){
iy = 'A';
}else if(y>=150 && y<200){
ix = 'B';
}else if(y>=100 && y<150){
iy = 'C';
}else if(y>=50 && y<100){
iy = 'D';
}else{
iy ='F';
}
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
No4です。
おっと、関数の引数は、Aクン、Bクンの得点の2つだ(^^;)。
出力関数
void syutu(Aクンの得点,Bクンの得点)
{
printf(書式省略,hantei(Aクンの得点));
printf( ,hantei(Bクンの得点));
}
main()では、scanfでAクンの得点、Bクンの得点を入力して、syutu()関数を呼び出せば良いかな(^o^)。
#「課題そのものが悪い」なんて、回答に書かないでね(^.-)☆
No.5
- 回答日時:
部分的な実現方法などは他の方も書かれているので、私は全体的な流れのサンプルを。
ご参考になれば...
#include<stdio.h>
// 結果表示
void dispResult(int ia, int ib);
// ランク付け
char ranking(int iscore);
/*
メイン関数
*/
void main()
{
int ia; // A君のスコア
int ib; // B君のスコア
// A君のスコア取得
// B君のスコア取得
// 結果表示
dispResult(ia, ib);
}
/*
結果を表示する
*/
void dispResult(int ia, int ib)
{
char ca; // A君のランク
char cb; // B君のランク
// A君のランクを取得
ca = ranking(ia);
// B君のランクを取得
cb = ranking(ib);
// A君のランクを表示
// B君のランクを表示
}
/*
ランク付けをする
*/
char ranking(int iscore)
{
char crank; // ランク
// スコアからランクを決定する
return (crank);
}
こんな感じでいかがでしょうか?
不具合があったらごめんなさい。
あくまでも参考程度に...
No.4
- 回答日時:
回答については、No1殿の言うとおり、printf(これも関数だって判るかな?)の中に移せばよい。
つまり得点判定の関数の中にprintf()やputc()、putchar()を書いて、SとかAとかを出力させればよい。
で、さて、貴兄のプログラムを見ていると、「関数」というものが全然判ってない様ですね。なぜ、Aクンの判定と、Bクンの判定、それぞれにia()とib()を作っているのかな?
(しかもBクンのB判定のところは、変数ixを使っている(^^;))
私だったら、たとえば、hanteiという関数を作って、
hantei(Aクンの得点);
hantei(Bクンの得点);
と、関数の引数にAクン、Bクンの得点を入れてhantei関数を呼び出すのだけどね。
課題にも文句(^^;)があって、こういう場合、関数hantei()の戻り値が、Sとか、Aとかになるのが、綺麗なヤリ方だと思うね(実は、ここは趣味とか個人毎の書き方とかいう以前の問題なのだが)。
つまり、判定の関数のプロトタイプは、「char hantei(int 得点);」というところかな。
そうすると、
printf("Aクンの判定:%c\n",hantei(Aクンの得点));
って書けるよね?
プログラムの勘所って、そういうもんじゃないかと思うのだが。
No.3
- 回答日時:
こんにちは。
ソースコードの{}の位置が若干おかしいところがある気もしますが、コピーする時にずれたのでしょうか。それ以外で気がついた点をいくつか。
main関数以外で出力するのは下の方もいわれているように関数ia,ibの中にprintf文を記述すればよいことです。
また、上記のコードではmain関数の中に関数ia,ibの呼び出し文がないですので、呼び出し記述をしてください。
それから、「4.関数の戻り値はなし」とのことですので、関数がint型なのはおかしいと思います。
それと、「引数は2つ」という問題文からして、関数は一つで、そこに引数を2つ持たせればよい気もします。
参考になりましたら幸いです。
No.2
- 回答日時:
ia 関数とib関数分ける必要ないよね。
一つの関数で間に合うはず。それとif文の書きかただけど:
iy = 'S';
if (y<50) iy = 'F'
else if (y < 100) iy = 'D';
...
else if (y < 250) iy = 'A';
って書き方でいいでしょ?
で、最後に:
printf("ランク = %c\n", iy);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語 3 2022/11/09 13:27
- C言語・C++・C# プログラムの時、フローチャートはどうなりますか?図でお願いします。 int main(void) { 1 2022/10/01 22:45
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# プログラミングのペーパーテスト 実行結果を表示せよ #include <stdio.h> int h 1 2022/07/09 15:27
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# プログラミングのペーパーテスト 実行結果がどのように表示されるか答えよ #include <stdi 1 2022/07/09 14:27
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語のリダイレクトによる円...
-
「指定されたキャストは有効で...
-
C言語で分からないところがあり...
-
C言語での引数の省略方法
-
C言語のサイコロシミュレート
-
Python: 数値を反転させたい
-
#define _CRT_SECURE_NO_WARNIN...
-
c言語の配列を使ってサイコロを...
-
n進数を10進数に変換するプログ...
-
C言語 エラーの原因がわからな...
-
シグマ公式・・・C言語
-
c言語 文字化けします
-
【C++】関数ポインタの使い方
-
インクリメントしてくれません
-
非再帰のマージソートについて
-
C言語初心者です、、、お助けく...
-
加算の繰り上がり部分を高速に計算
-
プログラミングペーパーテスト ...
-
構造体の勉強中です 合計点の高...
-
nCmの関数
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
複数桁10進数の*桁目だけを抽出...
-
へんな現象
-
【C++】関数ポインタの使い方
-
C言語 エラーの原因がわからな...
-
if と配列の組み合わせ
-
C言語での奇数の和
-
C言語 配列と関数の練習問題
-
ラップ関数とはどんなものですか?
-
(int *)の意味
-
C言語
-
実数の整数部,小数部の取得
-
足して100になるような乱数のア...
-
卒業研究でよく分からないとこ...
-
数字列を3桁ごとにカンマで区切...
-
c言語
-
std::set<int> で、ある値が何...
-
比較回数と交換回数表示について
おすすめ情報