第5講 関数(1)
第7話 第4話課題Bをint型関数で実現する
解答例
#include<stdio.h> //prinf()を使えるようにするためにインクルード
int f(int s, int k, int m); //s:初項 k:交差 m:末項
int main() {
  int s, k, m,y;
  printf("キーボーから初項、交差、末項を順に入力して下さい。\n");
  printf("初項=");
  scanf("%d", &s);
  printf("交差=");
  scanf("%d", &k);
  printf("末項=");
  scanf("%d", &m);
  y=f(s, k, m);
  printf("初項%d、交差%d、末項%dの等差数列の和=%d\n", s, k, m, y);
}
int f(int s, int k, int m) {
  int i, w = 0;
  for (i = s; i <= m; i += k)w += i;
  return(w);
}
実行画面例

キーボーから初項、交差、末項を順に入力して下さい。
初項=45
交差=8
末項=845
初項45、交差8、末項845の等差数列の和=44945


さて、今回のコードを次のように書き換えてみて下さい。
#include<stdio.h> //prinf()を使えるようにするためにインクルード
int f(int
a, int b, int c); //s:初項 k:交差 m:末項
int main() {
  int s, k, m,y;
  printf("キーボーから初項、交差、末項を順に入力して下さい。\n");
  printf("初項=");
  scanf("%d", &s);
  printf("交差=");
  scanf("%d", &k);
  printf("末項=");
  scanf("%d", &m);
  y=f(s, k, m);
  printf("初項%d、交差%d、末項%dの等差数列の和=%d\n", s, k, m, y);
}
int f(int
x, int y, int z) {
  int i, w = 0;
  for (i =
x; i <= z; i += y)w += i;
  return(w);
}
変更箇所は、色で示してあります。
こんなことをしてプログラムは正常に動くのでしょうか。
Ctrl+F5をしてみて下さい。
答えは例によって30行下。































答え
正常に動くです。
どうしてでしょうか。不思議ですね。


ということなのです。
関数内で変数名がそろっていれば良いのです。
どうしてかは、次話で扱う変数のスコープと値参照が関係しています。
ですので、理由を知りたい型は次話をクリック!





第6話へ   第8話へ
 
002

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ