include stdio h void main int year 2008

  • Slides: 34
Download presentation

#include <stdio. h> void main(){ int year = 2008; if( year % 4 ==

#include <stdio. h> void main(){ int year = 2008; if( year % 4 == 0 ){ if( year % 100 == 0 ){ if( year % 400 == 0 ){ printf("%d 年はうるう年である. n", year); } else { printf("%d 年はうるう年でない. n", year); } } else { printf("%d 年はうるう年である. n", year); } } else { printf("%d 年はうるう年でない. n", year); } } 解答 1 5

C言語:for文による繰り返し • for文 int i; for(i=0; i<3; i++){ printf("Hello, World!n"); } for(i=0; i<3; i++){

C言語:for文による繰り返し • for文 int i; for(i=0; i<3; i++){ printf("Hello, World!n"); } for(i=0; i<3; i++){ printf("i=%dn", i); } プログラム 実行結果 Hello, World! i=0 i=1 i=2 26

C言語: 2次元配列 int data[3][2]; int型が2× 3=6個の配列. int i, j; data[0][0]~data[2][1] data[0][0] = 3; data[0][1]

C言語: 2次元配列 int data[3][2]; int型が2× 3=6個の配列. int i, j; data[0][0]~data[2][1] data[0][0] = 3; data[0][1] = 4; が使用可能. data[1][0] = 5; data[1][1] = 6; 「長さ 2個の配列」が3個. data[2][0] = 7; data[2][1] = 8; (長さ 3の配列が2個でない) for(i=0; i<3; i++){ for(j=0; j<2; j++){ data[0][0]=3 printf("data[%d]", i, j); data[0][1]=4 printf("=%dn", data[i][j]); } data[1][0]=5 } data[1][1]=6 プログラム data[2][0]=7 data[2][1]=8 実行結果 28

17 18 19 20 21 22 23 24 25 /* sum. c 行列の加算 */

17 18 19 20 21 22 23 24 25 /* sum. c 行列の加算 */ 26 #define COL 3 27 #define ROW 2 28 29 #include <stdio. h> 30 31 void print_matrix(double mat[COL][ROW]){ 32 int r, c; 33 for(r=0; r<ROW; r++){ 34 for(c=0; c<COL; c++){ 35 printf("%6. 2 lf ", mat[r][c]); 36 } 37 printf("n"); 38 } 39 } 40 41 42 行列の加算 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 void main(){ double a[COL][ROW], b[COL][ROW]; double s[COL][ROW]; int r, c; a[0][0]=0; a[1][0]=3; b[0][0]=6; b[1][0]=9; a[0][1]= 1; a[1][1]= 4; b[0][1]= 7; b[1][1]=10; a[0][2]=2; a[1][2]=5; b[0][2]=8; b[1][2]=11; printf("matrix a=n"); print_matrix(a); printf("matrix b=n"); print_matrix(b); /* begin : sum, s=a+b */ for(r=0; r<ROW; r++){ for(c=0; c<COL; c++){ s[r][c] = a[r][c] + b[r][c]; } } /* end : sum, s=a+b */ printf("matrix s=n"); print_matrix(s); } 29

行列の乗算 1 2 3 4 5 6 7 8 9 10 11 12 13

行列の乗算 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 30 31 32 33 #define L 2 34 #define M 3 36 #define N 4 37 38 #include <stdio. h> 39 40 void print_matrix 41 (double *mat, int row, int col){ 42 int r, c; 43 for(r=0; r<row; r++){ 44 for(c=0; c<col; c++){ 45 printf("%6. 2 lf ", *(mat+col*r+ c)); 46 } 48 printf("n"); 49 } 50 } 51 /* pro. c 行列の乗算 (Lx. M 行列)×(Mx. N 行列) */ void main(){ double a[L][M], b[M][N], p[L][N]; int l, m, n; a[0][0]= 0; a[0][1]= 1; a[0][2]= 2; : 省略 printf("matrix a=n"); print_matrix(a, L, M); printf("matrix b=n"); print_matrix(b, M, N); for(l=0; l<L; l++){ for(n=0; n<N; n++){ /* begin : calc p[l][n] */ double sum = 0. 0; for(m=0; m<M; m++){ sum += a[l][m]*b[m][n]; } p[l][n] = sum; /* end : calc p[l][n] */ } } printf("matrix s=n"); print_matrix(p, L, N); } 30

1 2 3 4 5 6 7 8 9 10 11 12 13 14

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 sum. c 31 } a[0][1]= 1; a[1][1]= 4; b[0][1]= 7; b[1][1]=10; a[0][2]=2; a[1][2]=5; b[0][2]=8; b[1][2]=11; printf("matrix s=n"); print_matrix(s); /* begin : sum, s=a+b */ for(r=0; r<ROW; r++){ for(c=0; c<COL; c++){ s[r][c] = a[r][c] + b[r][c]; } } /* end : sum, s=a+b */ printf("matrix a=n"); print_matrix(a); printf("matrix b=n"); print_matrix(b); a[0][0]=0; a[1][0]=3; b[0][0]=6; b[1][0]=9; void main(){ double a[COL][ROW], b[COL][ROW]; double s[COL][ROW]; int r, c; void print_matrix(double mat[COL][ROW]){ int r, c; for(r=0; r<ROW; r++){ for(c=0; c<COL; c++){ printf("%6. 2 lf ", mat[r][c]); } printf("n"); } } #include <stdio. h> /* sum. c 行列の加算 */ #define COL 3 #define ROW 2

1 2 3 4 5 6 7 8 9 10 11 12 13 14

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 pro. c 32 } a[0][1]= 1; a[1][1]= 4; b[0][1]= 7; b[1][1]=11; b[2][1]=15; a[0][2]= 2; a[1][2]= 5; b[0][2]= 8; b[0][3]= 9; b[1][2]=12; b[1][3]=13; b[2][2]=16; b[2][3]=17; printf("matrix s=n"); print_matrix(p, L, N); /* begin : product, p=a*b */ for(l=0; l<L; l++){ for(n=0; n<N; n++){ /* begin : calc p[l][n] */ double sum = 0. 0; for(m=0; m<M; m++){ sum += a[l][m]*b[m][n]; } p[l][n] = sum; /* end : calc p[l][n] */ } } /* end : product, p=a*b */ printf("matrix a=n"); print_matrix(a, L, M); printf("matrix b=n"); print_matrix(b, M, N); a[0][0]= 0; a[1][0]= 3; b[0][0]= 6; b[1][0]=10; b[2][0]=14; void main(){ double a[L][M], b[M][N], p[L][N]; int l, m, n; void print_matrix(double *mat, int row, int col){ int r, c; for(r=0; r<row; r++){ for(c=0; c<col; c++){ printf("%6. 2 lf ", *(mat+col*r+c)); } /* ↑*(mat+col*r+c)でmat[r][c]となる */ printf("n"); } } #include <stdio. h> #define L 2 #define M 3 #define N 4 /* pro. c 行列の乗算 (Lx. M 行列)×(Mx. N 行列) --> (Lx. N 行列) の計算 */