第三次作业

一要求:

2 课上疑点:讨论查阅分析 struct sk{int a; char str)}p; p->str++ 中的++ 加向________?
答:加向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];
    int score;
        
}s[1000],*p;
int main(){
    int N;
    int i=0,count;
    scanf("%d",&N);
    for(i=0;i<N;i++){
    scanf("%s %s %d",&s[i].num,s[i].name,&s[i].score);
    }
    int sum;
    for(i=0;i<N;i++){
        sum=sum+s[i].score;
    }
    float ave;
    ave=sum/N;
    printf("%.2f\n",ave);
    for(i=0;i<N;i++){
        if(s[i].score<ave)
        printf("%s %s\n",s[i].name,s[i].num);
    }
system("pause");
}

设计思路:

第一步:填写基本结构,基础函数。

第二步:对平均数赋初值,并输入人的个数以及对应的学号,姓名,成绩,并把每一个学生的成绩累加。

第三步:利用循环结构相加。

第四步:输出结果。

三要求:

1、指针与结构作业中题目所使用的知识点。
2.结构体的正确使用和输出定义的变量。
3.使用指针可以代替类似&s[i]的输入,在用到p->时,有明确的分层指向时,不必要写出两个界限,就如结构二中的题目一样。

4:定义指针时需要在前面加一个*,而且指针是用来指向一个变量的地址的。

5:结构体中,如果在主函数内引用结构体里面的内容,需要用该结构体的函数名加, 数组名。

 

posted @ 2018-04-23 21:03  亦蝉1  阅读(152)  评论(0编辑  收藏  举报