当日のOHP資料です。
関数( Text p.114 - 125 )
Download : sample-001.c ( SJIS 版 )
/*
* 二つの整数の大きい方の値を返す関数
* List 6-1 ( p.115 )
*/
#include <stdio.h>
/*
* 大きい方の値を返す
*/
int maxof ( int x, int y ) {
if ( x > y ) { /* x と y を大小比較 */
return x; /* x が大きい時は x の値を返す */
} else {
return y; /* そうでなければ y の値を返す */
}
}
/*
* main
*/
int main ( void ) {
int na;
int nb;
puts ( "二つの整数を入力してください。" );
printf ( "整数 1:" );
scanf ( "%d", &na );
printf ( "整数 2:" );
scanf ( "%d", &nb );
printf ( "大きい方の値は %d です。\n", maxof ( na, nb ) );
return 0;
}
83 45
C:\usr\c\> sample-001 二つの整数を入力してください。 整数 1:整数 2:大きい方の値は 83 です。 C:\usr\c\>
Download : sample-002.c ( SJIS 版 )
/*
* 関数を利用しない場合
* cf. sample-001.c
*/
#include <stdio.h>
/*
* main
*/
int main ( void ) {
int na;
int nb;
int maxof; /* 関数の値を入れる変数 : 関数の定義の代わりに関数の値を取る変数を用意 */
puts ( "二つの整数を入力してください。" );
printf ( "整数 1:" );
scanf ( "%d", &na );
printf ( "整数 2:" );
scanf ( "%d", &nb );
/*
* 大きい方の値を返す
*/
{ /* 関数本体 : 新しいブロックを作ると、そこで変数の宣言ができる */
/* 関数呼び出し「maxof ( na, nb )」に相当する部分 */
int x = na; /* 仮引数 x を宣言し、それに実引数 na の値を代入 */
int y = nb; /* 仮引数 y を宣言し、それに実引数 nb の値を代入 */
if ( x > y ) { /* x と y を大小比較 */
/* return x; */ /* x が大きい時は x の値を返す */
maxof = x; /* 値を返すという事は、関数の値を決めている事に相当する */
/* return には、もう一つ、関数を終了するという意味もある */
} else {
/* return y; */ /* そうでなければ y の値を返す */
maxof = y;
}
}
/* この時点で、変数 maxof には na と nb の大きい方の値が入っている */
printf ( "大きい方の値は %d です。\n", maxof );
return 0;
}
83 45
C:\usr\c\> sample-002 二つの整数を入力してください。 整数 1:整数 2:大きい方の値は 83 です。 C:\usr\c\>
Download : sample-003.c ( SJIS 版 )
/*
* 三つの int 型整数の最大値を返す関数
* List 6-2 (text p.118)
*/
#include <stdio.h>
/*
* 三つの int 型整数の最大値を返す関数
*/
int max3 ( int x, int y, int z ) {
int max = x; /* とりあえず最大値の候補として x を採択 */
if ( y > max ) { /* y と現在の候補値を比較し */
max = y; /* y の方が大きいならば、y を候補値とする */
} /* そうでなければそのまま */
if ( z > max ) { /* 同様に、z と現在の候補値を比較し */
max = z; /* z の方が大きいならば、z を候補値とする */
} /* そうでなければそのまま */
return max; /* 最終的な結果が、三つの数内の最大値 */
}
/*
* 動作を確認する main 関数
*/
int main ( int argc, char *argv[] ) {
int na;
int nb;
int nc;
puts ( "三つの整数を入力してください。\n" );
printf ( "整数 1:");
scanf ( "%d", &na );
printf ( "整数 2:");
scanf ( "%d", &nb );
printf ( "整数 3:");
scanf ( "%d", &nc );
printf ( "最も大きい値は %d です。\n", max3 ( na, nb, nc ) );
return 0;
}
83 45 25
C:\usr\c\> sample-003 三つの整数を入力してください。 整数 1:整数 2:整数 3:最も大きい値は 83 です。 C:\usr\c\>
Download : sample-004.c ( SJIS 版 )
/*
* 二つの整数の二乗の差を求める
* List 6-3 (text p.119)
*/
#include <stdio.h>
/*
* 二乗値を返す
*/
int sqr ( int x ) {
return x * x;
}
/*
* 二つの数の差を返す
*/
int diff ( int x, int y ) {
return (x > y) ? (x - y) : (y - x);
}
/*
* 動作を確認する main 関数
*/
int main ( int argc, char *argv[] ) {
int kx;
int ky;
int kx2;
int ky2;
puts ( "二つの整数を入力してください。\n" );
printf ( "整数 kx:");
scanf ( "%d", &kx );
printf ( "整数 ky:");
scanf ( "%d", &ky );
kx2 = sqr ( kx );
ky2 = sqr ( ky );
printf ( "kx の二乗と ky の二乗の差は %d です。", diff ( kx2, ky2 ) );
return 0;
}
23 49
C:\usr\c\> sample-004 二つの整数を入力してください。 整数 kx:整数 ky:kx の二乗と ky の二乗の差は 1872 です。C:\usr\c\>
Download : sample-005.c ( SJIS 版 )
/*
* べき乗を求める
* List 6-4 (text p.120)
*/
#include <stdio.h>
/*
* dx の no 乗を返す
*/
double power ( double dx, int no ) {
int i;
double temp = 1.0;
for ( i = 0; i < no; i++ ) {
temp = temp * dx;
}
return temp;
}
/*
* 動作を確認する main 関数
*/
int main ( int argc, char *argv[] ) {
double x;
int n;
printf ( "実数を入力してください : ");
scanf ( "%lf", &x );
printf ( "整数を入力してください : ");
scanf ( "%d", &n );
printf ( "%.2f の %d 乗は %.2f です。", power ( x, n ) );
return 0;
}
4.0 3
C:\usr\c\> sample-005 実数を入力してください : 整数を入力してください : 64.00 の -1078401560 乗は 4.00 です。C:\usr\c\>
/*
* [参考] Ex. 6-2 (text p.118)
* [比較] 2010/06/18 List 6-2
*/
/*
* 三つの int 型整数の最小値を返す関数
*/
#include <stdio.h>
/*
* 三つの int 型整数の最大値を返す関数
*/
int min3 ( int x, int y, int z ) {
/*
** この部分を完成させなさい
*/
}
/*
* 動作を確認する main 関数
*/
int main ( int argc, char *argv[] ) {
int na;
int nb;
int nc;
puts ( "三つの整数を入力してください。\n" );
printf ( "整数 1:");
scanf ( "%d", &na );
printf ( "整数 2:");
scanf ( "%d", &nb );
printf ( "整数 3:");
scanf ( "%d", &nc );
printf ( "最も小さい値は %d です。\n", min3 ( na, nb, nc ) );
return 0;
}
C:\usr\c\> 20100618-1 三つの整数を入力してください。 整数 1:整数 2:整数 3:最も小さい値は 25 です。 C:\usr\c\>
/*
* [参考] Ex. 6-4 (text p.121)
* [比較] 2010/06/18 List 6-3
*/
/*
* int 型整数の四乗値を返す関数
*/
#include <stdio.h>
/*
* int 型整数の二乗値を返す関数
*/
int sqr ( int x ) {
return x * x;
}
/*
* int 型整数の四乗値を返す関数 : ヒント : sqr は利用してよい
*/
int pow4 ( int x ) {
/*
** この部分を完成させなさい
*/
}
/*
* 動作を確認する main 関数
*/
int main ( int argc, char *argv[] ) {
int n;
puts ( "一つの整数を入力してください。\n" );
printf ( "整数:"); scanf ( "%d", &n );
printf ( "%d の4乗値は %d です。\n", n, pow4 ( n ) );
return 0;
}
3
C:\usr\c\> 20100618-2 一つの整数を入力してください。 整数:3 の4乗値は 81 です。 C:\usr\c\>
/*
* [参考] Ex. 6-5 (text p.123)
* [比較] 2010/06/18 List 6-3
*/
/*
* 警報を no 回だけ発する関数
*/
#include <stdio.h>
/*
* 文字 ch を no 個連続表示
*/
void put_nchar ( int ch, int no ) {
while ( no-- > 0 ) {
putchar ( ch );
}
}
/*
* 警報を no 回だけ発する関数
*/
void alert ( int no ) {
/*
** この部分を完成させなさい
*/
}
/*
* 動作を確認する main 関数
*/
int main ( int argc, char *argv[] ) {
int n;
puts ( "一つの整数を入力してください。\n" );
printf ( "整数:"); scanf ( "%d", &n );
printf ( "%d 回数ベルを鳴らします\n", n );
alert ( n );
return 0;
}
3
C:\usr\c\> 20100618-3 一つの整数を入力してください。 整数:3 回数ベルを鳴らします ^G^G^GC:\usr\c\>
/*
* [参考] Ex. 6-6 (text p.125)
* [比較] 2010/06/18 List 6-3
*/
/*
* 画面に「こんにちは。」を表示して改行を行う関数
*/
#include <stdio.h>
/*
* 画面に「こんにちは。」を表示して改行を行う関数
*/
void hello ( void ) {
/*
** この部分を完成させなさい
*/
}
/*
* 動作を確認する main 関数
*/
int main ( int argc, char *argv[] ) {
int n;
hello();
return 0;
}
C:\usr\c\> 20100618-4 こんにちは。 C:\usr\c\>
-->