1 / 10

高度プログラミング演習 (0 8 )

高度プログラミング演習 (0 8 ). 演習問題. 与えられた2数のべき乗を計算する関数を再帰関数を用いて作成せよ。 ユークリッドの互除法を用いて最大公約数を求める関数を作成せよ。. 与えられた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);

darius
Download Presentation

高度プログラミング演習 (0 8 )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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. ポインタ • コンピュータの構造 メモリ:   番地 (アドレス): 値   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 cのアドレス #include <stdio.h> void main() { 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)までの経路が何通りあるか計算するプログラムを作成せよ。 (x1,y1) (x0,y0)

More Related