質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

159閲覧

円の面積についての質問

aka-1990

総合スコア13

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2017/07/15 11:05

下のように、

半径の入力。
249
半径249の面積は194683.1。
1 3.1
2 12.6
3 28.3
4 50.2
5 78.5
6...
と半径249の面積と、半径が1から10までのときの面積を表示させたいのですが、コンパイルすると警告がでてしまい、結果も1から10までの面積がすべて0になってしまいました。
明らかに間違っているのは分かっていますが、どこをどう直せばいいのかがわかりません。教えていただけないでしょうか?
ちなみにMは円の面積です。

c

1#include<stdio.h> 2int f1(int x,int y); 3main() 4{ 5 int a,S,i; 6 printf("半径の入力。\n"); 7 scanf("%d",&a); 8 printf("半径249の面積は%.2f。\n",a*a*3.14,S); 9 10 for(i=0;i<=10;i=i+1) 11 { 12 S=f1(3,4); 13 printf("%3d %4d\n",i,f1(3,4),S); 14 } 15 return 0; 16} 17int f1(int x,int y) 18{ 19 float M,a; 20 M=3.14*a; 21 return M; 22

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

いろいろ変数を初期化しなすぎです。

C

1int f1(int x,int y) 2{ 3 float M,a; 4 M=3.14*a; 5 return M; 6}

aの値はいったいなんなのでしょう。
なお、main関数における変数aと、f1関数における変数aは、全く別のものとして取り扱われます。


関数の認識がかなり曖昧なようです。
f1と言う適当な命名も含めて、じっくり考えなおしてください。

int f1(int x, int y)

これは、『整数xと整数yを入力とし、整数を出力する関数f1』と解釈します。
円の面積を計算するのに必要な入力はなんですか?出力は整数で本当にいいんですか?

なお、プログラミング界隈では、引数戻り値という用語を用います。

投稿2017/07/15 11:10

編集2017/07/15 11:15
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

ファンクションの戻り値をreturn値と合わせます。
必要な数値を渡してCALLします。
の部分を変更してみました。

#include<stdio.h> float f1(int x); int main(void) { int a,i; float S; printf("半径の入力。\n"); scanf("%d",&a); printf("半径249の面積は%.1f。\n",a*a*3.14); for(i=1;i<=10;i=i+1) { S=f1(i); printf("%3d %5.1f \n",i,S); } return 0; } float f1(int x) { float M; M=3.14*x*x; return M; }

投稿2017/07/15 13:56

編集2017/07/15 14:01
A.Ichi

総合スコア4070

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

A.Ichi

2017/07/15 15:08

今後Cのプログラムを読まれる事も有るかと思いますが、多くのプログラムでは、i=i+1と同じ i++ を使います。2乗ではpow(x,2.0)が使われます。何度も呼ばれるファンクションでは、渡って来た数字をprintf等で出力してみると見えてきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問