第4回:関数(1) (5/25)


演習課題

(1)キーボードから整数を入力すると,その数の2乗を計算し画面に出力するプログラムを作成せよ。

→ これは,情報処理・演習1のレベルですので,省略。

(2)(1)のプログラムの,2乗を計算する部分を関数として書き換えよ。

#include <stdio.h>

int nijo(int a)
{
    return (a*a);
}

void main()
{
    int a;
    
    scanf("%d", &a);
    
    printf("二乗した値:%d\n", nijo(a));
}

(3)(2)で作成した関数を利用して,1から10の10個の数の2乗の和を求めるプログラムを作成せよ.

#include <stdio.h>

int nijo(int a)
{
    return (a*a);
}

void main()
{
    int i, wa=0;  /* 和の初期化を忘れないように! */
    
    for(i=1; i<=10; i++){
        wa += nijo(i);
    }
    
    printf("二乗の和:%d\n", wa);
}

(4)関数へは,数字しか渡すことはできない。これまで使ってきたprintf()関数で,配列を関数に渡す方法はすでに学んでいた。先週のアドレスとポインタ変数を参考に,関数へ配列に入ったデータをまとめて渡す方法を考え,答えなさい。

void main()
{
	char a[]="abc"; 
	printf("%s", a);   /* 関数へ,文字列(文字の配列)を渡している。ここで渡しているのは何でしょう? */
} 

→ もうわかりますね。

(5)関数からは,数字を一つだけしか戻すことはできない。これまで使ってきたscanf()関数では,関数から戻り値を用いないで数字や文字列を受け取ることができていた。先週のアドレスとポインタ変数を参考に,数字や配列を,戻り値を用いないで受け取る方法を考え,答えなさい。

void main()
{
	int a;
	char str[100];

	scanf("%d", &a);   /* 関数で,入力された値が変数aに入力される。ここで関数に渡してるのは何でしょう? */
	scanf("%s", str);   /* 同様に,文字列が入力される */
} 

→ これもOKですね。