一、PTA实验作业(5分)
题目1:按等级统计学生成绩
1. 本题PTA提交列表(要提交列表,不是结果)
2. 设计思路(伪代码或流程图)
struct student
{ char num[10];
int year,month,day ;
};//该结构体表示人员的编号、出生年月日
传入学生信息和要查找的编号
int i控制循环,flag=1判断是否找到人员
for i=0 to i<8
if(用strcmp对比std[i]编号和num是否相同?) flag=0 找到返回该人员信息
如果没找到字符串 返回空串
end for
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.本题调试过程碰到问题及PTA提交列表情况说明。
这题思路比较清晰,主要是刚开始练习结构体用的不太熟练,在编译器的提示下解决的,用‘.’的话不能直接std.num,需要写成(*(std)).num
题目2:时间换算
1. 本题PTA提交列表(要提交列表,不是结果)
2. 设计思路(伪代码或流程图)
struct time{
int hh,mm,ss;
};//该结构体表示时间的小时,分钟,秒
int t表示经过时间,分钟minute=0,小时hour=0;
定义结构体times
输入小时数,分钟数,秒数
计算新秒数minute
将新秒数转化为新的小时分钟秒数
秒数满60分钟数进一
分钟数满60小时数进一
小时数对24进行取余
输出新的小时,分钟,秒数
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.本题调试过程碰到问题及PTA提交列表情况说明。
部分正确:if判断的时候是逢60进一位,我条件写成>60漏了 =,导致一直部分正确,一步步调试发现了漏洞
题目3:通讯录的录入与显示
1. 本题PTA提交列表(要提交列表,不是结果)
2. 设计思路(伪代码或流程图)
struct number{
char name[11],sex,phone[17],mophone[17],birthday[17];
};//该结构体表示人员的名字,性别,固定电话,移动电话,出生日期
int n表示录入数据个数,i,j控制循环flag=0判断是否找到
输入录入数据个数n
定义结构体数组a[n]
for i=0 to i<n
输入n个学生的数据
int k表示查询数据个数
输入查询数据个数k
int b[k]存放输入的查询编号
for i=0 to i<k
输入查询的编号
for i=0 to i<k
for j=0 to j<n
如果找到了输出该人员信息
flag=1
如果没找到
输出“Not Found”
重新flag=0
end for
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.本题调试过程碰到问题及PTA提交列表情况说明。
答案错误:一开始年月日那边用的%d/%d/%d/%d输入,发下只有一位的无法输成01这样的形式,后来直接把年月日直接改成字符串输入输出就好了,把出生年月看成一个整体。
二、截图本周题目集的PTA最后排名。(2分)
三、阅读代码(2分)
- 题目1:设计函数char *insert(s1,s2,n),用指针实现在字符串s1中的指定位置n处插入 字符串s2
优点相比遍历数组的办法,通过指针移动完成这类题更方便简洁。
题目2:
利用指针完成字符串复制函数 char strcpy(char s1,char *s2):
strcpy字符串复制函数原型:char * strcpy(char * dest, const char * src) // 实现src到dest的复制 { if ((src == NULL) || (dest == NULL)) //判断参数src和dest的有效性 { return NULL; } char *strdest = dest; //保存目标字符串的首地址 while ((*strDest++ = *strSrc++)!=‘\0‘); //把src字符串的内容复制到dest下 return strdest; }
对比网上一道指针题和strcpy字符串复制函数原型,二者都是通过保存目标字符串的首地址实现字符串复制,可见运用指针实现复制的方法简洁实用。
四、本周学习总结(1分)
1.总结本周学习内容。
结构体、共用体、枚举这种构造数据类型特点:
结构体:构体和数组一样都是构造型数据类型,和数组不同的是,结构体可以处理不同类型的数据,结构体里还可以有结构体类型、共用体的类型的数据。
struct a{ 类项名 结构成员 类项名 结构成员 }; struct 结构名{ 类型名 结构成员1 类项名 结构成员2 struct a 结构成员3 }结构体变量名表;
共用体:共用体是一种多变量共享存储空间的构造类型,它允许几种不同的变量共用同一存储空间,共用体空间等于最大成员占据的空间且共用体不能赋初值。
struct 结构名{ 类型名 结构成员1 类项名 结构成员2 union 类项名{ 类项名 结构成员3; 类项名 结构成员4; 类项名 结构成员5; } 共用体变量名表; }结构体变量名表;
枚举:枚举是C语言中一种基本数据类型,可以用于声明一组常数。当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型。比如可以用枚举来表示星期,季节,月份等。
例子:enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN };
自动推算TUE=2, WED=3, THU=4, FRI=5, SAT=6, SUN=7
递归函数原理
- 递归关键是归纳出递归出口和递归式子。
- 工作原理为:
(1)运动开始时,首先为递归调用建立一个工作栈,其结构包括值参、局部变量和返回地址。
(2)每次执行递归调用之前,把递归函数的值参和局部变量的当前值以及调用后的返回地址压栈;
(3)每次递归调用结束后,将栈顶元素出栈,使相应的值参和局部变量恢复为调用前的值,然后转向返回地址指定的位置继续执行
2.罗列本周一些错题。
错了以后知道了struct本身就是一种类型,写的时候就翻书对照,也不知道该填什么类型。
返回值应该为7432,老师上课讲评后才知道递归返回的顺序应从递归出口开始返回,所以输出的值不变。
没注意到D选项数组越界