課題1
5つのデータのうち最大値を求めるプログラムが下記に示されている。 下記のプログラムを適当な名前(例えば、func2-1.c)で作成し、実行して 動作確認せよ。
#include <stdio.h> int max_return(int a, int b, int c, int d, int e) { int max; max = a; if(max < b) max = b; if(max < c) max = c; if(max < d) max = d; if(max < e) max = e; return max; } int main(void) { int d0, d1, d2, d3, d4; int max; printf("正の整数を5つ入れてください。\n"); scanf("%d %d %d %d %d", &d0, &d1, &d2, &d3, &d4); max = max_return(d0, d1, d2, d3, d4); printf("最大値 = %d\n", max); return (0); }
(実行例) hp3225[susaki]501:~/program% hp3225[susaki]501:~/program% ./a.out 正の整数を5つ入れてください。 1 2 3 4 5 最大値 = 5 hp3225[susaki]502:~/program%
課題2
課題1と同様に、5つのデータのうち最大値を求めるプログラムが下記に 示されているが、一部が*****の ように隠されている。隠された部分を書け。
#include <stdio.h> void max_return(int a, int b, int c, int d, int e, int *max) { *max = a; if(*max < b) *max = b; if(*max < c) *max = c; if(*max < d) *max = d; if(*max < e) *max = e; } int main(void) { int d0, d1, d2, d3, d4; int max; printf("正の整数を5つ入れてください。\n"); scanf("%d %d %d %d %d", &d0, &d1, &d2, &d3, &d4); ********************************************** printf("最大値 = %d\n", max); return 0; }
課題3
課題2と同様に、5つのデータのうち最大値を求めるプログラムが下記に 示されているが、一部が*****のように隠されている。隠された部分を書け。 課題2と異なるのは、5つのデータが配列に格納されている点である。
#include <stdio.h> void max_return(int a, int b, int c, int d, int e, int *max) { *max = a; if(*max < b) *max = b; if(*max < c) *max = c; if(*max < d) *max = d; if(*max < e) *max = e; } int main(void) { int d[10]; int max, i; printf("正の整数を5つ入れてください。\n"); for(i=0; i<5; i++) scanf("%d", &d[i]); ********************************************** printf("最大値 = %d\n", max); return 0; }
課題4
課題3と同様に、5つのデータのうち最大値を求めるプログラムが下記に 示されているが、一部が*****のように隠されている。隠された部分を書け。 課題3と異なるのは、関数に渡すのが、5つのデータが格納されている 配列の先頭のアドレスという点である。
#include <stdio.h> void max_return(int a[], int *max) { int i; *max = a[0]; for(i=1; i<5; i++) if(*max < a[i]) *max = a[i]; } int main(void) { int d[10]; int max, i; printf("正の整数を5つ入れてください。\n"); for(i=0; i<5; i++) scanf("%d", &d[i]); ********************************************** printf("最大値 = %d\n", max); return 0; }
課題5
課題4と同様に、5つのデータのうち最大値を求めるプログラムが下記に 示されているが、一部が*****の ように隠されている。隠された部分(1)-(3)のそれぞれを書け。 課題4と異なるのは、関数内ではポイン タ変数を使用するという点である。
#include <stdio.h> void max_return(int *a, int *max) { int i; (1)********************************************** for(i=1; i<5; i++){ if(*max < *a) *max = *a; (2) ****************************************** } } int main(void) { int d[10]; int max, i; printf("正の整数を5つ入れてください。\n"); for(i=0; i<5; i++) scanf("%d", &d[i]); (3)********************************************** printf("最大値 = %d\n", max); return 0; }
課題6
#include <stdio.h> void keisan(int *a); int main(void) { int num = 3; keisan(&num); printf("NUM = %d\n", num); return 0; } void keisan(int *a) { *a = *a * *a + *a; }