身につくC言語-演習問題3回目 解答と解説-

問題1 画面に整数を入力し出力しなさい。(ただし、nyuryoku関数を作成しその関数の中で入力させること、戻り値はなくてよい)


#include<stdio.h>
void nyuryoku(void);

int main(void)
{
	nyuryoku();
	
	return 0;
	
}

void nyuryoku(void)
{
	int a;
	
	scanf("%d",&a);
	
	printf("%d\n",a);
	
}

 

関数に戻り値や、引数があるのかをしっかりと見極めることができるようにしましょう。

 

問題2 main関数で整数を入力させ2乗を出力しなさい(nizyo関数内でその数を2乗して戻り値も設定すること)


#include<stdio.h>
int nizyo(int x);

int main(void)
{
	int a;
	int b;
	
	printf("整数を入力してください\n");
	
	scanf("%d",&a);
	
	b=nizyo(a);
	
	printf("二乗すると%dです。\n",b);
	
	return 0;
}

int nizyo(int x)
{
	return x*x;
}

問題3 生徒5人の英語の点数と数学の点数を入力し、英語の点数の合計と数学の点数の合計を出力しなさい。値は任意(ただし構造体を使い変数を確保すること)


#include<stdio.h>

typedef struct{
	int eng;
	int math;
}Student;

int main(void)
{
	Student std[5];
	int i;
	
	int engsum=0;
	int mathsum=0;
	
	for(i=0;i<5;i++)
	{
		printf("%d人目\n",i+1);
		printf("英語:");
		scanf("%d",&std[i].eng);
		printf("数学:");
		scanf("%d",&std[i].math);
	}
	
	for(i=0;i<5;i++)
	{
		engsum+=std[i].eng;
		mathsum+=std[i].math;
	}
	
	printf("英語の合計は%dです。\n数学の合計は%dです。\n",engsum,mathsum);
	
	return 0;
}

 

これは少し難しい問題だったと思います。

 

構造体の要素にアクセスするには「std.math」のように「.」を使います。

 

さらに、Student型のstdを配列で宣言しています。

 

これにより、for文での処理が可能になりました。

 

ソースコードをじっくりと観察して理解していきましょう。

 

問題4 main関数で「おはようございます」を入力し、pri関数で出力しなさい。戻り値はない。


#include<stdio.h>

void pri(char a[30]);

int main(void)
{
	char a[30];
	
	scanf("%s",a);
	
	pri(a);
	
	return 0;
}

void pri(char a[30])
{
	printf("%s",a);
	
}

 

これは文字列を引数として設定することがきもです。