2019年11月12日課題

C言語

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

三角形の内角課題

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

実行イメージ

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

残りの辺は60度です

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

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

 

ootu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#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

1
2
3
4
5
6
7
8
9
10
11
12
#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

1
2
3
4
5
6
7
8
9
10
11
12
#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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#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;  
}

コメント