2011年11月29日 湘南工科大学 情報理論2 第8回 小林 学 〒251-8511 神奈川県藤沢市辻堂西海岸1-1-25 Tel. 0466-30-0232(直通) Fax. 0466-34-5932 [email protected] 文字列 Page 2 #include<stdio.h> void main(void){ char str[5]=“abaa”;//文字配列の定義 //文字配列の初期化 printf(“%s”, str); //文字列の表示 } [0] [1] [2] [3] [4] 配列 str ‘a’ ‘b’ ‘a’ ‘a’ 0 文字列の最後には数字の 0 が入る (0 がないとだめ) 0 が文字列の終わりを表す 文字’a’を数える(カウント) i str[i] 0 1 2 3 4 ‘a’ ‘b’ ‘a’ ‘a’ 0 初期値: 繰り返し: (for文) count 0 0→1 1 1→2 2→3 3 Page 3 if(str[i]=='a') count++; [前回の課題1]上の文字’a’を数えるプログラムを作成し なさい 実行結果 [前回の課題1解答]文字’a’のカウント #include<stdio.h> void main(void){ char str[5]="abaa"; int i, count; } Page 4 //文字列の定義 count = 0; for(i=0;i<5;i++){ if(str[i]=='a') count++; } printf("str中の'a'の数:%d\n", count); 一致文字のカウント Page 5 char str1[5]="abba", str2[5]="aabb"; i str1[i] str2[i] 0 初期値: 繰り返し: (for文) count 0 1 2 3 ‘a’ ‘b’ ‘b’ ‘a’ ‘a’ ‘a’ ‘b’ ‘b’ 0→1 1 1→2 2 [前回の課題2]上の一致文字を数えるプログラムを作成 しなさい 実行結果 [前回の課題2解答]一致文字のカウント #include<stdio.h> void main(void){ char str1[5]="abaa", str2[5]="aaab"; int i, count = 0; } for(i=0;i<4;i++){ if(str1[i]==str2[i]) count++; } printf("一致した文字の数:%d\n",count); Page 6 先頭からの一致文字数 Page 7 char str1[5]="abba", str2[5]="abaa"; i str1[i] str2[i] 0 初期値: 繰り返し: (for文) count 0 1 2 3 ‘a’ ‘b’ ‘b’ ‘a’ 1 ‘b’ 2 ‘a’ break(繰り返しを抜ける) if(str1[i]!=str2[i]) break; [課題1]先頭からの一致文字を数えるプログラムを作成 しなさい 実行結果 Page 8 途中からの一致文字数 char str1[10]="ababbaaba"; char str2[10]="bbababbab"; str1の1番からとstr2の3番からの一致文字数を求める i str1[1+i] str2[3+i] 初期値: 繰り返し: (for文) 0 1 2 3 4 5 ‘b’ ‘a’ ‘b’ ‘b’ ‘a’ ‘a’ ‘b’ ‘a’ ‘b’ ‘b’ ‘a’ ‘b’ count 0 1 2 3 4 5 break 途中からの一致文字数 Page 9 [課題2]前ページの途中からの一致文字を数えるプログ ラムを作成しなさい 実行結果 Page 10 課題3 char str1[10]="ababaaaba"; char str2[4]="aba"; str1の中にstr2と完全一致する文字列は何回入ってい るか?またその一致する先頭の位置は? 位置:0 1 2 3 4 5 6 7 8 ababaaaba 一致した先頭位置:0,2,6 一致回数:3回 [課題3]上のプログラムを作成しなさい
© Copyright 2025 ExpyDoc