第三次作业

p->str++中的++加向p中的字符指针str。

一、
第一题

#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);
   
}

第一步:先编译一个结构体,定义字符型name数组和双精度cost。
第二步:在主函数中引用,定义i和n,在循环语句中输入n,再输入name数组,最后输入花费的价格。
第三步:定义最大值和最小值都为零。再用一个循环,利用if条件句判断出最大值和最小值。
第四步:分别输出所要的答案。
错误信息:
错误原因:没有引用结构体里的信息
改正方法:在DEVC++中利用调试才发现的。

第二题:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student
{
    char num[20];
    char name[20];
    double s;
 };
int main()
 {
    struct student s[1000];
    int i,n;
    double aver=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++)
     {
        aver= aver + s[i].s;
     }
     aver=aver/n;
     printf("%.2f\n",aver);
     for(i=0;i<n;i++)
     {
        if(s[i].s<aver)
        {
        printf("%s %s\n",s[i].name,s[i].num);
     }
}
     return 0;
 }

第一步:在结构体中定义字符型num数组,name数组和双精度型s。
第二步:在主函数中引用结构体并定义i,n,aver=0,输入n,利用for循环输入结构体num和name的值。
第三步:再定义一个for循环,进行累加。
第四步:使得aver=aver/n,然后输出aver。
第五步:在for循环中用if条件语句判断s[i].s<aver,然后输出name和num。

学习进度总结:
指针与结构作业中题目所使用的知识点
1:定义指针时需要在前面加一个*,而且指针是用来指向一个变量的地址的。
2:结构体中,如果在主函数内引用结构体里面的内容,需要用该结构体的函数名加, 数组名。

1238691-20180422161549263-567398326.png
https://coding.net/u/wangzhiheng/p/pta/git/tree/master/?public=true

转载于:https://www.cnblogs.com/wangzhiheng/p/8907835.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值