#include <stdio.h>

int x;  

void mondai1(int b){
    x = b;
}

void mondai2(void){
    static int c = 10;  
    x = c;
    c++;
}

int mondai3(int d){
    x++;
    d++;
    return d;
}

int main(void){

    printf("x = %d [G: グローバル変数は自動的に0で初期化される]\n", x);

    x = 101;
    printf("x = %d [G: xに101を代入した]\n", x);

    mondai1(102);
    printf("x = %d [G: mondai1でxに102を代入した]\n", x);

    mondai2();
    mondai2();
    mondai2();
    printf("x = %d [GS: static変数cが10→11→12となり、その値がxに代入された]\n", x);

    for(int i = 103; i < 104; i++){

        int x = i;   

        printf("x = %d [L: ローカル変数xにi(103)を代入した]\n", x);

        x = mondai3(i);

        printf("x = %d [L: mondai3でdを1増やし、戻り値104をローカル変数xに代入した]\n", x);
    }

    printf("x = %d [G: mondai3でグローバル変数xが12から13に増加した]\n", x);

    return 0;
}