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

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

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

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

Q&A

3回答

1177閲覧

自作関数の計算プログラム

wasabinabe

総合スコア17

C

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

0グッド

0クリップ

投稿2018/12/03 16:39

aのn乗を計算するプログラムを「aのn乗を計算する 部分を自作関数」とするプログラムに書き換える方法がわかりません、sumを使うのだとはまかったんですがうまく組み込みかたや計算のコードがわからないです教えていただきたいです。

C

1#include <stdio.h> 2int main(void) 3{ 4int a,n,kotae,i; 5printf("aのn乗を計算します.ただし正の整数のみとします.¥n"); 6printf("aの値を入力してください."); 7scanf("%d",&a); 8printf("nの値を入力してください."); 9scanf("%d",&n); 10/* aのn乗の計算箇所はここから*/ 11kotae=1; 12for (i=1;i<=n;i++){ 13kotae*=a; 14} 15/* aのn乗の計算箇所はここまで*/ 16printf("答えは%dです.¥n",kotae); return 0; 17}

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

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

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

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

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

guest

回答3

0

int a,nを引数にとってint kotaeを返せばいいので

定義は

c

1int myPower(int a, int n);

あとは適当にコピペして最後にreturn kotae;してやればいいです

投稿2018/12/03 16:55

asm

総合スコア15147

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

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

0

.an自然数である条件があるのでその個所をdo~while文で書きました.
また実際に「a^nを計算する」部分は関数に切り離しました.

入力に関してですが,scanfは危険な関数なのでfgetsをお勧めします.

C

1#include <stdio.h> 2#include <stdlib.h> 3#include <string.h> 4 5#define BUFSIZE 256 6 7int my_pow(int,int); 8 9int main(void){ 10 11 char buf[BUFSIZE]; 12 int a,n,answer,i; 13 14 printf("aのn乗を計算します.ただし正の整数のみとします.\n"); 15 16 do{ 17 printf("aの値を入力してください.\n"); 18 fgets(buf,BUFSIZE,stdin); 19 a = strtol(buf,NULL,10); 20 printf("nの値を入力してください.\n"); 21 fgets(buf,BUFSIZE,stdin); 22 n = strtol(buf,NULL,10); 23 if(a <= 0 || n <= 0){ 24 printf("aとnはともに正の整数です.\n"); 25 } 26 }while(a <= 0 || n <= 0); 27 answer = my_pow(a,n); 28 29 printf("答えは%\dです.",answer); 30 return 0; 31} 32 33int my_pow(int a, int n) 34{ 35 int i; 36 int answer = 1; 37 for(i = 0; i < n; i++){ 38 answer *= a; 39 } 40 return answer; 41} 42

投稿2019/03/31 09:50

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

こんなんで。
int の範囲を超えた時とかは考慮していません。
計算のコードもと書いておられたので、変えてみました。
入力は適当に作ってください。

#include <stdio.h> int power(int x, unsigned int n) { int ret = 1; for (; n; n >>= 1, x *= x) if (n & 1) ret *= x; return ret; } int main(void) { printf("%i\n%i\n", power(3, 4), power(18, 7)); return 0; } コード

投稿2018/12/05 22:55

編集2018/12/05 23:04
PingHermit

総合スコア478

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問