(1)変数 a と b の値を,入れ替えるswap()関数を作成し,プログラムを完成させよ.
#include <stdio.h>
void swap(float *a, float *b)
{
float tmp;
tmp = *a;
*a = *b;
*b = tmp;
return;
}
void main()
{
float a=2.0, b=3.0;
printf("a=%f, b=%f¥n", a, b);
swap(&a, &b);
printf("a=%f, b=%f¥n", a, b);
}
(2)関数を用いて2つの整数の合計と平均を求めるプログラムを作成せよ.
#include <stdio.h>
void sum_ave(int a,int b,int *sum,int *ave)
{
*sum = a + b;
*ave = (a + b)/2;
}
void main()
{
int a=10;
int b=4;
int sum=0;
int ave=0;
printf("a=%d, b=%d,sum=%d, ave=%d¥n", a, b,sum,ave);
sum_ave(a, b, &sum, &ave);
printf("a=%d, b=%d,sum=%d, ave=%d¥n", a, b,sum,ave);
}
(3)実数型配列の要素をキーボードから10個入力,平均値の算出,最大値と最小値の算出, 大きい順に並び替え(ソート),配列の中身表示の5つの関数を作成せよ.
#include <stdio.h>
void swap(float *a, float *b)
{
float tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
void input(float *p, int n)
{
int i;
for(i=0;i<n;i++){
printf("data[%d]=",i);
scanf("%f",p+i);
}
}
float average(float *p, int n)
{
int i;
float ave=0.0;
for(i=0;i<n;i++) {
ave += *(p+i);
}
ave /= n;
return ave;
}
void max_min(float *p, int n, float *max, float *min)
{
int i;
*max = *min = *p;
for(i=1;i<n;i++){
if(*max < *(p+i)){
*max = *(p+i);
}
}
for(i=1;i<n;i++){
if(*min > *(p+i)){
*min = *(p+i);
}
}
}
void sort(float *p, int n)
{
int i, j;
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(*(p+i) < *(p+j)){
swap(p+i, p+j);
}
}
}
}
void output(float *p, int n)
{
int i;
for(i=0;i<n;i++){
printf("data[%d]=%f¥n",i,*(p+i));
}
}
void main()
{
float data[10];
float max,min;
input(data,10);
printf("平均値 = %f¥n",average(data,10));
max_min(data,10,&max,&min);
printf("最大値 = %f,最小値 = %f¥n",max,min);
sort(data,10);
output(data,10);
}