zoukankan      html  css  js  c++  java
  • 第三次结构部分作业

    作业要求一
    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
    %.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
    ",aver);
        p=s;
        for(i=0;i<N;i++,p++)
        {
            if(p->grade<aver)
            printf("%s %.5d
    ",p->name,p->num); 
        }
    }

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

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

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

    要求三、学习总结和进度

    1.

    2.截图:

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

  • 相关阅读:
    vscode .vue文件中不能提示html代码
    vscode不能提示已经定义的类名和id?
    vue常用指令
    移动端性能陷阱和硬件加速
    关于样式的获取问题
    “'npm' 不是内部或外部命令,也不是可运行的程序”
    JavaScript之闭包问题
    Sublime Text 套件介紹:Pretty JSON
    教你解决Sublime Text中文乱码问题
    C# 连接Mysql 字符串
  • 原文地址:https://www.cnblogs.com/hezongyan/p/8875519.html
Copyright © 2011-2022 走看看