/****************************/
/* 名前,給与,年齢 */
/* coded by Y.Suganuma */
/****************************/
#include <stdio.h>
struct kojin {
char name[20];
int kyuyo;
int nenrei;
};
int main()
{
struct kojin x;
/*
入力
*/
printf("名前は? ");
scanf("%s", x.name);
printf("給与は? ");
scanf("%d", &x.kyuyo);
printf("年齢は? ");
scanf("%d", &x.nenrei);
/*
出力
*/
printf("名前 %s 給与 %d 年齢 %d\n", x.name, x.kyuyo, x.nenrei);
return 0;
}
/****************************/
/* 3次元空間の点 */
/* coded by Y.Suganuma */
/****************************/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct ten {
double x,y,z,r;
};
int main()
{
struct ten *p;
double mean = 0.0;
int i1, kosu = 0, n;
/*
入力
*/
printf("点の数は? ");
scanf("%d", &n);
p = (struct ten *)malloc(n*sizeof(struct ten));
for (i1 = 0; i1 < n; i1++) {
printf("点の座標は(x y z)? ");
scanf("%lf %lf %lf", &p[i1].x, &p[i1].y, &p[i1].z);
p[i1].r = sqrt(p[i1].x * p[i1].x + p[i1].y * p[i1].y + p[i1].z * p[i1].z);
mean += p[i1].r;
}
/*
点の個数
*/
mean /= n;
for (i1 = 0; i1 < n; i1++) {
if (p[i1].r >= mean)
kosu++;
}
printf(" 平均距離 %f 個数は %d\n", mean, kosu);
return 0;
}
/****************************/
/* 構造体のネスト */
/* coded by Y.Suganuma */
/****************************/
#include <stdio.h>
struct kojin {
char name[20];
struct jusho {
char ken[10];
char shi[10];
char ban[20];
} ju;
int nen;
char sei[3];
};
void output(struct kojin);
int main()
{
struct kojin x;
/*
入力
*/
printf("名前は? ");
scanf("%s", x.name);
printf("住所(県)は? ");
scanf("%s", x.ju.ken);
printf("住所(市)は? ");
scanf("%s", x.ju.shi);
printf("住所(番地)は? ");
scanf("%s", x.ju.ban);
printf("年齢は? ");
scanf("%d", &x.nen);
printf("性別は? ");
scanf("%s", x.sei);
/*
出力
*/
output(x);
return 0;
}
/*******************/
/* 構造体の出力 */
/* x : 構造体 */
/*******************/
void output(struct kojin x)
{
printf("名前 %s 住所 %s%s%s 年齢 %d 性別 %s\n",
x.name, x.ju.ken, x.ju.shi, x.ju.ban, x.nen, x.sei);
}
/****************************/
/* 名前,住所,電話番号 */
/* coded by Y.Suganuma */
/****************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct kojin {
char name[20];
char jusho[50];
char tel[15];
};
int main()
{
struct kojin *p;
char name[20];
int i1, n, sw = 1;
/*
入力(データベースの作成)
*/
printf("人数は? ");
scanf("%d", &n);
p = (struct kojin *)malloc(n*sizeof(struct kojin));
for (i1 = 0; i1 < n; i1++) {
printf(" 名前は? ");
scanf("%s", p[i1].name);
printf(" 住所は? ");
scanf("%s", p[i1].jusho);
printf(" 電話番号は? ");
scanf("%s", p[i1].tel);
}
/*
探索
*/
printf("探索\n");
while (sw > 0) {
printf(" 名前は?(endで終了) ");
scanf("%s", name);
sw = strcmp(name, "end");
if (sw != 0) {
for (i1 = 0; i1 < n && sw != 0; i1++) {
sw = strcmp(name, p[i1].name);
if (sw == 0)
printf(" 電話番号は %s\n", p[i1].tel);
}
if (sw != 0)
printf(" 見つかりません\n");
sw = 1;
}
}
return 0;
}

/****************************/
/* リスト処理 */
/* coded by Y.Suganuma */
/****************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct list {
char *name;
struct list *mae;
struct list *ato;
};
void add(char *, struct list **);
void output(struct list *, int);
struct list **search(char *, struct list **, int *);
int main()
{
struct list *base = NULL, **add_a;
int sw = 1, same;
char tango[50];
/*
単語の入力とリストの作成
*/
while (sw != 0) {
// 単語入力
printf("単語を入力して下さい(終了はピリオド) ");
scanf("%s", tango);
// 終了判定
sw = strcmp(tango, ".");
// リスト作成
if (sw != 0) {
add_a = search(tango, &base, &same); // 探索
if (same == 0)
add(tango, add_a); // 追加
}
}
/*
リストの出力
*/
output(base, 0);
return 0;
}
/**************************************************************/
/* 単語の探索 */
/* tango : 入力された単語 */
/* base : 単語が入っている構造体のアドレスへのポインタ */
/* same : =0 : 単語を追加 */
/* =1 : 既に同じ単語がリスト上にある */
/* return : 追加する単語構造体のアドレスに対するポインタ */
/**************************************************************/
struct list **search(char *tango, struct list **base, int *same)
{
struct list **add_a;
int sw;
*same = 0;
/*
最初の単語
*/
if (*base == NULL)
return base;
/*
単語の比較
*/
sw = strcmp(tango, (*base)->name);
if (sw == 0) { // 同じ単語
*same = 1;
return base;
}
else {
if (sw < 0)
add_a = search(tango, &((*base)->mae), same); // 左
else
add_a = search(tango, &((*base)->ato), same); // 右
return add_a;
}
}
/************************************************************/
/* 単語の追加 */
/* tango : 入力された単語 */
/* base : 単語が入っている構造体のアドレスへのポインタ */
/************************************************************/
void add(char *tango, struct list **base)
{
int len;
*base = (struct list *)calloc(1, sizeof(struct list));
len = strlen(tango) + 1;
(*base)->name = (char *)malloc(len*sizeof(char));
strcpy((*base)->name, tango);
}
/**********************************************************/
/* 単語の出力 */
/* base : 対象とする単語が入っている構造体のアドレス */
/* dep : リストの深さ */
/**********************************************************/
void output(struct list *base, int dep)
{
int i1;
if (base != NULL) {
for (i1 = 0; i1 < dep; i1++)
printf(" ");
printf("%s\n", base->name);
dep++;
output(base->mae, dep);
output(base->ato, dep);
}
}
| 菅沼ホーム | 演習解答例目次 | 本文目次 | 付録 | 索引 |