コンピュータプログラミングII(亀田クラス)

中間テスト(第2回,1213日)

制限時間90分 テキスト参照可,PC使用可

http://www.tuat.ac.jp/~kamelab/CPII/test2.htm

各自の理解度を確かめたいので,友達同士での話し合いやメールのやり取りはしないこと.

 

1

二つのベクトルA = (ax, ay, az), B = (bx, by, bz)ベクトル積 (外積) を計算するプログラムを作りたい.コンソール入出力,ベクトル積計算の部分に関する以下の空欄[@][E]を埋めなさい.なお,ベクトル積は以下の式で表される.

                                           ・・・ (1)

 


#include<stdio.h>

void main(void)

{

              int a[3], b[3], c[3];

 

              printf(“ベクトル積の計算\n”);

/* ベクトルA, Bの入力 */

       printf("Vector A: a_x, a_y, a_z => ");

       scanf("%d,%d,%d", [ @ ]);

       printf("Vector B: b_x, b_y, b_z => ");

       scanf("%d,%d,%d", [ A ]);

/* ベクトル積A×B = C */

              c[0] = [ B ];

              c[1] = [ C ];

              c[2] = [ D ];

/* 出力 */

              printf(“A×B = (%d,%d,%d)\n”, [ E ]);

}

 

 

 

2

次のプログラムに関する各問に答えなさい.

 


#include<stdio.h>

void main(void)

{

              int i;

              float f;

              double d;

 

              d = 5.1234567890123456789;

     f = d;

     i = f;

 

              printf("%20.19lf\n%20.19f\n", d, f);

              printf("%5d\n", i);

}

 

 

 

@     変数d, fの有効桁数を答えなさい.

A     プログラム矢印の部分を下記のようにした場合のf, iの数値はどうなるか?

       i = d;

       f = i;

 

3

次のプログラムに関する各問に答えなさい.

 


#include<stdio.h>

void main(void)

{

       int a, i, m[10], *a_pt, *m_pt;

       a = 29;

       [ @ ];

       printf("a=%2d\n", a);

       printf("a=%2d\n", [ A ]);

 

              for(i = 0; i<10; i++)

                     m[i] = i * 10;

              m_pt = [ B ];

              for(i = 0; i < 10; i++)

              {

                     printf("m[%d]=%2d, m_pt =%d\n", i, m[i], m_pt);

                     m_pt++;

              }

}

 

 

 

@     ポインタ変数a_ptaのアドレスを指定するよう,空欄[ @ ]を埋めなさい.

A     ポインタ変数a_ptを使って変数aの値を出力するよう,空欄[ A ]を埋めなさい.

B     配列mの先頭ポインタを指定するよう,空欄[ B ]を埋めなさい.

C     上記のプログラムを実行すると,m_ptの値は4つずつ増えていく.その理由を答えなさい.

 

4

キーボードから入力した10個の整数 (0から100までの値) を,小さい順に並べ替えて出力するプログラムを作りたい.並べ替えの途中経過も含めて,ファイルresult.datに出力できるよう,空欄[ @ ]から[ D ]を埋めなさい.

 


#include<stdio.h>

#include<stdlib.h>

       void main(void)

{

              int i, j;

              int a[10], b;

              FILE [ @ ];

 

              printf(“0から100までの整数をキーボードから10個入力せよ\n");

              for(i = 0; i < 10; i++)

              {

                     printf("%2d番目のデータ =>",i+1);

                     scanf("%d", &a[i]);

              }

/* 出力用ファイル “result.dat”をひらく */

              if((fp = fopen([ A ])) == NULL)

              {

                     printf(“Can't open the file.”);

                     exit(1);

              }

 

/* 入力したデータを横に並べ,同じ形式で,コンソール,ファイルに出力 */

              for(j = 0; j < 10; j++)

              {

                     printf(“%3d”, a[j]);

                     fprintf([ B ]);

              }

              printf("\n");

              fprintf(fp, "\n");

 

/* 入力したデータを小さい順に並べ替える */

              for(i = 0; i < 10; i++)

              {

/* 並べ替えの経過を,同じ形式で,コンソール,ファイルに出力 */

                     for(j = 0; j < 10; j++)

                     {

                            printf(“%3d”, a[j]);

                            fprintf([ B ]);

                     }

                     printf("\n");

                     fprintf(fp, "\n");

 

/* 配列a[]の中身を小さい順に並べ替える */

                     [ C ]

              }

/* ファイルを閉じる */

              fclose([ D ]);

}

 

 

 

 

4問の出力結果例