五 PTA结构体实验

Posted 风月子觞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了五 PTA结构体实验相关的知识,希望对你有一定的参考价值。

 

#一、PTA结构体实验作业。

##题目1:

 

##1. 本题PTA提交列表:

 

##2. 设计思路:

                         1,先定义三个结构体变量,两个用于计算存储数据,一个存储输入数据。

                         2,进行逐个比较,把最大的赋值给max,把最小的赋值给min。

                         3,输出最大最小的价格。

        流程图:

 

        主要描述题目算法:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

int main()
{
    struct bookandprice
    {
        char name[60];
        double price;      //必须是double
    }now,max,min;

    max.price=0;
    min.price=999999;  //起码要这么大才行
    int n,i;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        getchar();
        gets(now.name);
        scanf("%lf",&now.price);
        if(now.price>max.price)
        {
            strcpy(max.name,now.name);
            max.price=now.price;
        }
        if(now.price<min.price)
        {
            strcpy(min.name,now.name);
            min.price=now.price;
        }
    }
    printf("%.2lf, %s\\n%.2lf, %s",max.price,max.name,min.price,min.name);

    return 0;
}

 

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

注意最大n和最长字符串的最大界限。

 

 

##题目2:

 

##1. 本题PTA提交列表:

 

##2. 设计思路:1,先定义数组,再输入数据;

                           2,求和三个成绩,然后再求最大值,最后输出。

        流程图:

 

        主要描述题目算法:

#include <stdio.h>
struct _student
{
 char id[6];
 char name[10];
 int class1;
 int class2;
 int class3; 
};
int main(int argc, char const *argv[])
{
 int n;
 int i = 0;
 scanf("%d",&n);
 struct _student stu[n];
 int class_res = 0;
 int max_flag = 0;
 for (i = 0; i < n; ++i)
 {
  scanf("%s %s %d %d %d",stu[i].id,stu[i].name,&stu[i].class1,&stu[i].class2,&stu[i].class3);
 }
 class_res = stu[0].class1 + stu[0].class2 + stu[0].class3;
 
 for (i = 0; i < n; ++i)
 {
  if(class_res < stu[i].class1 + stu[i].class2 + stu[i].class3){
   class_res = stu[i].class1 + stu[i].class2 + stu[i].class3;
   max_flag = i;
  }
 }
 printf("%s %s %d\\n",stu[max_flag].name,stu[max_flag].id,class_res);
 return 0;
}

 

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

 

 

##题目3:

 

 

##1. 本题PTA提交列表:

##2. 设计思路:1,先定义数组用以存储要输入的数据,再输入数据进行存储;

                          2,根据输入的整数来输出存储的数组数据。

        流程图:

 

        主要描述题目算法:

#include<stdio.h>  
#include<stdlib.h>  
#include<string.h> 
  
  
struct list{  
    char name[11];  
    char num[17];  
    char phone[17];  
    char sex[2];//数组! 
    char birthday[11];  
};  
struct list p[100];  
  
  
int main()  
{  
  
int i=0;int j=0,N,K;  
scanf("%d",&N);  
for(i=0;i<N;i++)  
{  
scanf("%s %s %c %s %s\\n",&p[i].name,&p[i].birthday,&p[i].sex,&p[i].num,&p[i].phone);  
}  
  
  
    scanf ("%d", &K);  
      
    int number;   
    for (i=0; i<K; i++) {  
        scanf ("%d", &number);  
        if (number < N && number>=0)   
        {  
           printf("%s %s %s %s %s\\n",p[number].name,p[number].num,p[number].phone,p[number].sex,p[number].birthday);    
        } else {  
            printf ("Not Found\\n");   
        }  
    }  
    return 0;  
  
}  

 

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

 

 

#二、同学代码结对互评。

我的代码和周朝阳同学的代码

7-3 找出总分最高的同学

##1.同学互评照片

 

##2.我的代码、互评同学代码截图(此处截图核心代码就好,不一定截图全部代码,图上指明是谁的代码。)

      我的代码:

 

 

     同学的代码(周朝阳):

 

##3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。

 我的代码用了指针数组,并且添加引用的变量较多。

周朝阳同学的直接用往数组中存入数据,变量较少。

求最高成绩并输出的部分差别不大,他的代码比我的简洁,我应该向他学习。

#三、截图本周题目集的PTA最后排名

 

 

 

 

#四、本周学习总结。

正如老师课上而言,机构体不是什么新的内容,很容易和前面的数组,指针,和函数一起用于编程。

结构体里面的变量也可以为结构体,结构体也可以套用。

不过实际操作也总是出现各种问题,就比如我pta的7-9,就很是纠结,反正就很气。

 

以上是关于五 PTA结构体实验的主要内容,如果未能解决你的问题,请参考以下文章

PTA实验作业(结构体)

结构体链表

第三次PTA作业1

结构体和链表

[PTA]实验9-6 按等级统计学生成绩

结构体和链表