C语言第十次博客作业--结构体

一、PTA实验作业(5分)

题目1:6-3 结构体数组中查找指定编号人员

1. 本题PTA提交列表(要提交列表,不是结果)

2. 设计思路

struct student
{ char  num[10];
  int  year,month,day ;
};该结构体表示人员的编号,出生年月日。
定义一个环境变量
for i=0 to i<8
  若找到指定编号,则return *(std+i)

3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)

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

  • 一开始用flag来作为返回判断,不知道为什么答案错误。不用flag直接返回则正确。

题目2:7-1 计算职工工资

1. 本题PTA提交列表(要提交列表,不是结果)

2. 设计思路

struct money{
    char num[9];
    float jimoney;
    float fumoney;
    float zhimoney;
    float sum;
};该结构体表示给定N个职员的信息,包括姓名、基本工资、浮动工资和支出。
定义环境变量i,整数n
输入n
定义结构体mon[n]
for i=0 to i<n
输入名字,基本工资,浮动工资,支出。
求实发工资mon[i].sum=mon[i].jimoney+mon[i].fumoney-mon[i].zhimoney
end
for i=0 to i<n
输出名字,实发工资(保留两位小数)
end。

3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)

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

  • 定义工资时用了整型导致一直答案错误。

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

1. 本题PTA提交列表(要提交列表,不是结果)

2. 设计思路

struct man{
  char name[11];
  char birth[11]; 
  char sex;
  char tel[17];  
  char mobile[17]; 
}mans[11];该结构体表示朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。
定义环境变量i,k,整型数n,m
输入n。
for i=0 to i<n
输入朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。
end
输入k。
定义一个数组find[k]
for i=0 to i<k
输入要查询的记录编号
end
for i=0 to i<k
  若(find[i] >= 0 && find[i] < n)
  m=find[i]
  输出mans[m].name, mans[m].tel, mans[m].mobile, mans[m].sex, mans[m].birth 
  否则输出not found。
end

3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)

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

  • 无。

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

三、阅读代码

代码一
线性表用顺序实现

#include <stdio.h>
#define N 10
typedef struct sqlist
 {
   int data[N];
   int last;
   }LIST;

 int Total(List list)
 {
    int sum=0;
    for(int i=0;i<=list.last;i++)
    if(list.data[i]%2)
    sum+=list.data[i];   
    return sum;  
 }
 void Show(LIST list)
 {
   int i;
   for(i=0;i<=list.last;i++)
      printf("%3d", list.data[i]);
   printf("\n");
 }


int main()
 {
    LIST list;
    int i,sum;
    for(i=0;i<=5;i++)
     list.data[i]=i;
    list.last=5;
    Show(list);
    sum=Total(list);
    printf("sum=%3d\n",sum);
    return 0;
}
  • 本题使用结构体定义,并且用了两个功能不同的函数,使主函数变得简洁,整体代码可读性更强。
    代码二
    猜数
#include <stdio.h>  
#include <time.h>  
  
void creat(int *secretp)  
{  
    srand(time(NULL));  
    *secretp = rand() % 100 + 1;  
}  
void guess(int secret)  
{  
    int cnt = 0, a;  
    while(1)  
    {  
        printf("please input a num:");  
        scanf("%d", &a);  
        cnt++;  
        if(a == secret)  
        {  
            printf("cnt = %d\n", cnt);  
            break;  
        }  
        else if(a > secret)  
            printf("input a small one\n");  
        else  
            printf("input a big one\n");  
    }  
}  
int main(void)  
{  
    int secret;  
    creat(&secret);  
    guess(secret);  
    return 0;  
} 
  • 本题用了time.h的库函数,用在creat的函数里用srand(time(NULL))产生随机数,而guess函数则用来猜数,函数的使用使得整体代码可读性高,简洁,功能明显。

四、本周学习总结

1.总结本周学习内容。

  • 1.1 结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合。

  • 1.2定义一个结构的一般形式为:
    struct 结构名
    {
    成员表列
    };
    使用时可以在上面分号前面加变量,也可以在函数内在定义。

  • 1.3union共用体和结构体非常相似,二者最大的区别就是所占用的内存,一个是分量内存之和,另外一个是等于最大的分量的内存

  • 1.4枚举类型enum 类型名{常量1,常量2....常量n} 变量名
    枚举元素不是变量,而是常数,因此枚举元素又称为枚举常量。因为是常量,所以不能对枚举元素进行赋值。

  • 1.5递归(recursion)就是子程序(或函数)直接调用自己或通过一系列调用语句间接调用自己,是一种描述问题和解决问题的基本方法。
    递归的关键在于归纳出递归式子,确定出口,写程序时只要给出运算规律,对于具体过程不要深究。

2.罗列本周一些错题。


  • 对结构体的基本使用和概念不够娴熟和其他知识混淆。
posted @ 2017-12-24 12:08  oracler  阅读(696)  评论(1编辑  收藏  举报