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