ログイン
編集不可のページディスカッション情報添付ファイル
solanumaple/programming講習2015/answer

MMA

問1 swap

   1 #include<stdio.h>
   2 
   3 int main(void){
   4   int n = 2, m = 10;
   5   printf("n = %d, m = %d\n", n, m); // 2 10
   6 
   7   int tmp = n; // tmp 2, n  2, m 10
   8   n = m;       // tmp 2, n 10, m 10
   9   m = tmp;     // tmp 2, n 10, m  2
  10 
  11   printf("n = %d, m = %d\n", n, m); // 10 2
  12   return 0;
  13 }

問2 絶対値

引数の絶対値を返す関数を定義するには引数が負の数であるとき-1をかければいい

   1 #include<stdio.h>
   2 
   3 int abs(int x){
   4   if( x < 0 ){
   5     x = -1 * x;
   6   }
   7   return x;
   8 }
   9 
  10 int main(void){
  11     int n;
  12     scanf("%d", &n);
  13     printf("%d\n", n);
  14     return 0;
  15 }

問3 べき乗

1で初期化した変数に第一引数を第二引数回かければいい(int型に格納できる値の範囲を越えることがある)

   1 int power(int x, int y){
   2   int res = 1;
   3   for(int i = 0; i < y; ++i){
   4     res = res * x;
   5   }
   6   return res;
   7 }

問3.5 FizzBuzz

   1 #include<stdio.h>
   2 
   3 void fizzBuzz(int x){
   4   for(int i = 1; i <= x; ++i){
   5     if( i % 15 == 0 ){
   6       printf("FizzBuzz\n");
   7     }else if( i % 3 == 0 ){
   8       printf("Fizz\n");
   9     }else if( i % 5 == 0 ){
  10       printf("Buzz\n");
  11     }else{
  12       printf("%d\n", i);
  13     }
  14   }
  15 }
  16 
  17 int main(void){
  18   fizzBuzz(100);
  19   return 0;
  20 }

問4 昇順ソート

配列の先頭から最後尾手前のまでそれぞれについて, ひとつ後ろと比較して 前者が後者よりも大きいときに入れ替えることを繰り返すと, 最後尾に配列中の最大値が入る.

配列の最後尾を無視し上の操作を繰り返すと数字が昇順に並ぶ. バブルソートと呼ばれる.

   1 #include<stdio.h>
   2 
   3 void sort(int arr[], int size){
   4   for(int i = 0; i < size; ++i){
   5     for(int k = 0; k < size - 1 - i; ++k){
   6       if( arr[k] > arr[k+1] ){
   7         int tmp = arr[k];
   8         arr[k] = arr[k+1];
   9         arr[k+1] = tmp;
  10       }
  11     }
  12   }
  13 }
  14 
  15 int main(void){
  16   int array[10];
  17   for(int i = 0; i < 10; i = i + 1){
  18     scanf(“%d”, &array[i]);
  19   }
  20   sort(array, 10);
  21   for(int i = 0; i < 10; i = i + 1){
  22     printf(“%d\n”, array[i]);
  23   }
  24   return 0;
  25 }

solanumaple/programming講習2015/answer (最終更新日時 2015-06-24 14:41:15 更新者 solanumaple)