第3次 结构部分

一.
课上疑点:讨论查阅分析 struct sk{int a; char str)}p; p->str++ 中的++ 加向________?.
答:加向p中字符指针str
二.

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

1.设计思路:
(1)主要描述思路算法
第一步:构建程序基本框架,定义结构体数组,书名,价格
第二步:运用“scanf”函数和for循环按题目要求输入
第三步:使max,min初始值为0
第四步:再次运用for循环比较出最高价,最低价的书
第五步:按题目要求输出
(2)流程图:

2.实验代码

实验代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct book
{
  char name[31];
  double cost;
};
main()
{
  struct book s[10];
  int i,n;
  scanf("%d",&n);
  for(i=0;i<n;i++)
  { 
    scanf("\n");
     gets(s[i].name); 
     scanf("%lf",&s[i].cost);  
  }
  int max=0,min=0;
  for(i=1;i<n;i++)
   {
     if(s[i].cost>s[max].cost){max=i;}
     if(s[i].cost<s[min].cost){min=i;}
   }
   printf("%.2f, %s\n",s[max].cost,s[max].name);
   printf("%.2f, %s",s[min].cost,s[min].name);
   
}

3.本题调试过程碰到问题及解决办法:
在按要求输入时遇到问题,无法按题目要求输入,后通过询问同学,同学讲解后加gets成功

题目2.计算平均成绩

1.设计思路:
(1)主要描述思路算法
第一步:构建程序基本框架,定义结构体数组,学号,姓名,成绩
第二步:使平均值ave初始值为0
第三步:运用for循环和scanf函数按照题目要求实现输入
第四步:再次运用for循环计算出平均值,输出平均值
第五步:再次运用for循环将输入值,平均值做比较
第五步:按题目要求输出
(2)流程图

2.实验代码

实验代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student{
    char num[20];
    char name[20];
    double s;
 };
int main()
 {
    struct student s[100];
    int i,n;
    double ave=0;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%s %s %lf",&s[i].num,&s[i].name,&s[i].s);
     }
     for(i=0;i<n;i++)
     {
        ave= ave + s[i].s;
     }
     ave=ave/n;
     printf("%.2f\n",ave);
     for(i=0;i<n;i++)
     {
        if(s[i].s<ave)
        {
        printf("%s %s\n",s[i].name,s[i].num);
     }
}
     return 0;
 }

3.本题调试过程碰到问题及解决办法:
无,课堂上讲过类似题目所以相对简单
三.
学习总结和进度:
1.指针与结构作业中题目所使用的知识点:
(1)* 和++优先级相同
(2)结构体类型数据的定义方法和引用方法
(3)指针或指针变量能指向结构体数组及其元素
(4)在函数的参数中使用数组名与使用指向数组第一个元素的指针是同一个效果,等价,在函数的参数中使用数组名会方便理解某参数是指向某个元素起始地址的指针
2.git截图:



git地址:https://git.coding.net/Wrp1/Persistence0.git

猜你喜欢

转载自www.cnblogs.com/1wrp/p/8908459.html