码迷,mamicode.com
首页 > 编程语言 > 详细

C语言博客作业--结构体

时间:2017-12-24 20:11:14      阅读:494      评论:0      收藏:0      [点我收藏+]

标签:思路   insert   c语言   基本   统计学   基本数据   结果   ++   编译   

一、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选项数组越界

C语言博客作业--结构体

标签:思路   insert   c语言   基本   统计学   基本数据   结果   ++   编译   

原文地址:http://www.cnblogs.com/linyiwei/p/8097810.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!