9. 関数の応用

9. 関数の応用#

Source code#

関数に数値を渡す

#include <stdio.h>

double ave(double x, double y);

int main(void)
{
    double a = 100, avdt;
    avdt = ave(a, 200);
    printf("%f\n", avdt);
    return 0;
}

double ave(double x, double y)
{
    double wk;
    wk = (x + y) / 2.0;
    return wk;
}

配列を関数に渡す

#include <stdio.h>

void disp_ary(int nn[])
{
    printf("nn[0]=%d\n", nn[0]);
    printf("nn[4]=%d\n", nn[4]);
}

int main(void)
{
    int dt[5] = {100, 200, 300, 400, 500};

    disp_ary(dt);

    return 0;
}

Problem#

問題1. 2つの整数の平均値をdouble型で返す関数averageを作れ.またその動作を確認せよ.

#include <stdio.h>
double average(int num1, int num2);

int main(void){
	int x,y;
	double ave;
	scanf("%d",&x);
	scanf("%d",&y);
	ave = average(x,y);
	printf("average of %d and %d = %f\n",x,y,ave);
	return 0;
}

double average(int num1, int num2){
    // ???
}

問題2. int型の配列とその長さを引数として渡すと,その平均値をdoubleで返す関数average2を作れ.またその動作を確認せよ.

#include <stdio.h>
double average2(int s[], int len);

int main(void){
	int a[] = {2,4,6,1,5};
	printf("%f\n", average2(a,5));
	return 0;
}

double average2(int s[], int len){
	// ???
}

問題3. 引数に渡されたint型の配列の各数値を2倍にする関数nibaiを作れ.またその動作を確認せよ.

#include <stdio.h>
void nibai(int s[], int len){
	// ???
}

int main(void){
	int i,a[5] = {1,2,3,4,5};
	for(i=0;i<5;i++){
		printf("%d\t",a[i]);
	}
	printf("\n");
	nibai(a,5);
	for(i=0;i<5;i++){
		printf("%d\t",a[i]);
	}
	return 0;
}

問題4. 引数に渡された文字列を調べて「a」があれば「@」に置き換える関数replaceを作れ.またその動作を確認せよ.

#include <stdio.h>
void replace(char s[])
{
    // ???
}

int main(void)
{
	char st[]="Okadai Taro";
	puts(st);
	replace(st);
	puts(st);
	return 0;
}

Solutions#

#include <stdio.h>
double average(int num1, int num2);

int main(void){
	int x,y;
	double ave;
	scanf("%d",&x);
	scanf("%d",&y);
	
	ave = average(x,y);
	printf("average of %d and %d = %f\n",x,y,ave);
	
	return 0;
}

double average(int num1, int num2){
	return (num1 + num2)/2.0;
}
#include <stdio.h>
double average2(int s[], int len);

int main(void){
	int a[] = {2,4,6,1,5};
	printf("%f\n", average2(a,5));
	return 0;
}

double average2(int s[], int len){
	double sum=0;
	int i;
	for(i=0; i<len; i++){
		sum += s[i];
	}
	return sum/len;
}
#include <stdio.h>
void nibai(int s[], int len){
	int i;
	for(i=0;i<len;i++){
		s[i] = s[i] * 2;
	}
}

int main(void){
	int i,a[5] = {1,2,3,4,5};
	for(i=0;i<5;i++){
		printf("%d\t",a[i]);
	}
	printf("\n");
	nibai(a,5);
	for(i=0;i<5;i++){
		printf("%d\t",a[i]);
	}
	return 0;
}
#include <stdio.h>

void replace(char s[])
{
	int i=0;
	while(s[i]){
		if(s[i]=='a') s[i]='@';
		i++;
	}
}

int main(void)
{
	char st[]="Okadai Taro";
	puts(st);
	replace(st);
	puts(st);
	return 0;
}