C语言博客作业--结构体
一、PTA实验作业
题目1:6-1 计算两个复数之积
1. 本题PTA提交列表
2. 设计思路
struct complex{
int real;
int imag;
};//该结构体表示复数的实部和虚部
定义结构变量z
z的实部等于x,y实部的积减x,y虚部的积
z的虚部等于x的实部*y的虚部+x的虚部*y的实部
return z
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
本题能较好完成
题目2:7-1 计算职工工资
1. 本题PTA提交列表
2. 设计思路
struct clerk{
char name[10];
float shifa,jiben,fudong,zhichu;
};分别表示职员的名字,实发,基本,浮动,支出的金额
定义整形 i,N
定义结构变量s
for i=0 to i<N
输入输入职员的姓名、基本工资、浮动工资,支出
for i=0 to i<N
实发工资=基本工资+浮动工资-支出
输出职员的名字,和实发工资
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
答案错误:开始看给出的数据,以为输入的数是整形的,所以把输入的数定义为整形
导致答案一直错误。后询问同学得知。
题目3:7-6 通讯录的录入与显示
1. 本题PTA提交列表
2. 设计思路
struct adress{
char name[11];
char birth[12];
char sex[2];
char guding[150];
char phone[150];
};分别表示名字,生日,性别,固话,手机
定义整形变量N放人数,i,K查找次数,a,j
输入N的值
定义结构变量s
for i=0 to i<N
输入名字,生日,性别,固话,手机
输入k的值
for j=0 to j<k
输入a的值
如果有a的值
输出名字,固话,手机,性别,生日
如果没有就输出Not Found
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
部分正确:在判断查找记录时,没有考虑a<0这一条件,导致有测试点过不去。
多次尝试后发现问题,予以补充。
二、截图本周题目集的PTA最后排名
三、阅读代码
#include <conio.h>
#include <stdio.h>
#define M 50
void Fun ( int a[ ], int x, int *n ) {
int i,j;
for(i=0;i<*n;i++)
if(x>a[i])
break;
for(j=*n;j>i;j--)
a[j]=a[j-1];
a[i]=x;
*n=*n+1; }
void main( )
{ int a[M]={20,15,13,10,9,6,5}, x, n=7, k;
scanf("%d", &x );
Fun(a,x,&n);
for( k = 0; k < n; k++ )
printf ("%d ",a[k] ); }
本题的目的是一个有序数组加入一个数仍然有序。pta数组有个相同题目我的做法是把数组扩大,然后用冒泡法从新排序
虽然正确通过,但是与这个代码相比效率显得有点低。它的做法是遍历数组找到比它小的一个停止,然后对后面的值赋值。
代码看起来简洁,效率也很高。
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
int main(){
int t,ra=0;
cin>>t;
for(int i=1;i<=t;i++){
ra+=9;
if(i%10==0&&ra>3*i)
i+=30;
}
if(ra>3*t) cout<<"^_^ "<<ra<<endl;
else if(ra==3*t) cout<<"-_- "<<ra<<endl;
else cout<<"@_@ "<<3*t<<endl;
return 0;
}
该题为龟兔赛跑。
因为龟是一直走的所以不用进行判断,对兔子的行程判断,每10分钟判断一次,
比龟的长,直接停30分钟最后比较路程。思路很直接,代码简洁,高效。
四、本周学习总结
1.总结本周学习内容
1.结构体、共用体、枚举这种构造数据类型特点
结构体
- 结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型。首先结构体可以在一个结构中声明不同的数据类型,
- 第二相同结构的结构体变量是可以相互赋值的
- 第三,节省内存空间
- 第四,高效率
共用体
-1.同一个内存段可以用来存放几种不同类型的成员,但是在每一瞬间只能存放其中的一种,而不是同时存放几种。
每一瞬间只有一个成员起作用,其他的成员不起作用,即不是同时都在存在和起作用。
- 2.共用体变量中起作用的成员是最后一次存放的成员,在存入一个新成员后,原有成员就失去作用。
- 3.共用体变量的地址和它的各成员的地址都是同一地址。
- 4.不能对共用体变量名赋值,也不能企图引用变量名来得到一个值。
枚举
- 枚举类型是指变量的值可以全部列出
- 定义一个枚举变量后,变量的值确定在定义之中。
- 枚举元素是常量,只能在定义阶段赋值。
2.罗列本周一些错题
以为开始是奇数直接值加二就可以
正确做法是要判断是否为奇数,是的话就求和
这题的做法是用结构变量,开始预习不充分就用了以前的知识来做
还有一点就是字符串的比较需要调用库函数strcmp