第6回演習の解答例


(1) a÷bとa%bの値を表示するプログラム


#include<stdio.h>
void main()
{
	int a, b, d;
	float c;

	printf("a=");scanf("%d", &a);
	printf("b=");scanf("%d", &b);

	c = (float) a / (float)b ;
	d = a % b;

	printf("a/b=%f¥n",c);
	printf("a%b=%d¥n",d);
} 

(2)球の表面積と体積を計算するプログラム


#include<stdio.h>

void main()
{
	int r;
	float V,S;

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

	V = (4*3.14*r*r*r)/3;
	S = 4*3.14*r*r;

	printf("体積=%.2f¥n",V);
	printf("面積=%.2f¥n",S);
} 

    

(3)生きた日数を計算するプログラム


#include <stdio.h>

void main()
{
	int year1,month1,date1,year2,month2,date2,a,b,c;

	printf("自分の生年月日¥n");
	printf("年");	scanf("%d", &year1);
	printf("月");	scanf("%d", &month1);
	printf("日");	scanf("%d", &date1);
	
	printf("あなたの誕生日は%d年%d月%d日です¥n",year1,month1,date1);
	
	printf("現在の年月日は?¥n");
	printf("年");	scanf("%d", &year2);
	printf("月");	scanf("%d", &month2);
	printf("日");	scanf("%d", &date2);
	
	printf("あなたの誕生日は%d年%d月%d日です¥n",year2,month2,date2);

	a = year1*365+month1*30+date1;
	b = year2*365+month2*30+date2;
	c = b-a;

	printf("あなたの生きた日数は%dです¥n",c);
} 

    

(4)三角形の成立条件と面積を求めるプログラム


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

void main()
{
	int a,b,c,d;
	float r,S;
	
	printf("三角形の一辺長さa=");	scanf("%d", &a);
	printf("三角形の一辺長さb=");	scanf("%d", &b);
	printf("三角形の一辺長さc=");	scanf("%d", &c);
	
	d=a+b+c;
	
	if(a<b+c && b<a+c && c<a+b){
		printf("三角形ができます¥n");
		
		r = (float) d / 2.0;
		S = sqrt(r*(r-a)*(r-b)*(r-c));
		printf("面積は%fです",S);
					}
	else{
		printf("三角形ができません¥n");
		}

} 

    

(5) 2次方程式の係数を入力し,判別式の値を求め,解をもつかどうか判定するプログラム


#include <stdio.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){
		printf("2つの実数解を持つ¥n");
	}else if(D==0.0){
		printf("重解を持つ¥n");
	}else{
		printf("2つの虚数解を持つ¥n");
	}
}

(6)解の公式を用いて計算するプログラム


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

void main()
{
 	float a,b,c,D,x1,x2;

 	printf("a="); scanf("%f",&a);
 	printf("b="); scanf("%f",&b);
 	printf("c="); scanf("%f",&c);

 	D=b*b-4*a*c;
	x1 = (-b+sqrt(D))/(2*a);
	x2 = (-b-sqrt(D))/(2*a);
	
	if(D>0){
		printf("2つの実数解を持つ¥n");
		printf("解は%.2fと%.2fです¥n",x1,x2);
	}else if(D==0.0){
		printf("重解を持つ¥n");
		printf("解は%.2fです¥n",x1);
	}else{
		printf("解なし¥n");
	}
 	
}

(7)魔王とか書いてあるプログラム


#include<stdio.h>

void main()
{
	int a,i;
	i=1;
	
	printf("王様:勇者よ、魔王を倒しに行ってはくれぬか?¥n");
	printf("「はい」ならば1を「いいえ」ならば0を入力してください");scanf("%d",&a);
	
	if(a==1){
		printf("王様:おお、ではさっそく旅の準備をしてくれたまえ。¥n");
		}
	else if(a==0){
		while(a==0){
			printf("王様:そんなことを言わずに頼むよ。¥n");
			i++;
			printf("王様:勇者よ、魔王を倒しに行ってはくれぬか?¥n");
		
			printf("「はい」ならば1を「いいえ」ならば0を入力してください");scanf("%d",&a);
			    }
			}
	else{
		printf("0か1を入力してください¥n");
		
	
	printf("王様:大事なことなので%d回言いました¥n",i);	
}

(8)条件から外れるまで計算を繰り返すプログラム


#include <stdio.h>

void main ()
{
	float weight,weight1,weight2,energy;
	printf("あなたの今の体重(kg)は?");scanf("%f",&weight1);
	printf("あなたの目標体重(kg)は?");scanf("%f",&weight2);
	
	weight = weight1 - weight2;
	energy = weight*7500;

	while(energy>=2500 && energy<40000){
			

		printf("あなたは残り%.2f(kcal)消費する必要があります¥n",energy);
											
			if(energy<=10000){
				printf("ビリーと1ヶ月¥n");
					  }					
			else if(energy<=20000){
				printf("ビリーと2ヶ月¥n");
					  }
									
			else if(energy<=30000){
				printf("ビリーと3ヶ月¥n");
						  }
									
			else {
				printf("ビリーと4ヶ月¥n");
				}
			
			printf("運動後の体重は?¥n");
			printf("あなたの今の体重(kg)は?");scanf("%f",&weight1);
			printf("あなたの目標体重(kg)は?");scanf("%f",&weight2);	
			
			weight = weight1 - weight2;
			energy = weight*7500;
				      }

}

(9)while文とカウンタを用いたプログラム


#include <stdio.h>
void main()
{
	int n=1;
	
	while(n<=40){
		if(n%3==0 || n%10==3 || n/10==3){
			printf("%d  アホ¥n¥n",n);                 /* 3の倍数と3のつく数字がアホとなる */
						   }
		else {
			printf("%d  正常¥n¥n",n);
			}
		n++;
		     }
	printf("おもろー¥n");
}

(10)3回先にどちらかが勝つまで繰り返すプログラム


#include <stdio.h>
void main()
{
 	int a,b,win1,win2;
	win1=0;
	win2=0;

	while(win1<3 && win2<3){
		printf("a君とb君がじゃんけんします.¥nグー : 1 チョキ : 2 パー : 3¥n");
 	
		printf("a君は何を出しますか?¥n"); scanf("%d",&a);
 		printf("b君は何を出しますか?¥n"); scanf("%d",&b);


 			if(a==1 && b==2){
				printf("a君が勝ちです.¥n");
				win1++;
			}else if(a==1 && b==3){
				printf("b君が勝ちです.¥n");
				win2++;
			}else if(a==2 && b==1){
				printf("b君が勝ちです.¥n");
				win2++;
			}else if(a==2 && b==3){
				printf("a君が勝ちです.¥n");
				win1++;
			}else if(a==3 && b==1){
				printf("a君が勝ちです.¥n");
				win1++;
			}else if(a==3 && b==2){
				printf("b君が勝ちです.¥n");
				win2++;
			}else{
				printf("あいこです.¥n");
			}
				}
	if(win1==3){
		printf("A勝ち¥n");}
	else{
		printf("B勝ち¥n");
		}
}

(10)別解



#include <stdio.h>
void main()
{
 	int a,b,win1,win2;
	win1=0;
	win2=0;

	while(win1<3 && win2<3){
		printf("a君とb君がじゃんけんします.¥nグー : 1 チョキ : 2 パー : 3¥n");
 	
		printf("a君は何を出しますか?¥n"); scanf("%d",&a);
 		printf("b君は何を出しますか?¥n"); scanf("%d",&b);


 			if(b==(a%3)+1){
				printf("a君が勝ちです.¥n");
				win1++;
			}else if(b==((a+1)%3)+1){
				printf("b君が勝ちです.¥n");
				win2++;
			}else if(a==b){
				printf("あいこです.¥n");
			}else{
				printf("1か2か3をちゃんと入力してください¥n"
				}
	if(win1==3){
		printf("Aが先に3回勝ちました¥n");}
	else{
		printf("Bが先に3回勝ちました¥n");
		}
}