スライド 1

高度プログラミング演習
(10)
演習問題
• 文字列 s0 中に文字列 s1 があれば、それを
s2 に置き換えるプログラムを作成せよ。
– s0: Bill likes dogs and Bill has three dogs.
– s1: Bill
– s2: Ken
演習問題のヒント
+2
+3
#include <stdio.h>
#include <string.h>
void myaA(char *ch)
{
if(*ch >= 'a' && *ch <= 'z')
*ch = *ch + ('A' -'a');
}
void main()
{
char s0[128];
char s1[128];
char s2[128];
char s3[128];
unsigned int i,cnt=0;
char *q;
gets(s0); gets(s1); gets(s2);
q=s3;
for(i=0;i<strlen(s0)-strlen(s1)+1;i++){
if(!strncmp(s0+i,s1,strlen(s1))){
strcpy(q,s2);
q= q + strlen(s2);
i = i + strlen(s1);
}
*q= *(s0 +i);
q=q+1;
}
for(;i<strlen(s0);i++){
*q= *(s0 + i);
q=q+1;
}
*q='\0';
printf("%s\n%s\n",s0,s3);
}
構造体
• 名前:山田花子
• 年齢:30
• 身長:160cm
• 名前:鈴木太郎
• 年齢:32
• 身長:175cm
いくつかの共通なデータのメンバーを持つと
きは、まとまったデータ型として扱えれば便利
である。
構造体
• struct person {
– char *name;
– int age;
– int tall;
– } hanako,tarou;
hanako.name = “Yamada Hanako”;
hanako.age=30;
hanako.tall=160;
ポインタ型の構造体
• struct person {
– char *name;
– int age;
– int tall;
– } hanako, *p_hanako;
p_hanako=&hanako
p_hanako->name = “Yamada Hanako”;
p_hanako->age=30;
p_hanako->tall=160;
例題問題
• 1)電話番号、2)名前をメンバーにした構造体
を定義して、
– 3件のデータを入力し
– 入力したデータを出力する
• プログラムを作成せよ。
• メンバ情報の入出力には構造体を引数にし
た関数を作ること。
練習問題
• 構造体のメンバに電子メールアドレスを追加
せよ。
• この構造体を使って
– 指定した電話番号にマッチするデータの情報を
出力するプログラムを作成せよ。
– 指定した名前にマッチするデータの情報を出力す
るプログラムを作成せよ。
演習問題(1)
• 品物名、値段をメンバーにしたデータ構造体
を作り、入出力するプログラムを作成せよ。
• 品目として、
– 食品:0
– 衣料:1
– その他:2
– と定義して、メンバーに品目を追加せよ。
• 品目の種類ごとにメンバー情報を出力するプ
ログラムを作成せよ。
演習問題(2)
• 曲名、時間をメンバにした構造体を作り、ある
音楽CDの曲情報を入力、出力できるプログ
ラムを作成せよ。
• そのCDの総時間出力するプログラムを作成
せよ。