1. 次のプログラムの一部は間違っている。その間違いを指摘し,可能であれば修正案 を示せ。 1-A. int *numberPtr; printf("%d\n", *numberPtr); ポインタだけ定義されていて実体がない。int 型の変数を一つ用意しなければ ならない。例えば以下のように修正する。 int *numberPtr, x=0; numberPtr = &x; printf("%d\n", *nmberPtr); 1-B double *dblPtr; int *intPtr; intPtr = dblPtr; ポインタの型に互換性がない。int 型へのポインタ変数 intPtr に double 型 へのポインタ変数 dblPtr を代入しようとしている。例えば以下のように修正 する。 double *dblPtr1, *dblPtr2; dblPtr1 = dblPtr2; 1-c int *xPtr, y; xPtr = y; int 型の変数の値を xPtr というポインタ変数のアドレスとして代入しようと している。y のアドレスを代入しなければならない。 int *xPtr, y; xPtr = &y; 1-d double x = 12.34; double dblPtr = &x; printf("%lf\n",*dblPtr); dblPtr は double 型の変数であるので x のアドレス &x を代入できない。 double *dblPtr = &x; と修正する。 1-e char *str; printf("%s\n", str); 初期化してないのが誤り。 char *str="Hello, world"; printf("%s\n", str); のように修正すればよい。 2. 次のプログラムはどのような動きをするか。簡単に述べよ。 #include int nazo2(const char *str); int main(void) { char str[80]; printf("文字列を入力してください"); scanf("%s", str); printf("%d\n", nazo2(str)); return 0; } int nazo2(const char *s) { int x =0; for( ; *s != '\0'; s++) x++; return x; } 入力された文字列の長さを表示するプログラムである。