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

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

时间:2017-12-24 13:47:30      阅读:405      评论:0      收藏:0      [点我收藏+]

标签:fine   不能   scanf   函数   recursion   技术分享   i++   man   保留   

#一、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.罗列本周一些错题。 技术分享图片 技术分享图片

  • 对结构体的基本使用和概念不够娴熟和其他知识混淆。

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

标签:fine   不能   scanf   函数   recursion   技术分享   i++   man   保留   

原文地址:http://www.cnblogs.com/oracler0103/p/8080837.html

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