・整数型の変数aと,整数型の変数の (A) を格納する (B) 変数paを宣言する
int a;
int *pa;
(B) 変数paに変数aの (A) を代入するには,
(C) = (D);
とする.さらに(B)変数paを使って(B)の指す値を別の整数型の変数bに代入するためには
int b = (E);
とする.
・文字列変数は文字の (F) として表され,文字の終わりを表す (G) を文字の最後につける.
・関数へ値を渡す方法は (H) と (I) があり,(H) では呼び出す側へ戻せる値の数は (J) 個であるのに対し,(I) では関数を呼び出す側と呼び出された関数側で同じ (A) を参照するので,複数の値や配列を共有できる.
解答例:
A: アドレス
B: ポインタ
C: pa
D: &a
E: *pa
F: 配列
G: ‘\0’,NULL,NULL文字,(0,0x00なども可)
H: 値参照
I: アドレス参照
J: 1
解答例:
#include <stdio.h> void main() { char a[ ]= "Hello Meiji"; int i=0; int count=0; /* 'e'を数えるための変数 */ while(a[i] != '\0' ) { if(a[i] == 'e') { count++; } i++; } if ( count != 0 ) { printf("文字列はeを%d個含みます\n", count); } }
解答例:
#include <stdio.h> int saidai_kouyakusu(int p, int q) { int i; int result; /* p,qの小さいほうをiに代入する */ if(p<q) { i=p; } else { i=q; } /* p,qともに割り切れる値を見つける */ while( i>=1 ) { if(p%i == 0 && q%i ==0) { return i; /* i=1となる最後には必ず呼ばれる */ } i--; } /* 2以上の数で割り切れなければ最大公約数は1 */ /* ここは呼ばれないので無くてもよい(無いと警告が出る?)*/ return 1; } void main() { int a,b; int result; printf("a="); scanf("%d", &a); printf("b="); scanf("%d", &b); result = saidai_kouyakusu(a,b); printf("%dと%dの最大公約数は,%dです\n", a, b, result); }
解答例:
#include<stdio.h> int kaijo(int n) { int i; int result=1; for(i=1; i<=n; i++) { result *= i; } return result; } void main() { int i; int n; int sum=0; printf("n="); scanf("%d", &n); for(i=1; i<=n; i++) { sum += kaijo(i); } printf("1!から%d!までの和は%dです", n, sum); }