落書きノート

ふと自分が気になった事を書いてます

C言語で問題を解く

解きながら学ぶC言語

解きながら学ぶC言語

// q6-10
#include <stdio.h>
#define MAX 20

void fill(int[],int,int);

void fill(int vc[], int no, int x) {
  int i;
  for(i = 0; i < no; i++)
    vc[i] = x;
}

int main(void) {
  int i;
  int x = 2;
  int vc[MAX];
  fill(vc, MAX, x);
  for(i = 0; i < sizeof(vc) / sizeof(vc[0]); i++)
    printf("x[%d] = %d\n", i, vc[i]);
  return 0;
}

// q6-11
#include <stdio.h>
#define MAX 5

int min_of(const int[],int);

int min_of(const int vc[], int no) {
  int min = vc[0];
  int i;
  for(i = 1; i < no; i++)
    if(min > vc[i])
      min = vc[i];
  return min;
}

int main(void) {
  puts("5人の点数を入力してください。");
  int i;
  int eng[MAX], math[MAX];
  for(i = 0; i < MAX; i++) {
    printf("[%d] 英語 : ", i + 1);
    scanf("%d", &eng[i]);
    printf("    数学 : ");
    scanf("%d", &math[i]);
  }
  printf("英語の最低点=%d\n", min_of(eng, MAX));
  printf("数学の最低点=%d\n", min_of(math, MAX));
  return 0;
}

// q6-12
#include <stdio.h>
#define MAX 5

void rev_intary(int vc[],int);

void rev_intary(int vc[], int no) {
  int i;
  for(i = 0; i < no / 2; i++) {
    int t = vc[i];
    vc[i] = vc[no - i - 1];
    vc[no - i - 1] = t;
  }
}

int main(void) {
  int i;
  int vx[MAX];
  for(i = 0; i < MAX; i++) {
    printf("vx[%d] : ", i);
    scanf("%d", &vx[i]);
  }
  rev_intary(vx, MAX);
  puts("逆順に並び替えました。");
  for(i = 0; i < MAX; i++)
    printf("vx[%d] : %d\n", i, vx[i]);
  return 0;
}

// q6-13
#include <stdio.h>
#define MAX 5

void intary_rcpy(int[],const int[],int);

void intary_rcpy(int v1[], const int v2[], int no) {
  int i,j;
  for(i = 0,j = no - 1; i < no; i++, j--)
    v1[i] = v2[j];
}

int main(void) {
  int i;
  int vx[MAX];
  int vy[MAX];
  for(i = 0; i < MAX; i++) {
    printf("vx[%d] : ", i);
    scanf("%d", &vx[i]);
  }
  intary_rcpy(vy, vx, MAX);
  puts("配列vyに配列vxの要素を逆順に格納しました。");
  for(i = 0; i < MAX; i++)
    printf("vx[%d] : %d\n", i, vy[i]);
  return 0;
}

// q6-14
#include <stdio.h>

void mat_add(const int[2][3],const int[2][3],int[2][3]);

void mat_add(const int ma[2][3], const int mb[2][3], int mc[2][3]) {
  int i,j;
  for(i = 0; i < 2; i++) {
    for(j = 0; j < 3; j++) {
      mc[i][j] = ma[i][j] + mb[i][j];
    }
  }
}

int main(void) {
  int i,j;
  int ma[2][3] = {
    {1,2,3},
    {4,5,6}
  };
  int mb[2][3] = {
    {6,3,4},
    {5,1,2}
  };
  int mc[2][3] = { 0 };
  mat_add(ma, mb, mc);
  for(i = 0; i < sizeof(mc) / sizeof(mc[0]); i++) {
    for(j = 0; j < sizeof(mc[0]) / sizeof(mc[0][0]); j++)
      printf("%d ",mc[i][j]);
    putchar('\n');
  }
  return 0;
}

// q6-15
#include <stdio.h>

void mul(const int[2][3],const int[3][2],int[2][2]);

void mul(const int ma[2][3], const int mb[3][2], int mc[2][2]) {
  int i,j,k;
  for(i = 0; i < 2; i++) {
    for(j = 0; j < 2; j++) {
      for(k = 0; k < 3; k++) {
        mc[i][j] += ma[i][k] * mb[k][j];
      }
    }
  }
}

int main(void) {
  int i,j;
  int x[2][3] = {
    {1,2,3},
    {4,5,6}
  };
  int y[3][2] = {
    {1,5},
    {5,3},
    {8,1}
  };
  int z[2][2] = { 0 };
  mul(x, y, z);
  for(i = 0; i < 2; i++) {
    for(j = 0; j < 2; j++)
      printf("%d ", z[i][j]);
    putchar('\n');
  }
  return 0;
}