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

posted @ 2017-12-23 13:44  圣多美  阅读(310)  评论(1编辑  收藏  举报