第8回演習,小テストの解答例


(1) 1!+2!+・・・n!を求めるプログラム



#include<stdio.h>
void main()
{
	int i,n,kaijyo,sum;		/*kaijyoは各整数の階乗値,sumは各階乗値の和*/

	printf("n="); scanf("%d",&n);

	if(n<1){
		printf("1以上の自然数を入力してください.¥n");
	}else{
		sum=0;
		kaijyo=1;
		for(i=1;i<=n;i++){
			kaijyo*=i;
			sum+=kaijyo;
			}
	printf("ans=%d¥n",sum);
	}
}


(2) 3辺を入力し,三角形ができるかどうか判定して面積を求めるプログラム


#include<stdio.h>
#include<math.h>
void main()
{
	float a,b,c,h,s;		/*a,b,cは三角形の一辺,sは(a+b+c)/2.0の値,hは面積を求める式の√の中身*/
	
	printf("a="); scanf("%f",&a);
	printf("b="); scanf("%f",&b);
	printf("c="); scanf("%f",&c);

	if(a+b<c || a+c<b || b+c<a){
		printf("三角形になりません.¥n");}
	else{
		printf("三角形ができるので面積を求めます.¥n");

		s=(a+b+c)/2.0;
		h=s*(s-a)*(s-b)*(s-c);

		printf("面積は%fです.¥n",sqrt(h));}

}


(3) n件の実数を入力し,標準偏差を求めるプログラム


#include<stdio.h>
#include<math.h>
void main()
{
	int n,i;
	float a,b,m,v,hensa,sum1,sum2;		/*aは入力するデータ,bは入力したデータの二乗値,sum1はデータの和,sum2はデータの二乗値*/

	printf("n="); scanf("%d",&n);
	
	sum1=0.0;
	sum2=0.0;
	for(i=0;i<n;i++){
		printf("%d件目のデータ=",i+1); scanf("%f",&a);
		b=a*a;
		sum1+=a;
		sum2+=b;
		}
	m=sum1/(float)n;
	v=sum2/(float)n-m*m;
	hensa=sqrt(v);
	
	printf("平均値は%f,分散は%f,標準偏差は%f¥n",m,v,hensa);
}


(小テスト) 一桁の自然数AとBで,(A*10+B)-(B*10+A)=45(小林先生のクラスは72)になるA,Bの組み合わせを求めるプログラム


#include<stdio.h>
void main()
{
	int A,B,s;

	for(A=0;A<=9;A++){
		for(B=0;B<=9;B++){
			s=(A*10+B)-(B*10+A);
			if(s==45){		/*小林先生のクラスはs==72*/
				printf("A=%d,B=%d¥n",A,B);
			}
		}
	}
}