問題1.

xをint型、yをfloat型の変数とするとき、次の計算の結果、値がいくらになるかを示せ。

a)  x = 7 + 3 * 6 / 2 - 1;
b)  x = 2 % 2 + 2 * 2 - 2 / 2;
c)  x = 2.4 / 3 + 0.5;
d)  y = 3 / 6 * 4;
e)  y = 3 * 3 / 6;

問題2

次のプログラムをwhile文に書き直せ。

do{
    if (a % 2 == 0)
        printf("%d", a);
    a ++;
}while(a < 100);

問題3.

以下は、abc.dat というファイルよりデータを読み込んで、その内容を、output.dat に対して、そのファイルの内容を破棄することなく、追加して書き込むプログラムである。第5, 10, 11, 15, 19行目に誤りがあるが、その誤りを修正したプログラム文を、解答欄に書け。ただし、これらの行以外には、誤りはないものとする。なお、修正すべき誤りは、1行につき1箇所とは限らない。

ファイル abc.dat の内容

Takagi Tadashi 29

 1: #include <stdio.h>
 2: struct person{
 3:    char lname[15];
 4:    char fname[15];
 5:    int  age
 6: };
 7: main()
 8: {
 9:    struct person x;
10:    FILE ifp, ofp
11:    if((ifp = fopen('abc.dat', "r")) != NULL){
12:       fprintf(stderr, "Can't open abc.dat¥n");
13:       exit(1);
14:    }
15:    if((ofp = fopen("output.dat", "w")) == NULL){
16:       fprintf(stderr, "Can't open output.dat¥n");
17:       exit(1);
18:    }
19:    fscanf(ifp,"%s %s %d",x.lname,x.fname,x.age);
20:    fprintf(ofp,"%s %s %d years old¥n",
21:                 x.lname, x.fname, x.age);
22:    fclose(ifp);
23:    fclose(ofp);
24: }

問題5.

以下の1〜9のプログラム文を[ア]の部分に正しく並べかえて、選択ソートを行なう関数を作成せよ。解答は、正しい順に番号を括弧内に書け。

1: lowest = i;
2: lowest = j; lowkey = a[j];
3: }
4: t = a[i]; a[i] = a[lowest]; a[lowest] = t;
5: for(i=0; i<n-1; i++){
6: lowkey = a[i];
7: for(j=i+1; j<n; j++)
8: if(a[j] < lowkey){
9: }

void selection_sort(int a[], int n)
{
    int i, j, t, lowest, lowkey;

[ア] }

問題6.

次のプログラムについて、解答欄にある main 関数によって同じ結果を出力するように、関数 planet¥_read およびそのプロトタイプ宣言、を解答欄に書き加えよ。

#include <stdio.h>
#define PI  (3.14159265358979323846)
struct planet{
    char  name[20];
    float d;
    int   s;
};
main()
{
    struct planet star;
    double vol;

scanf("%s %f %d", star.name, &star.d, &star.s); vol = star.d*star.d*star.d/6*PI; printf("%s has %d satellites, volume: %fkm^3¥n", a.name, a.s, vol); }

解答欄
#include <stdio.h>
#define PI  (3.14159265358979323846)
struct planet{
    char  name[20];
    float d;
    int   s;
};
main()
{
    struct planet a;
    double vol;
    vol = planet_read(&a);
    printf("%s has %d satellites, volume: %fkm^3¥n",
            a.name, a.s, vol);
}