Presentation is loading. Please wait.

Presentation is loading. Please wait.

高度プログラミング演習 (08).

Similar presentations


Presentation on theme: "高度プログラミング演習 (08)."— Presentation transcript:

1 高度プログラミング演習 (08)

2 演習問題 与えられた2数のべき乗を計算する関数を再帰関数を用いて作成せよ。 ユークリッドの互除法を用いて最大公約数を求める関数を作成せよ。

3 与えられた2数のべき乗を計算する #include <stdio.h> int mypow(int a, int b) {
if(b==0) return 1; else return a * mypow(a,b-1); } void main() int a,b; scanf("%d %d",&a,&b); printf("%d ^ %d = %d\n",a,b,mypow(a,b));

4 ユークリッドの互除法 #include <stdio.h> int gojoho(int n, int m)
{ int amari,b,s; if(n>m){ b = n; s = m; }else { b = m; s = n; } amari = b % s; if(amari!=0) gojoho(amari,s); else return s; void main() { int n,m; scanf("%d %d",&n,&m); printf("L.C.M = %d\n", gojoho(n,m)); }

5 ポインタ メモリ CPU コンピュータの構造 メモリ: 番地 (アドレス): 値 000000: 123 000001: 2345
  番地 (アドレス): 値   000000:    123   000001:   2345 CPU Pentium4 3GHz void main() { int a,b; a=123; b=2345; *(&a)=123; *(&b)=2345; } 000000: 123 000001:2345 メモリ Main Memory 512MB

6 ポインタ型 int *a; a #include <stdio.h> void main() b { int *a,*b;
int c=38; int matrix[100]; int i; a=&c; printf(“%d”,*a); b=&matrix[50]; b[0]=39; // matrix[50] *(b+1)=40; // matrix[51] } b matrix[50]のアドレス c 38 matrix[0] matrix[1] matrix[2] matrix[3] matrix[50] matrix[51]

7 ポインタ型を使った関数呼び出し #include <stdio.h> void foo(int *a,int *b) {
*a = *a + *b; } void main() int a=10,b=20; foo(&a,&b); printf(“%d\n”,a);

8 例題問題 2つの引数をとり、それぞれの変数の内容を入れ替える関数を作成せよ。 myswap(int *a, int *b)
int a=3,b=8; myswap(&a,&b); a の中身は 8 b の中身は 3

9 演習問題 小文字を大文字に変える関数を作成せよ。 大文字を小文字に変える関数を作成せよ。 myaA(char *ch)
myZz(char *ch)

10 演習問題 格子の中で、点から点へは 任意の(x0,y0)から任意の(x1,y1)までの経路が何通りあるか計算するプログラムを作成せよ。
上または右にしか進めないとする。 任意の(x0,y0)から任意の(x1,y1)までの経路が何通りあるか計算するプログラムを作成せよ。 (x1,y1) (x0,y0)


Download ppt "高度プログラミング演習 (08)."

Similar presentations


Ads by Google