課題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;
}