您的位置:首页 > 编程语言 > C语言/C++

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

2017-12-24 12:08 281 查看

一、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

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
;
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;
}


本题使用结构体定义,并且用了两个功能不同的函数,使主函数变得简洁,整体代码可读性更强。

代码二

猜数

```c

include

include

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.罗列本周一些错题。





对结构体的基本使用和概念不够娴熟和其他知识混淆。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: