
C言語で戻り値を使った正方形の面積と直方体の体積の表示について分からずに困っています。
C言語ラストの問題が一番難しくて、全然分からずに困っています。
以下の点に留意して、一辺の長さを入力すると、正方形の面積と直方体の体積を計算するプログラムを作成する。main内
1)整数型の変数length、men、taiを宣言する。
2)実行例と同様の表示になるように、“一辺の長さを入力してください。”を表示し、入力された値を、変数lengthに読み込む。
3)作成する関数名は、titleとし、lengthを引数とし、関数titleを使う。
4)正方形の面積を計算する関数の関数名は、squareとし、lengthを引数とし、戻り値をmen に代入する。
5)直方体の体積を計算する関数の関数名は、qubeとし、lengthを引数とし、戻り値をtai に代入する。
6)“一辺○○の正方形の面積は ○○です。”と表示する。
7)“一辺○○の直方体の体積は ○○です。”と表示する。
関数title内
1)引数を変数名xとする。
2)下記の実行例の様になるように、表示を行う。
関数square内
1)引数を変数名xとする。
2)整数型の変数valを宣言する。
3)正方形の面積を計算し、valに代入する。
4)valの内容が戻り値となるようにする。
関数qube内
1)引数を変数名xとする。
2)整数型の変数valを宣言する。
3)直方体の体積を計算し、valに代入する。
4)valの内容が戻り値となるようにする。
という問題です。
考えて作ってみたのが下のですが、間違いだらけでどうしようもありません。
#include <stdio.h>
void main(void)
{
int length,men,tai;
printf("一辺の長さを入力してください。\n");
scanf("%d",&length);
men=square(length);
tai=qube(length);
printf("***********************************\n");
printf("* 一辺%d *,&lenght);
printf("*正方形の面積*")
printf("*直方体の体積*")
printf("*を計算します。*")
printf("*************************\n");
}
int square(x)
{
int val;
val=x*x;
return val;
}
int qube(y)
{
int val;
val=x*x*x
return val;
}
どなたかよかったら教えてください。
よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
基本の流れは大体あってるのですから、細かいところをもう少し理解しましょう。
○ ;(セミコロン)が無い行があちらこちらにあります。C言語では ;までで一つの命令になります。改行文字はただの空白と同じ扱いです。
このような場合、エラーメッセージは次の行で出ることが多いので見付けにくいです。
○ C言語では、関数を定義して使いたいときは、次の2つのどちらかの方法を使います
方法1) 使用するより前に定義する。
今回の例なら、main関数で使うので、それより前に定義を記述します。
方法2)使用する前に、プロトタイプ宣言と呼ばれる、関数の戻り値や引数の型だけを予め記述しておく。定義部はどこに記述してもよい。
今回の例なら、mainの前に
int square(int) ;
と宣言だけしておけば、関数本体は現在の位置でもかまいません。
○最近の関数宣言のやりかたは
戻り値の型 関数名(引数の型1 仮引数名1,引数の型2 仮引数名2,.....)
です。
int square(x)
では、引数の型が抜けています。型が省略された場合はint型とみなすため、今回の例では大丈夫ですが、省略しないようにしましょう。
int square(int x)
○また、 int qube(y) では、引数にyを使っているのに関数中ではyは使われておらず、宣言されていないxが使われているためエラーになります。
○ printf("* 一辺%d *,&lenght);
lenghtがlengthのミスだとして。
scanfとprintfを混同しています。この2つは非常によく似た書式を使いますが、細かい点で違うので、混同しないようにすることが大切です。
「printf」で「%d」に対応するのは「int型(および、暗黙の型変換でint型になる整数)」です。
「&length」は「変数lengthへのポインタ」であって、lengthが格納している整数ではありません。
○また、このあたりのprintfは、問題にある「関数title」として定義しなければならないところではないでしょうか?
○printfの書式のしくみがわかれば、 6),7)は簡単ではないでしょうか?
書式には%による変換を複数記述できます。%が出てきた順番に、引数の前から対応します。
○> 考えて作ってみたのが下のですが、間違いだらけでどうしようもありません。
とありますが、現在のところ、論理的な間違いは「関数titleが無い(けど、同等の処理は入っている」「6),7)の表示部が無い」の2つだけで、あとの間違いは、コンパイル時にエラーや警告としてメッセージが出るものばかりです。
エラーメッセージを読む癖をつけましょう。
また、メッセージを検索にかければ、原因や対処方が見付かるケースも多いです。
No.1
- 回答日時:
・実行例が示されていないので、何を表示すればいいか分からない。
・関数mainの型が正しくない。
・関数mainの中で"一辺%d"をprintfしようとしている行で、文字列を閉じるダブルクオーテーションがない。変数名の綴りに間違いがある。不要な&演算子がある。
・行の終わりにセミコロンがないprintfがある。
・関数titleを作っていない。
・6)と7)の表示部分を作っていない。
・関数squareの定義で、引数xの型を宣言していない。
・関数qubeの定義で、引数の変数名はxと指定されているのにyを使っている。その上、引数の型を宣言していない。
・関数qubeの定義で、valに計算結果を代入している行の終わりにセミコロンがない。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# C言語 3 2022/10/04 15:07
- 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# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
visualstudio C# テキストボッ...
-
C++の分割コンパイルについて
-
DWORDの実際の型は何でしょうか
-
long型の定数の末尾にLを付ける...
-
変数の型を定義しなかった場合...
-
DDVによるメッセージの変更
-
main.c:7:43: warning: implici...
-
C言語 宣言した変数になにも代...
-
int void (main)の意味・・・
-
構造体を生成時にわざわざ初期...
-
sshdログの意味
-
void func( void )について
-
intとINTの違いは?
-
C言語の課題について
-
c++からdll内の関数を呼ぶ記述...
-
inline
-
関数の実体定義にヘッダファイ...
-
64bit → 32bit型へのキャスト
-
戻り値の型??
-
Aの値からBの値を除するとは??
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
visualstudio C# テキストボッ...
-
long型の定数の末尾にLを付ける...
-
main.c:7:43: warning: implici...
-
2重定義って??
-
変数の型を定義しなかった場合...
-
C++でboolにintの値を代入する...
-
typedef enumの使い方を教えて...
-
C++のfor文について
-
intとINTの違いは?
-
【#define】 defineで定義した...
-
ハンドルされていない例外が発...
-
void func( void )について
-
C言語のコンパイルエラー
-
enumについて
-
関数の実体定義にヘッダファイ...
-
C言語 宣言した変数になにも代...
-
C++ クラスをメンバにもつクラ...
-
プログラムの中で別のmainを呼...
-
sshdログの意味
おすすめ情報