第三次结构部分作业

作业要求一
1 已完成
2  struct sk{int a; char *str)}*p;   p->str++ 中的++ 加向str字符串中的字符++。

作业要求二

题目1查找书籍中最高价及最低价

1.设计思路

(1)主要描述题目算法

第一步:题中需要比较不同的书名和价格,先建立book结构体(name【】,price)。
第二步:把min,max分别赋初值999999999,0。

第三步:在for循环中进行价格高低的比较,找到最高的或最低的价格,并输出相应的书名及价格。

(2)流程图

  

 

2.实验代码

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

int main()
{
    struct book
    {
        char name[300];
        double price; 
    }now,max,min;

    max.price=0;
    min.price=999999999999999999;
    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.本题调试过程碰到问题及解决办法

错误信息1:没有定义min,max以及他们的初始值。

截图:

 
   改正方法:定义max,min变量以及赋初值和其输入价格比较。

题目2 计算平均成绩

1 设计思路

(1)主要描述题目算法

第一步:建立以student为名的结构体(包含学号,姓名,成绩)。
第二步:对平均数赋初值,并输入人的个数以及对应的学号,姓名,成绩,并把每一个学生的成绩累加。

第三步:计算平均值,并判断输入的成绩与平均值的比较,输出低于平均值成绩的姓名以及成绩。

(2)流程图

 

2.实验代码

#include<stdio.h>
struct student{
    int num;
    char name[10];
    int grade;
};
int main()
{
    int N,i=0,num=0;
    float aver=0;
    scanf("%d",&N);
    struct student s[N],*p;
    p=s;
    for(i=0;i<N;i++,p++)
    {
        scanf("%d%s%d",&p->num,p->name,&p->grade);
        num=num+p->grade;
    }
    if(N==0)
    aver=0;
    else
    aver=num/(N*1.0);
    printf("%.2f\n",aver);
    p=s;
    for(i=0;i<N;i++,p++)
    {
        if(p->grade<aver)
        printf("%s %.5d\n",p->name,p->num); 
    }
}

3.本题调试过程碰到问题及解决办法

错误:打印出的数是乱码;

解决方法:代码中含有两个循环体,而p在第一个循环中最终指向最后一个的地址,所以需要在第二个循环钱加上p=s这种语句。

 

要求三、学习总结和进度

1.

2.截图:

git地址:https://git.coding.net/hezongyan321/text.git

 

posted @ 2018-04-22 15:41  何宇诗  阅读(195)  评论(0编辑  收藏  举报