ソフトウエア演習B(2001年度)  チェックリスト

第7回
11/23
変数と型(1) ポインタ・アドレス計算
  1. 次の表は、int型の変数とポインタ変数についての説明の表であるが、空欄になっている部分それぞれについて、変数の各記述が何を意味するものであるのかを、「アドレス」という言葉を用いて書きなさい。

    変数 ポインタ変数
    記述 説明 記述 説明
    int val;
    int型の変数(val)の宣言

    int *ptr;

    ポインタ型の変数(ptr)の宣言

    &val




    &ptr
    val


    ptr  
    ---- ----- *ptr




  2. 次のC言語プログラムを実行したとき、画面に出力される変数の内容をすべて書きなさい。なお、変数の宣言によってaのアドレスが「0xeccc37f8」、bのアドレスが「0xbddd462a」に確保されたものとする。また、この問題文だけでは出力の予想がつかないものについては、その旨を明記すること。

    #include <stdio.h>
    main()
    {
    int a,*b;
    a=2;
    b=&a;
    printf("%x %d %x %x %d",&a,a,&b,b,*b);
    }

    a  
    &a  
    b  
    &b  
    *b  


  3. 次のC言語プログラムは、関数の参照による呼出しを利用して、入力した値を2乗して出力するものである。【 】内に適切な語句を埋めなさい。

    #include<stdio.h>

    【        】 func(【         】)
    {
     *b=【             】
    }

    main( )
    {
    int a;
    scanf("%d",&a);
    func(【         】);
    printf("%d",a);
    }


  4. 次のC言語プログラムは、文字配列の中身を表示するものである。結果として出力されるものを書きなさい。

    #include<stdio.h>
    main( )
    {
    char a[ ]="soft";
    int i=0;
    while (*(a+i) != '\0') {
     printf("*(a+%d)=%c\n",i,*(a+i));
     i++;
     }
    }





  5. 次のC言語プログラムは、最大値を探し出して表示するものである。配列を用いたプログラムと同様の機能を持たせたポインタを用いたプログラムを書きなさい。なお、下にあるmain()は、両方のプログラムに共通で使えるものである。

    配列 ポインタ
    #include<stdio.h>


    int maxval(int a[ ], int n)
    {
    int i,max;
    max=a[0]
    for(i=1;i<n;i++) {
    if(max < a[i]) max=a[i];
    }
    return max;
    }

     

     

     

     

     

     

     

     


    main()
    {
    int t[10]={3,4,7,2,9,5,1,8,6,0};
    printf("max=%d",maxval(t,10));
    }


ソフトウエア演習Bのページへ


ichikawa@soft.iwate-pu.ac.jp