大学に入って初めてプログラミングを習いましたが、2回目の授業ではやくも関数のプログラムの宿題が出されました。
問題は「摂氏Cを入力し、これを華氏Fと絶対温度Kに換算せよ。ただし換算式はそれぞれ、F = 32.0 + 1.8c、K = 273.16 + cとし、華氏および絶対温度を求める部分は、それぞれ関数化すること。」というものなのですが、一応教科書にのっとって、作ってみましたが、コンパイルエラーが起こってしまいます。解決策が見つからないので質問することにしました。
以下が私が作ったプログラムです。
-------------------------------------------------
#include<stdio.h>
float Sessi(float);
void main(void)
{
float c;
float kasi, zettaiondo;
c = 25;
kasi = Sessi(c);
zettaiondo = Sessi(c);
printf("華氏F = %f\n", kasi);
printf("絶対温度K = %f\n", zettaiondo);
}
float Sessi(float c)
{
float f;
f = 32.0 + 1.8 * c;
return(f);
float k;
k = 273.16 + c;
return(k);
}
-------------------------------------------------
上はとりあえず、C=25の場合の換算です。
このプログラムですと、実行はできるのですが、C=○のところにどんな数字を入れても華氏F、絶対温度Kともに、77.00000になってしまいます。明らかにおかしいのは自分でも分かりますが、まだはじめたばかりなので分けが分かりません。
慣れている方には馬鹿馬鹿しい質問ですが、ご指摘お願い致します。
No.1
- 回答日時:
「関数」って言葉の意味を考えたことがありますか?
関数は、ひとつの変数を投入するとひとつの値を戻す、というのが原則です。すなわち、ひとつの関数に引数25を与えたら、戻り値はひとつです。netekunさんのように、ひとつの関数に並列でreturn()を二つ書いたら、一つ目以降は無効な式になります。
華氏と絶対温度の二つの戻り値が必要なら、以下のように二つの関数を定義してはどうでしょう。
----
float CtoF(float c)
{
float f;
f = 32.0 + 1.8 * c;
return(f);
}
float CtoK(float c)
{
float k;
k = 273.16 + c;
return(k);
}
No.2ベストアンサー
- 回答日時:
関数の作り方が、間違っています。
この作り方では、最初の return(f); までしか、実行されません。
float Sessi(float c)
{
float f;
f = 32.0 + 1.8 * c;
return(f);
float k;
k = 273.16 + c;
return(k);
}
関数を2つに分け
float Sessi(float c)
float Zettai(float c)
として、 return(); までを、分けて作り、
zettaiondo = Sessi(c); を zettaiondo = Zettai(c);
の、ようにすると良いでしょう。
サブルーチンは、return(); を、見つけるとそこで終了して、メインに帰ってしまいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語: ポインタ 5 2022/06/01 08:33
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# キャスト演算について。 1 2023/07/15 15:28
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- その他(プログラミング・Web制作) Pythonにおける物理のシミュレーションでの単位変換について 2 2023/06/02 17:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
10個出力で改行したいのですが...
-
4の倍数を論理演算で表す。。
-
printfの出力内の文字をdefine...
-
10進数を2進数に変換するには・...
-
8人分のテストの点数を入力し、...
-
C言語 プログラミング
-
筆算(加法)について
-
printf で二進表示を行いたい。
-
C++ 二次関数の重解、虚数解が...
-
小数点切捨て表示
-
CTRL+Dでループを抜けるには
-
コマンドラインに出力した文字...
-
srand(time(NULL))の使い方
-
関数をこえてプログラムを強制...
-
三角形の判別
-
5×5の転置行列を求めるC言語の...
-
既約分数の表示プログラム
-
現在時刻の表示について
-
scanfに文字が入力されたときに...
-
2つ分数の四則演算を行うプロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
既約分数の表示プログラム
-
printf で二進表示を行いたい。
-
8人分のテストの点数を入力し、...
-
printf( " %2d", p * q );
-
strcmp
-
CTRL+Dでループを抜けるには
-
4の倍数を論理演算で表す。。
-
%P と %X の違い
-
【C言語教えてください】sin波...
-
c言語でAからZまでを表示する...
-
cshの文字列操作(0埋め)
-
万年カレンダーのC言語プログラ...
-
コマンドラインに出力した文字...
-
scanfに文字が入力されたときに...
-
コンパイルエラーについて
-
ホームページをC言語で作りたい...
-
改行について 1行に何個かづ...
-
台形の面積を求めるプログラム
-
なぜgccはstdio.hをインクルー...
おすすめ情報