7 34 通訊錄的錄入與顯示 (PAT)

2021-09-10 14:28:25 字數 1491 閱讀 3166

通訊錄中的一條記錄包含下述基本資訊:朋友的姓名、出生日期、性別、固定**號碼、移動**號碼。 本題要求編寫程式,錄入n條記錄,並且根據要求顯示任意某條記錄。

輸入在第一行給出正整數n(≤10);隨後n行,每行按照格式姓名 生日 性別 固話 手機給出一條記錄。其中姓名是不超過10個字元、不包含空格的非空字串;生日按yyyy/mm/dd的格式給出年月日;性別用m表示「男」、f表示「女」;固話手機均為不超過15位的連續數字,前面有可能出現+

在通訊錄記錄輸入完成後,最後一行給出正整數k,並且隨後給出k個整數,表示要查詢的記錄編號(從0到n−1順序編號)。數字間以空格分隔。

對每一條要查詢的記錄編號,在一行中按照姓名 固話 手機 性別 生日的格式輸出該記錄。若要查詢的記錄不存在,則輸出not found

3

chris 1984/03/10 f +86181779452 13707010007

laolao 1967/11/30 f 057187951100 +8618618623333

qiaolin 1980/01/01 m 84172333 10086

2 1 7

laolao 057187951100 +8618618623333 f 1967/11/30

not found

程式**:

#include#include#includestruct address//定義結構體

;int main(void)

} for (j = 0; j < 3; j++)//讀入生日

scanf("%c", &a[i].***);//讀取性別

getchar();//排除空格

for (j = 0; j < 18; j++)

}for (j = 0; j < 18; j++)

}} int m;

scanf("%d", &m);//搜尋次數

int*num;//定義指標

num = (int*)malloc(sizeof(int)*m);//動態分配記憶體

for (i = 0; i < m; i++)

for (i = 0; i < m; i++)

else

printf("%d", a[num[i]].birthday[j]);

if (j != 2)

}} if (i != m - 1)

}free(a);//釋放記憶體

free(num);//釋放記憶體

return 0;

}

本題關鍵在於資料的讀入與輸出,其他環節無難點。

需要注意的是,如果生日按整形型別讀入,若生日小於等於9,要在前面加上0.

7 34 通訊錄的錄入與顯示 10分

通訊錄中的一條記錄包含下述基本資訊 朋友的姓名 出生日期 性別 固定 號碼 移動 號碼。本題要求編寫程式,錄入n條記錄,並且根據要求顯示任意某條記錄。輸入在第一行給出正整數n 10 隨後n行,每行按照格式姓名 生日 性別 固話 手機給出一條記錄。其中姓名是不超過10個字元 不包含空格的非空字串 生日...

7 1 通訊錄的錄入與顯示

7 1 通訊錄的錄入與顯示 10 分 通訊錄中的一條記錄包含下述基本資訊 朋友的姓名 出生日期 性別 固定 號碼 移動 號碼。本題要求編寫程式,錄入n條記錄,並且根據要求顯示任意某條記錄。輸入格式 輸入在第一行給出正整數n 10 隨後n行,每行按照格式姓名 生日 性別 固話 手機給出一條記錄。其中姓...

5 34 通訊錄的錄入與顯示

通訊錄中的一條記錄包含下述基本資訊 朋友的姓名 出生日期 性別 固定 號碼 移動 號碼。本題要求編寫程式,錄入 n 條記錄,並且根據要求顯示任意某條記錄。輸入格式 輸入在第一行給出正整數 n 10 隨後 n 行,每行按照格式姓名 生日 性別 固話 手機給出一條記錄。其中姓名是不超過 10 個字元 不...