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

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

时间:2017-12-25 01:04:22      阅读:318      评论:0      收藏:0      [点我收藏+]

标签:过程   姓名   覆盖   blog   i+1   需要   class   语句   images   

一、PTA实验作业

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

1. 本题PTA提交列表

技术分享图片

2. 设计思路

void calc 函数部分(计算每位同学成绩总和) 
     i=0;
     for  i to  n-1 
       总成绩=三科成绩总和
    end;
void sort 函数部分 (通过比较每位同学成绩总和,对同学进行排序)   
       定义 i,j;
        定义结构变量 temp 
        for i=1 to n
           for j=0  to n-i 
           利用冒泡排序将同学的总分的从大到小排序
    end;

3.代码截图

技术分享图片

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

计算总和时直接用sum=sum+score[i],发现运行后总和数并没有相加,是要用结构指针间接访问结构变量,后来改为p+i)->sum=(p+i)->score[0]+(p+i)->score[1]+(p+i)->score[2]可以计算成绩总和;开始时是用选择排序法,但发现发现过于复杂,后来换用冒泡排序,简单

题目2:7-5 有理数比较

1. 本题PTA提交列表

技术分享图片

2. 设计思路

   定义结构变量;
      int flag;
      char ch;
      输入这两个有理数number1,number2 
      flag=number1.fenzi*number2.fenmu-number2.fenzi*number1.fenmu
      判断flag的大小,从而确定ch的值
       如若flag>0
         ch=‘>‘;
        若flag<0
         ch=‘<‘
        否则
          ch=‘=‘      
    输出两个有理数比较后的结果         
    end   

3.代码截图

技术分享图片

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

开始时直接用两有理数相减,但发现分子,分母都是整型范围内整数,相除后不会保留小数;后来定义结构变量,分别定义分子,分母和分号;
再根据两有理数分子,分母的关系,判断ch的值就可以了

题目3:7-6 通讯录的录入与显示

1. 本题PTA提交列表

技术分享图片

2. 设计思路

定义结构变量
     定义结构变量表 
    输入n
    for i=0  to  n-1 
      输入姓名 生日 性别 固话 手机  
    输入k
    for  i=0  to  k-1 
         输入查找编号num[i]
    判断num[i]是否在0~10之间,若在,则输出相应的人员信息
    若不在,则输出Not Found     

3.代码截图

技术分享图片

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

这题部分正确的原因是输出错误,与原题要求的输出符号错了,其他没什么

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

技术分享图片

三、阅读代码

四、本周学习结

1.总结本周学习内容。

结构体 共同体 枚举体

结构体:
概念:结构体时一种构造数据类型
用途:把不同类型的数据组合成一个整体
内存:各成员所占内存空间的累加
关键词:struct

一.结构体的声明与定义变量的方法一共有三种:

1.常规定义:

struct AA
{
int a;
int b;
}; //注意大括号后面有分号
变量定义:struct 机构体名 结构体变量名表
如: struct AA aa,bb;(前面的struct不能掉)
成员调用:aa.a; aa.b;

2.尾部定义。

struct CC
{
int a;
int b;
}aa,bb;
此时aa,bb就是已经定义好的CC类型的变量了,这种情况在声明时struct前就一定不能加typedef,如果加上了,aa,bb就成了和CC一样的结构体类型了,而不是变量了。

3.无名结构体

struct CC
{
int a;
int b;
}vip1,vip2;
此种情况除了vip1,vip2,不能再在其他地方定义新的变量,即定义了几个就只能用几个。

不能在结构体内部直接给成员赋值:

#include<stdio.h>  
//直接带变量名Huqinwei  
struct stuff{  
//      char job[20] = "Programmer";  
//      char job[];  
//      int age = 27;  
//      float height = 185;  
}Huqinwei; 
1
2
3
4
5
6
7
8
https://yq.aliyun.com/articles/10417
1

共用体:

构造数据类型,也叫联合体。
用途: 使几个不同类型的数据共占一段内存(相互覆盖)

关键词:union
特点:

1共用体变量任何时候只有一个变量存在。
2,共用体变量定义分配内存,长度=最长成员所在字节数
3,定义共用体变量的方式和结构体一样有三种:常规,尾部,无名。
4,当给一个成员重复赋值时或对多个成员赋值时,只承认最后一次的赋值。

枚举体

关键词:enum

用途:列举所有选项
举例:day = {Sunday,Monday,Tuesday,Wednesday,Thusday,Friday,Saturday};
结尾有分号,如果个枚举常量没有赋值,则默认值为其下标(参考一维数组),比如此时Tuesday = 2

递归函数的原理

递归(recursion)就是子程序(或函数)直接调用自己或通过一系列调用语句间接调用自己,是一种描述问题和解决问题的基本方法。

递归通常用来解决结构自相似的问题。所谓结构自相似,是指构成原问题的子问题与原问题在结构上相似,可以用类似的方法解决。具体地,整个问题的解决,可以分为两部分:第一部分是一些特殊情况,有直接的解法;第二部分与原问题相似,但比原问题的规模小。实际上,递归是把一个不能或不好解决的大问题转化为一个或几个小问题,再把这些小问题进一步分解成更小的问题,直至每个小问题都可以直接解决。因此,递归有两个基本要素:

(1)边界条件:确定递归到何时终止,也称为递归出口。

(2)递归模式:大问题是如何分解为小问题的,也称为递归体。递归函数只有具备了这两个要素,才能在有限次计算后得出结果

在递归函数中,调用函数和被调用函数是同一个函数,需要注意的是递归函数的调用层次,如果把调用递归函数的主函数称为第0层,进入函数后,首次递归调用自身称为第1层调用;从第i层递归调用自身称为第i+1层。反之,退出第i+1层调用应该返回第i层。

递归函数的内部执行过程

一个递归函数的调用过程类似于多个函数的嵌套的调用,只不过调用函数和被调用函数是同一个函数。为了保证递归函数的正确执行,系统需设立一个工作栈。具体地说,递归调用的内部执行过程如下:

(1)运动开始时,首先为递归调用建立一个工作栈,其结构包括值参、局部变量和返回地址;

(2)每次执行递归调用之前,把递归函数的值参和局部变量的当前值以及调用后的返回地址压栈;

(3)每次递归调用结束后,将栈顶元素出栈,使相应的值参和局部变量恢复为调用前的值,然后转向返回地址指定的位置继续执行。 

2.罗列本周一些错题
技术分享图片
技术分享图片

1.输出应是s.score,应加上结构变量名 2.定义结构体指针,struct student *; 3.分数加一,应加上变量名,p->score[i]或p.score[i] 4.返回的是学生的所有相关信息,不止是成绩

技术分享图片
技术分享图片

1.定义结构体变量 struct worker s[10] 2.name[20]是地址,不用加&,其他的需加& 即&s[i].num, s[i].name ,&s[i].jbpay,&s[i]zwpay 3,max=i 4.min=i

技术分享图片

fun()函数定义了一个数及数组,但D选项中fun(int n ,int a)不可以这么写,这样a是一个整型数,并不是一个数组

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

标签:过程   姓名   覆盖   blog   i+1   需要   class   语句   images   

原文地址:http://www.cnblogs.com/2223ch/p/8095156.html

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