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

本文分享了PTA在线编程平台上的三个实验作业案例,包括结构体数组排序、时间换算及通讯录管理等,同时介绍了结构体、共用体、枚举的特点以及递归函数的原理。

一、PTA实验作业

题目1:6-4 结构体数组按总分排序(10 分)

1. 本题PTA提交列表

1232159-20171224192750912-522520170.jpg

2. 设计思路

struct student                  
{
int num;
char name[15];
float score[3];
float sum;
};//该结构体表示学生的信息和成绩
定义一个求总分的函数
    定义循环变量i
    for  i=0  to i<n
        p[i].sum=p[i].score[0]+p[i].score[1]+p[i].score[2];//求总分
        end i.
定义一个排序的函数
    定义一个中间变量index,循环变量i,j
    定义结构体中间变量temp
    for i=0 to i<n-1
        index=i;
        for(j=i+1;j<n;j++)
             如果p[j].sum大于p[index].sum
            p[index]与p[i]交换//选择排序法
            end j.
        end i.

3.代码截图

1232159-20171224202031600-332845275.jpg

4.本题调试过程碰到问题及PTA提交列表情况说明。

1232159-20171224203921350-119017879.png

  • 调试的时候发现输出的数据不按总成绩的大小排序,检查才发现在用选择排序法时忘了在循环外加大括号。

题目2:7-2 时间换算(15 分)

1. 本题PTA提交列表

1232159-20171224193310318-856643721.jpg

2. 设计思路

    定义一个小时hour,分钟minute,秒second,number,总时长sum=0;
    输入hour,minute,second
    输入number
    总时长sum等于hour*3600+minute*60+second+number
    sum=sum/86400求余
    hour=sum/3600
    minute=(sum-hour*3600)/60
    second=sum-hour*3600-minute*60//求出新的时间
    输出新的时间

3.代码截图

1232159-20171224200719131-690355197.jpg

4.本题调试过程碰到问题及PTA提交列表情况说明

  • 刚开始不知道怎么输出小于10时的分钟数和秒数,还分了几种情况输出,后来百度了下才知道在%d前面加个0就可以输出了。

题目3:7-6 通讯录的录入与显示(10 分)

1. 本题PTA提交列表

1232159-20171224194656178-1903007926.jpg

2. 设计思路

struct record
{
    char name[11];
    char birth[11];
    char sex;
    char number1[17];
    char number2[17];
};//该结结构体表示朋友的信息
    定义n,i,k,t
    输出记录条数n
    定义结构体数组s[10]
    for i=0 to i<n
        输出所有数据s[i].name,s[i].birth,&s[i].sex,s[i].number1,s[i].number2
        end i.
        输入要查的记录数目k
     for i=0  to i<k
    输入要查询的记录编号t
       如果t<n且t>=0
          输出该条记录中的数据s[t].name,s[t].number1,s[t].number2,s[t].sex,s[t].birth
       否则输出"Not Found"
        end i.

3.代码截图

1232159-20171224195805225-1286509411.jpg

4.本题调试过程碰到问题及PTA提交列表情况说明

  • 定义的几个数组的长度不够大,其中birth数组的长度应为11,而我忽略了''也应占有两个字符长度。
  • 在查询记录是否存在时的条件应为t小于n且t大于等于0,而我写成了t<=n,而当记录等于n是不存在的。

二、截图本周题目集的PTA最后排名。

PTA排名
1232159-20171224224927490-1607145738.jpg

三、阅读代码(2分)

输入3个整数a,b,c,要求按由大到小的顺序将它们输出。用函数实现。
1232159-20180102223446596-620334917.png

  • 该题在函数中改变3个变量的值。用wamp函数交换两个变量的值,用exchange函数改变3个变量的值。虽然代码量比较多,但很清晰,通过指针实现了数字位置的变化。
    1232159-20180102231419034-780434900.png
  • 这个函数参数中的数组array是以0值为结束的字符串,要求在字符 串array中查找字符是参数search里的字符。如果找到,函数通过第三个参数(pa)返回值为array字符 串中第一个找到的字符的地址。如果没找到,则为pa为0。该函数通过改变指针的指向来访问字符串中的字符,很简洁。

四、本周学习总结(1分)

1.总结本周学习内容。

  • 结构体、共用体、枚举这种构造数据类型特点。
    结构体和数组一样都是构造型数据类型,和数组不同的是,结构体可以处理不同类型的数据。共用体是一种多变量共享存储空间的构造类型,它允许几种不同的变量共用同一存储空间。共用体和结构体的区别是结构体每一位成员都用来表示一种具体事务的属性,共用体成员可以表示多种属性(同一存储空间可以存储不同类型的数据)。枚举类型是指变量的值可以全部列出,定义一个枚举变量后,变量的值确定在定义之中。它和结构体、共用体的区别在于,枚举元素是常量,只能在定义阶段赋值。

  • 递归函数原理
    递归就是函数直接调用自己或通过一系列调用语句间接调用自己。在函数中调用函数自身,不断调用,直到满足函数得出计算结果。枚举类型是指变量的值可以全部列出,定义一个枚举变量后,变量的值确定在定义之中。它和结构体、共用体的区别在于,枚举元素是常量,只能在定义阶段赋值。

转载于:https://www.cnblogs.com/q2634615476/p/8098950.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值