第12回 前期のまとめ(解答) (7/9)


演習課題

(1)10個のデータから,平均値を求めて,平均値以上のデータを大きい順に表示するプログラムを作成せよ

<解答>


#include <stdio.h>

void main()
{
	float data[10]={2.5, 9.5, 4.23, 28.59, 30.2, 13.7, 9.14, 8.65, 7.81, 10.34};
	float sum=0,ave,temp;
	int i,j;
	
	for(i=0;i<10;i++)
		sum += data[i];
	
	ave = sum/10.0;
	
	for(i=0;i<9;i++){
		for(j=i+1;j<10;j++){
			if(data[i]<data[j]){
				temp=data[j];
				data[j]=data[i];
				data[i]=temp;
			}
		}
		
		if(data[i]>=ave)
			printf("%d番目に大きな数字は%f¥n",i+1,data[i]);
	}
}

(2)2次方程式ax2+bx+c=0(a=0の場合もありうる)の係数a,b,cを入力し,判別式D(=b2-4ac)の値を求め,D>0の時は2つの実数解を求め,
D=0の時は重解を求め,D<0の時は「解なし」として結果を画面に表示するプログラムを作成せよ.

<解答>


#include <stdio.h>
#include <math.h>

void main()
{
	float a,b,c,d;
	
	printf("aの入力:"); scanf("%f",&a);
	printf("bの入力:"); scanf("%f",&b);
	printf("cの入力:"); scanf("%f",&c);
	
	d = b*b-4*a*c;
	
	if(d>0 && a==0){
		printf("xの解は%fです¥n",-c/b);
	}else if(d>0 && a!=0){
		printf("xの解は%fと%fです¥n",(-1*b+sqrt(d))/(2*a),(-1*b-sqrt(d))/(2*a));
	}else if(d==0){
		printf("xの解は%fです¥n",(-1*b)/(2*a));
	}else{
		printf("解無し¥n");
	}
}

(3) 2つの整数a, bを入力すると,その数を含めて,2つの数の間の整数の和を求めるプログラムを作成せよ.ただし,a, b どちらが大きいかは,わからない.

例:a=5, b=1の場合,答えは15(1+2+3+4+5)

<解答>



#include <stdio.h>

void main()
{
	int a,b,i,sum=0;
	
	printf("aの入力:"); scanf("%d",&a);
	printf("bの入力:"); scanf("%d",&b);
	
	if(a>=b){
		for(i=b;i<=a;i++)
			sum += i;
			
		printf("%d,%d間の整数の合計は%dです",b,a,sum);
	}else{
		for(i=a;i<=b;i++)
			sum += i;
	
		printf("%d,%d間の整数の合計は%dです",a,b,sum);
	}
}

(4)キーボードから入力した整数a,bの割り算 a ÷ b の商とあまりを引き算のみを用いて計算し,画面に表示するプログラムを作成せよ.
(例えばaとして17,bとして3を入力すると,「5 あまり 2」と表示する.「 / 」,「 % 」演算を使用しない事.)

<解答>


#include <stdio.h>

void main()
{
	int a,b,quot=0,rema;
	
	printf("aの入力:"); scanf("%d",&a);
	printf("bの入力:"); scanf("%d",&b);
	
	
	rema = a;
	while(rema>b){
		rema -= b;
		quot++;
	}
	
	printf("商は%d,余りは%d¥n",quot,rema);
	
}

(5)4*4の二次元配列の中身を上下逆転するプログラムを作成せよ.

<解答>



#include <stdio.h>

void main()
{
	int X[4][4] = {{1,2,3,4},		/*行列の定義*/
	               {5,6,7,8},
		       {9,10,11,12},
		       {13,14,15,16}};
		   
	int i,j,temp;
	
	
	for(i=0;i<2;i++){
		for(j=0;j<4;j++){			/*行列の並び替え*/
			temp = X[3-i][j];
			X[3-i][j] = X[i][j];
			X[i][j] = temp;
		}
	}
	
	for(i=0;i<4;i++){
		for(j=0;j<4;j++)
			printf(" %d ",X[i][j]);
	printf("¥n");
	}

}