咱们以前在PAT乙级的题目中遇到过结构体,结构体是无比利便的,能帮助存储不同类型的数据项,今天这道题目呢,就是用到了结构体,完成这道题目也显得无比简单。
先来看看这道题目的具体请求:文章源自微观生活(93wg.com)微观生活-https://93wg.com/2947.html
1、输入在第一行给出正整数N(N<=10)。文章源自微观生活(93wg.com)微观生活-https://93wg.com/2947.html
2、随后N行,每一一行依照格式姓名 生日 性别 固话 手机给出一条记录。文章源自微观生活(93wg.com)微观生活-https://93wg.com/2947.html
3、其中姓名、生日、性别、固话、手机都要知足一定的请求。文章源自微观生活(93wg.com)微观生活-https://93wg.com/2947.html
4、在通信录完成输入后,最后一行给出正整数K,随后输入K个整数,表示要查询的记录编号,编号从0到N-1为止。文章源自微观生活(93wg.com)微观生活-https://93wg.com/2947.html
5、对每一一行要查询的记录编号,用姓名 固话 手机 性别 生日的格式打印,如果该记录不存在,则打印Not Found。文章源自微观生活(93wg.com)微观生活-https://93wg.com/2947.html
梳理逻辑文章源自微观生活(93wg.com)微观生活-https://93wg.com/2947.html
这道题目看起来无比繁杂,但其实逻辑是很简单的,正如这道题目的分值同样,只有10分。文章源自微观生活(93wg.com)微观生活-https://93wg.com/2947.html
1、输入正整数N,且N要小于等于10,毫无疑难,这边要用到scanf函数。文章源自微观生活(93wg.com)微观生活-https://93wg.com/2947.html
2、输入N组数据,就是用到一个for循环。文章源自微观生活(93wg.com)微观生活-https://93wg.com/2947.html
3、对于这一组信息:姓名 生日 性别 固话 手机,咱们使用结构体来存储,且都是用字符型数组。
4、输入整数K与K个整数,分别用到scanf函数以及for循环。
5、依照固定格式打印,那就是printf函数要讲求一些。
代码实现//通信录的录入与显示 #include<stdio.h> struct information{ char name[12];//姓名不超过10个字符 char birthday[17];//生日 char gender[2];//性别 char phone[17];//固话 char mobile[17];//电话 }; int main{ int N; int K; int Search[100]; struct information hu[100]; int count = 0;//计数法 scanf;//输入整数N if{ scanf;//如果N大于100,从新输入 } for{ scanf; }//循环依照格式请求打印 scanf;//输入整数K for{ scanf;//K个整数 } for{ if{ if{ printf; } else{//解决越界问题以及空行问题 printf; } } else if{ if{ printf; } else{//解决越界问题以及空行问题 printf; } } } }结果测试
总结
刚开始做这道题目的时候,遇到了一个问题,就是最后结尾的空行如何去掉,当时没有解决这个问题,而且这道题目也没有把这个当作一个测试点。
如果我把换行符号去掉,可以知足其中的某几个测试点,但会致使数组越界,如果不去掉,就是正确的。
后来我想了想,应当就是i以及K-1之间的关系,换行符号如果在末尾的话,那就说明i大于K-1了,那就数组下标越界,致使犯错,以后我修改了前提判断语句,就解决了这个问题。
以上就是微观生活(93wg.com)关于“C语言实现通信录的录入与显示,基础编程由此开始(第三十一节)”的详细内容,希望对大家有所帮助!
评论