湘南工科大学 2013年12月10日 情報理論2 湘南工科大学情報工学科 准教授 小林 学 関数 引数(ひきすう): 戻り値(もどりち): P.2 関数が受け取る値 関数が出力する値 関数を使うときの書き方 受け取る値を入れ る変数 戻り値の型 関数名(引数の型 引数,..,引数の型 引数){ 関数の本体 return(戻り値); } 関数が出力する値 関数の使用例 戻り値ansの型 int ans の値が a に入る } 小林ルール: 関数名の単語の先頭を大 文字にする Func(int x, int y){ int ans; x に 3が入り, ans = x + y; y に 5 が入る return(ans); void main(void){ int a; a = Func(3, 5); printf("%d\n",a); } 実行結果 [例題1] 二つの整数 x, y の大きい方の値を計 算する関数 #include<stdio.h> int Max2(int x, int y){ int ans; if(x>y) ans = x; else ans = y; return(ans); } void main(void){ int a; a = Max2(3, 5); printf("最大値:%d\n", a); } 実行結果 P.4 [例題2] 実数 x が0以上ならば1を,xが負ならば-1 を返す関数 Sign #include<stdio.h> int Sign(double x){ if(x>=0) return(1); return(-1); } void main(void){ int a; a = Sign(-3.7); printf("符号:%d\n", a); } 実行結果 P.5 [紙に書く課題1] 以下のプログラムの画面出力を用紙に書きなさい Page 6 グローバル変数 #include<stdio.h> int Dat[5]={0,1,0,0}; //グローバル変数 int ACount(void){ グローバル変数は int i, count=0; //ローカル変数 どの関数でも使え for(i=0;i<4;i++){ て中身は一つ if(Dat[i]==0) count++; 小林ルール: } グローバル変数の return(count); 名前の先頭を大文 } 字にする void main(void){ int ans; //ローカル変数 ローカル変数はそ ans = ACount(); の関数でしか使え printf(“0の数:%d\n", ans); ない。別の関数で } は別の中身 [紙に書く課題2] 以下のプログラムの画面出力を用紙に書きなさい Page 8 [プログラミング課題1] 1から n までの和を計算する 関数SumN を作成しなさい #include<stdio.h> ??? SumN(???){ ??? } void main(void){ int a; a = SumN(10); printf("1から10までの和:%d\n", a); } 実行結果 P.9 [プログラミング課題2] xのy乗を計算して返す関数 Bekiを作成しなさい #include<stdio.h> 実行結果 ??? Beki(???){ ??? } void main(void){ int a; a = Beki(2 , 3); printf("2の3乗は:%d\n", a); } P.10 Page 11 [プログラミング課題3]配列Dat1とDat2の先頭からの連 続一致文字数を計算する関数Icchichoのプログラムを作 成しなさい #include<stdio.h> int Dat1[5]={0,1,1,0}, Dat2[5]={0,1,0,1}; ??? Icchicho(???){ ??? } void main(void){ int ans; ans = Icchicho(); printf("先頭から連続一致した文字の数:%d\n", ans); } Page 12 [プログラミング課題4] 配列Datを左に n シフトする関数 Shiftのプログラムを作成しなさい #include<stdio.h> char Dat[10]={0,1,1,0,1,0,1,0,1,-1}; void Shift(???){ //戻り値が無い場合にはvoid ??? } void main(void){ int i; printf("もとのDat:"); for(i=0;i<10;i++) printf("%d,", Dat[i]); Shift(3); printf("\nShift後のDat:"); for(i=0;i<10;i++) printf("%d,", Dat[i]); } Page 13 [プログラミング課題5] 10進数の数字を2進数に変換する 関数を作成しなさい. (配列 Dat [i]に2進数の下から i ビット目を入れる) #include<stdio.h> int Dat[32]; void Binary(???){ ??? } void main(void){ int i; Binary(100); for(i=31;i>=0;i--) printf("%d", Dat[i]); }
© Copyright 2024 ExpyDoc