文字配列の課題1 解説 文字配列に “I am a student.” を入れておく。キーボードから数字 を一つ入力すると、前から数えてその数字に当たる文字を一つ表 示するプログラムを作成せよ。 例 入力が 3 のとき a を表示 解答例 /* a601056 */ #include <stdio.h> main( ) { int i; char m[16]=“I am a student.”; scanf(“%d”,&i); printf(“%c\n”,m[i-1]); } 普通の配列と文字配列の比較 #include <stdio.h> 基本的には同じ main() 相違点 { 初期化の方法 int i; 最小限必要な要素数 char m[16]=“I am a student.”; 文字配列: 文字数+1 scanf(“%d”,&i); printf(“%c\n”,m[i-1]); 普通の配列:データの数 } #include <stdio.h> main() { int n,tuki[12]={31,28,31,30,31,30,31,31,30,31,30,31}; scanf(“%d”,&n); printf(“%d\n”,tuki[n-1]); } 文字配列の課題2 解説 文字配列に “I am a student.” を入れておく。キーボードから文字 を一つ入力すると、その文字が前から何番目かを表示するプログ ラムを作成せよ。 例 入力が s のとき 8 を表示 解答例 /* a601170 */ #include <stdio.h> main( ) { char t, m[16]=“I am a student.”; int i; printf(“moji?:”); scanf(“%c”,&t); for(i=0;i<=15;i=i+1) { if(t==m[i]) printf(“%d\n”,i+1); } } 配列と文字列 文字型変数の宣言 例: または char 変数名; char moji; moji=‘a’; char moji=‘a’; 変数1個に 文字は1個 文字型配列の宣言 例; char 配列名[ 文字数 + 1 以上 ]; 配列要素1個に char m[15 ]=“This is a pen.”; 文字は1個 配列要素の値。(上の変わりに下のように代入しても良い) m[0]=‘T’, m[1]=‘h’, m[2]=‘i’, m[3]=‘s’, m[4]=‘ ’, m[5]=‘i’, m[6]=‘s’, m[7]=‘ ’, m[8]=‘a’, m[9]=‘ ’, m[10]=‘p’, m[11]=‘e’,m[12]=‘n’, m[13]=‘.’, m[14]=‘\0’ 自動的に 入れられる 文字配列の要素数 配列の要素数の決め方には二通りある。 char 配列名[ 文字数 + 1 以上 ]=“文字列”; 例 char m[15 ]=“This is a pen.”; char 配列名[ ] =“文字列”; ここは空っぽ にしておく 例 char m[ ]=“This is a pen.”; 自動的に文字数+1の大きさの配列となる。 キーボードからの文字列の入力 注意! &mojiretu で はない!! 方法1 char mojiretu[100]; scanf(“%s”, mojiretu); 方法2 char mojiretu[100]; gets(mojiretu); scanfとgetsの違い 文字列 入力関数 scanf abcdef........ (空白なし) I am a student. ○ × gets ○ ○ scanf で は 空白は 入力終了と みなされる 文字列の出力 方法1 char mojiretu[100]; printf(“%s”, mojiretu); 方法2 mojiretu[0]から、 \0 の入っている 要素の一つ前 まで出力 char mojiretu[100]; int i=0; while(mojiretu[i]!=‘\0’) { printf(“%c”, mojiretu[i]); i++: } 文字の入っている配列の要素数があらかじめ分かっているならfor文でもよい 課題 課題1 キーボードから英文を1行入力して配列に納め、それを出力 するプログラムを作成せよ。入出力の方法はどれでもよい。 report12.04.03 課題2 課題1で、入力された文字数(空白も含める)求めるプログラム を作れ。(‘\0’が出てくるまで文字数をカウントすればよい) report12.04.04 課題3 キーボードから2行英文を入力し、各行を別々の配列に納める。 2個の配列の内容をつないで一つの英文として3個目の配列に 納めて内容を表示せよ。 report12.04.05
© Copyright 2024 ExpyDoc