PowerPoint プレゼンテーション

文字配列の課題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