2019年11月12日課題

C言語

3つの課題から好きなものを選択して提出。

三角形の内角課題

三角形2辺の内角を入力すると残りの1辺の内角の大きさが表示されるプログラム

実行イメージ

1つ目の辺の角度? 90
2つ目の辺の角度? 30

残りの辺は60度です

※三角形の内角の和は180度であることを利用する

double変数を使って小数点以下(実数)にも対応している。
いいと思うよ。

 

ootu

#include <stdio.h>
int main(void)
{
	double x,y,n;

	printf("三角形の角度をもとめます\n\n");

	printf("数値1を入力してください:");
	scanf("%lf", &y);
	printf("数値2を入力してください:");
	scanf("%lf", &n);
	x = 180 - (y+n);
			

	printf("%fです\n",x);

	return 0;
}

こちらもdouble変数を使って小数点以下(実数)にも対応している。
いいと思うよ。でも最初のprintf文のメッセージが変。

kami

#include <stdio.h>
int main(void)
{
    double x, y, z;
      
    printf("2つの数の引き算をします\n\n");
  
    printf("数値1を入力してください: ");
    scanf("%lf", &x);
    printf("数値2を入力してください: ");
    scanf("%lf", &y);
  
    z = 180 - (x + y);    
	 printf("%f\n", z);
      
    return 0;
}

int型で実行するならこうなる。
OKです。

ot

#include <stdio.h>
int main(void)
{
	int i,k,r;

	i=180;

	printf("三角形の三つの角度(合計180)\n");
	printf("1つ目の角度\n");
	scanf("%d",&k);
	printf("2つ目の角度\n");
	scanf("%d",&r);
	printf("3つ目の角度は%dです",i-k-r);

	return 0;
}

こちらもint型での計算。
シンプルでOK。

nar

#include <stdio.h>

int main(void)
{
	int i,j,k;

	printf("三角形の内角を求めます\n");
	printf("角度1: ");
	scanf("%d",&i);
	printf("角度2: ");
	scanf("%d",&j);

	printf("三つ目の角度は %d°です",180-i-j);

	return 0;
}

19の段までの九九

1の段から19の段までの九九を表示する。

実行イメージ

[1の段]
1 × 1 = 1
1 × 2 = 2
1 × 3 = 3
:
1 × 17 = 17
1 × 18 = 18
1 × 19 = 19

[2の段]
2 × 1 = 2
2 × 2 = 4
:
:
:
[19の段]
19 × 1 = 19
19 × 2 = 38
19 × 3 = 57
:
19 × 16 = 304
19 × 17 = 323
19 × 18 = 342
19 × 19 = 361

※ループの入れ子を使う

表示がきれいに揃っていてOK!
字下げに注意。

kawa

#include<stdio.h>

int main(void)
{
	int x,y;
	
	for(x=1;x<20;x++){
		printf("\n[%dの段]\n",x);
		for(y=1;y<20;y++){
		printf("%2d×%2d=%4d\n",x,y,x*y);
		}
	}
	return 0;
}	

こちらも表示がきれいに揃っています。OK!
こちらも字下げに注意。

taka

#include <stdio.h>
int main(void)
{
	int x, y;
	for(x = 1; x<20; x++){
		printf("\n[%dの段]\n",x);
	for(y = 1; y<20; y++){
	printf("%2d*%2d=%4d\n",x,y,x*y);
	}
	}
	return 0;
}

こちらも表示がきれいに揃っているが、やはり字下げがおかしい。

sat

#include<stdio.h>
int main(void)
{
	int x, y;
	for(x = 1; x <20; x++){
		printf("\n[%dの段]\n",x);	
	for(y = 1; y <20; y++){
	printf("%2d*%2d=%4d\n",x,y,x*y);
	}
	}
	return 0;
}

これは大作だね。
表示結果は問題ないが、プログラムに工夫の余地あり。
ループの入れ子(ループの中のループ)を使ってみてください。

ot

#include <stdio.h>
int main(void)
{
	int i,k;

	for(i=1; i<20; i++){
	k=1*i;
	printf("1×%d=%d\n",i,k);
	}

	for(i=1; i<20; i++){
	k=2*i;
	printf("2×%d=%d\n",i,k);
	}

	for(i=1; i<20; i++){
	k=3*i;
	printf("3×%d=%d\n",i,k);
	}

	for(i=1; i<20; i++){
	k=4*i;
	printf("4×%d=%d\n",i,k);
	}

	for(i=1; i<20; i++){
	k=5*i;
	printf("5×%d=%d\n",i,k);
	}

	for(i=1; i<20; i++){
	k=6*i;
	printf("6×%d=%d\n",i,k);
	}

	for(i=1; i<20; i++){
	k=7*i;
	printf("7×%d=%d\n",i,k);
	}

	for(i=1; i<20; i++){
	k=8*i;
	printf("8×%d=%d\n",i,k);
	}

	for(i=1; i<20; i++){
	k=9*i;
	printf("9×%d=%d\n",i,k);
	}

	for(i=1; i<20; i++){
	k=10*i;
	printf("10×%d=%d\n",i,k);
	}

	for(i=1; i<20; i++){
	k=11*i;
	printf("11×%d=%d\n",i,k);
	}

	for(i=1; i<20; i++){
	k=12*i;
	printf("12×%d=%d\n",i,k);
	}

	for(i=1; i<20; i++){
	k=13*i;
	printf("13×%d=%d\n",i,k);
	}

	for(i=1; i<20; i++){
	k=14*i;
	printf("14×%d=%d\n",i,k);
	}

	for(i=1; i<20; i++){
	k=15*i;
	printf("15×%d=%d\n",i,k);
	}

	for(i=1; i<20; i++){
	k=16*i;
	printf("16×%d=%d\n",i,k);
	}

	for(i=1; i<20; i++){
	k=17*i;
	printf("17×%d=%d\n",i,k);
	}

	for(i=1; i<20; i++){
	k=18*i;
	printf("18×%d=%d\n",i,k);
	}

	for(i=1; i<20; i++){
	k=19*i;
	printf("19×%d=%d\n",i,k);
	}

	return 0;
}

シンプルでOK。
表示が右揃えになっていると更に良い。

nar

#include <stdio.h>

int main(void)
{
	int i,j,k;

	for(i=1;i<20;i++){
		for(j=1;j<10;j++){
			printf(" %d × %d = %d\n",i,j,i*j);
		}
	}

	return 0;
}

じゃんけん

コンピュータを相手にじゃんけんをするプログラムを作る。

実行イメージ

じゃんけん!1:グー 2:チョキ 3:パー (1~3で選んでください) 2
ポン!

あなた: チョキ コンピュータ: チョキ

あいこで…1:グー 2:チョキ 3:パー (1~3で選んでください) 1
しょ!

あなた: グー コンピュータ: チョキ

あなたの勝ち!!!!!!

※グー、チョキ、パーを数値の1、2、3などに見立てると判定がしやすい

コンパイルエラーが出てしまった。
どこをどう直せばいいだろう?1箇所直したら動いたよ。

kos

 

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
  int a,b;

  srand(time(NULL));
  c=rand()%3+1;

  printf("ジャンケン[1:グー 2:チョキ 3:パー]\n ");
  scanf("%d",&a);

  if(a==1&&b==1)
		printf("私もグー、アイコです。\n");
  else if(a==1&&b==2)
		printf("私はチョキあなたの勝ちです。\n");
  else if(a==1&&b==3)
		printf("私はパーあなたの負けです。\n");
  else if(a==2&&b==1)
		printf("私はグーあなたの負けです。\n");
  else if(a==2&&b==2)
		printf("私もチョキ、アイコです。\n");
  else if(a==2&&b==3)
		printf("私はパーあなたの勝ちです。\n");
  else if(a==3&&b==1)
		printf("私はグーあなたの勝ちです。\n");
  else if(a==3&&b==2)
		printf("私はチョキあなたの負けです。\n");
  else if(a==3&&b==3)
		printf("私もパー、アイコです。\n");
  else
		printf("??\n");

	return 0;
}

これは良く出来ている。無限ループの使い方がいい。
あいこの処理に工夫がみられるね。
字下げをきちんとしよう。

nar

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
	int i,j;

	srand((unsigned)time(NULL));

	printf(" じゃんけんしよう!\n");

	printf(" じゃんけん... ");
	while(1){
	printf("  1 >> グー   2 >> チョキ   3 >> パー   ");
	scanf("%d",&i);

	if(i==1)printf(" 自分:グー");
	else if(i==2)printf(" 自分:チョキ");
	else printf(" 自分:パー");

	j = rand() % 3 + 1;

	if(j==1)printf("\t相手:グー\n");
	else if(j==2)printf("\t相手:チョキ\n");
	else printf("\t相手:パー\n");

	if(i==j)printf("\n あいこで... ");
	else if(i == 1 && j == 2){printf("\n あなたの勝ち! ");break;}
	else if(i == 1 && j == 3){printf("\n 相手の勝ち! ");break;}
	else if(i == 2 && j == 1){printf("\n 相手の勝ち! ");break;}
	else if(i == 2 && j == 3){printf("\n あなたの勝ち! ");break;}
	else if(i == 3 && j == 1){printf("\n あなたの勝ち! ");break;}
	else if(i == 3 && j == 2){printf("\n 相手の勝ち! ");break;}
	}

	return 0;	
}

コメント