【C言語】絶対書くテンプレまとめ

# はじめに
C言語でよく使うコードまとめてみた
学校用に書いてるので、今回は`CygwinTerminal`と`TeraPad`を使っています
[報告書テンプレ](https://docs.google.com/document/d/1ZX0dkKVljv8L9Rj1XS-WDumgjPqPwBOtUTg1KR6o9kI/edit)

# 最初のおまじない
```c:test.c
#include <stdio.h>
#include <math.h> // 数学関数
int main(void)
{
    /*
    コード
    */
    return(0);
}
```
`test.c`ファイルを`test.out`にコンパイルする
```terminal:CygwinTerminal
gcc -o test.out test.c
```
数学関数使った人はこっち
```terminal:CygwinTerminal
gcc -lm -o test.out test.c
```
`test.out`を実行する
```terminal:CygwinTerminal
./test.out
```
# C言語で遊んでみた
## 第一回
```c:test.c
#include <stdio.h>
int main(void){
  printf("hello, world\n"); // \n　は改行する
  return(0); // 不要
}
```
1行ずつ実行
```terminal:CygwinTerminal
gcc -o test.out test.c
./test.out
```
結果
![スクリーンショット 2022-05-30 13.47.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2586059/fcc844b2-c2c7-fa6a-400f-c404ac11c4f1.png)

## 第二回
```c:test.c
#include <stdio.h>
int main(void){
  printf("bb000000000\t名前\n"); // \tはタブ(半角8個分)
}
```
1行ずつ実行
```terminal:CygwinTerminal
gcc -o test.out test.c
./test.out
```
結果
![スクリーンショット 2022-05-30 14.52.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2586059/c73c1e98-eb28-1889-2d5a-f2ba4a037925.png)



## 第三回
```c:test.c
// 三角形の底辺a，高さhを，実数値としてキーボードより入力し，面積sを求め，小数点第1位までを表示しなさい。
// *実行結果例に従うこと。
// *小数点第1位までを表示する。
// （第2位で四捨五入）

#include <stdio.h>
int main(void){
  float a, h;
  printf("三角形の底辺は？");
  scanf("%f", &a);
  printf("三角形の高さは？");
  scanf("%f", &h);
  printf("三角形の面積 = %.1f\n", a*h/2); // %.1fはfloatの少数第2位を四捨五入して少数第1位まで表示する
}
```
1行ずつ実行
```terminal:CygwinTerminal
gcc -o test.out test.c
./test.out
```
結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2586059/73483bc7-e3b1-b0d0-32ca-c4d29d0dfd1a.png)


## 第四回
```c:test.c
// 年令（変数名nen）を入力して20歳以上であれば「成年です。」と表示し，20歳未満であれば，「未成年です。」と表示するプログラムである。空欄を埋めてプログラミングすること。
// 誤字多すぎやwww

#include <stdio.h>
int main(void){
  int nen;
  printf("年齢を入力してください:");
  scanf("%d", &nen);
  if (nen >= 20){ // 入力されたnenが20以上の時
    printf("成年です\n");
  }else{ // 入力されたnenが20以上じゃないとき、つまり19以下の時
    printf("未成年です\n");
  }
}
```
1行ずつ実行
```terminal:CygwinTerminal
gcc -o test.out test.c
./test.out
```
結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2586059/02349c9d-0aa0-a55b-b521-263078c89044.png)

## 第四回　追加課題
```c:test.c
// 身長と体重を入力すると，BMI と，肥満かどうかを表示するプログラムを作成せよ．BMIは次の式で求め，25 以上なら肥満，25未満なら肥満でないとする．なお，BMIの値の表示は小数点第一位までとする．
// BMI＝体重[kg]/（身長[m]×身長[m])

#include <stdio.h>
#include <math.h>
int main(void){
  float height, weight;
  printf("身長(cm)を入力してください:");
  scanf("%f", &height);
  printf("体重(kg)を入力してください:");
  scanf("%f", &weight);
  printf("BMIは%.1f\n", weight/(pow(height, 2))*pow(10, 4)); // pow(height, 2)は数学関数を使って(height)^2を計算している、pow(10, 4)も同じも同じ
  if (weight/(pow(height, 2))*pow(10, 4) >= 25){ // 25以上の時
    printf("肥満\n");
  }else{ // 25以上じゃないとき、つまり25未満の時
    printf("肥満でない\n");
  }
}
```
1行ずつ実行
```terminal:CygwinTerminal
gcc -lm -o test.out test.c
./test.out
```
結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2586059/775f4a19-24f0-360d-4d00-636c035bf07b.png)



## 第五回
パターン1(if文)
```c:test.c
// 次ページの実行結果のように，整数で0点～100点を入力して，評語を表示するプログラムを作成せよ。判定基準は以下の通りとする。
// 100点～90点 AA
// 89点～80点 A
// 79点～70点 B
// 69点～60点 C
// 59点以下 D

#include <stdio.h>
int main(void){
  int score;
  printf("点数を0～100の整数で入力せよ。");
  scanf("%d", &score);
  printf("%d\n", score);
  if (score >= 90){
    printf("判定はAAです。\n");
  }else if (score >= 80){
    printf("判定はAです。\n");
  }else if (score >= 70){
    printf("判定はBです。\n");
  }else if (score >= 60){
    printf("判定はCです。\n");
  }else{
    printf("判定はDです。\n");
  }
}
```
パターン2(switch)
```c:test.c
#include <stdio.h>
int main(void){
  int score;
  printf("点数を0～100の整数で入力せよ。");
  scanf("%d", &score);
  printf("%d\n", score);
  int ten = score/10;
  switch (ten){
    case 9 :
      printf("判定はAAです。\n");
      break;
    case 8 :
      printf("判定はAです。\n");
      break;
    case 7 :
      printf("判定はBです。\n");
      break;
    case 6 :
      printf("判定はCです。\n");
      break;
    default:
    printf("判定はDです。\n");
    break;
  }
}
```
1行ずつ実行
```terminal:CygwinTerminal
gcc -o test.out test.c
./test.out
```
結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2586059/0ebab8df-ccac-307f-b391-8055621ecd01.png)


## 第六回
パターン1(for文)
```c:test.c
// 1から100までの整数で，奇数だけの合計，偶数だけの合計，および総合計を表示するプログラムを作成せよ。

#include <stdio.h>
int main(void){
  int even_sum = 0, odd_sum = 0; // even_sumは偶数を足していく変数、odd_sumは奇数を足していく変数
  for (int i = 1;i <= 100;i++){ // 1~100まで繰り返し（iに1~100を順番に代入していく）
    if (i % 2 == 0){ // iが偶数の時
      even_sum += i; // even_sumにiを足す
    }else{ // iが偶数じゃない時、つまり奇数の時
      odd_sum += i; // odd_sumにiを足す
    }
  }
  printf("偶数だけの合計は:%d\n", even_sum);
  printf("奇数だけの合計は:%d\n", odd_sum);
  printf("全部の合計は:%d\n", even_sum + odd_sum);
}
```
パターン2(for文)
```c:test.c
#include <stdio.h>
int main(void){
  int even_sum = 0, odd_sum = 0; // even_sumは偶数を足していく変数、odd_sumは奇数を足していく変数
  for (int i = 1;i <= 50;i++){ // 1~50まで繰り返し（iに1~50を順番に代入していく）
    even_sum += 2*i; // iを2倍にしている、つまり1~100までの偶数のみになる
    odd_sum += 2*i - 1; // 偶数-1 は1~100までの奇数になる
  }
  printf("偶数だけの合計は:%d\n", even_sum);
  printf("奇数だけの合計は:%d\n", odd_sum);
  printf("全部の合計は:%d\n", even_sum + odd_sum);
}
```
パターン3(while文)
```c:test.c
#include <stdio.h>
int main(void){
  int even_sum = 0, odd_sum = 0, i = 0; // even_sumは偶数を足していく変数、odd_sumは奇数を足していく変数、iは100回数える用の変数
  while (1){ // 無限ループ
    i++; // iを+1する
    if (i > 100){ // iが100を超えたら処理を終了する
      break;
    }else if (i % 2 == 0){ // iが偶数の時
      even_sum += i; // even_sumにiを足す
    }else{ // iが偶数じゃない時、つまり奇数の時
      odd_sum += i; // odd_sumにiを足す
    }
  }
  printf("偶数だけの合計は:%d\n", even_sum);
  printf("奇数だけの合計は:%d\n", odd_sum);
  printf("全部の合計は:%d\n", even_sum + odd_sum);
}
```
パターン4(do..while文)
```c:test.c
#include <stdio.h>
int main(void){
  int even_sum = 0, odd_sum = 0, i = 1; // even_sumは偶数を足していく変数、odd_sumは奇数を足していく変数、iは100回数える用の変数
  do { // 今回の場合は普通のwhile文と変わらないが、do..while文は初めからfalseであっても、1度は処理が実行される
    if (i % 2 == 0){
      even_sum += i;
    }else{
      odd_sum += i;
    }
    i++;
  } while (i<=100);

  printf("偶数だけの合計は:%d\n", even_sum);
  printf("奇数だけの合計は:%d\n", odd_sum);
  printf("全部の合計は:%d\n", even_sum + odd_sum);
}
```


1行ずつ実行
```terminal:CygwinTerminal
gcc -o test.out test.c
./test.out
```
結果
![スクリーンショット 2022-05-30 14.05.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2586059/e99534da-d10b-8296-8446-a701886c46d8.png)


## 第七回（作成中）
```c:test.c
```
1行ずつ実行
```terminal:CygwinTerminal
gcc -o test.out test.c
./test.out
```
結果

## 第八回（作成中）
```c:test.c
```
1行ずつ実行
```terminal:CygwinTerminal
gcc -o test.out test.c
./test.out
```
結果

## 第九回（作成中）
```c:test.c
```
1行ずつ実行
```terminal:CygwinTerminal
gcc -o test.out test.c
./test.out
```
結果

## 第十回（作成中）
```c:test.c
```
1行ずつ実行
```terminal:CygwinTerminal
gcc -o test.out test.c
./test.out
```
結果



![スクリーンショット 2022-05-30 14.57.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2586059/b9e48498-a039-5f45-26a6-971ade82a3d3.png)

# 最後に
コメントや修正などご意見いただきありがとうございます。クソ雑魚プログラマーとして今後もこの記事は修正し続けていくので、思ったことは何でもコメントください！！
バイバイキーーん