第三次作业

题目1 查找书籍中最高价及最低价
1 设计思路
(1)主要描述题目算法。可以用文字描述(不允许使用伪代码),如:
第一步:定义结构体book,并且对成员分量名字name价格price进行定义。
第二步:定义结构体组a[10],指针p,max,min。

第三步:输入n表示有n本书,利用循环输入书名和价格。

第四步:在循环体中将每本书的价格与最大价格max.price和最小价格min.price比较,如果价格大于max.price就将p.price传给max.price,如果价格小于min就将p.price传给min.price。

第五步:输出最高价格的书名和价格,输出最小价格的书名和价格。
(2)流程图。

2.实验代码

#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include <math.h>  
  
int main()  
{  
    struct bookandprice  
    {  
        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;  
}  

2.设计思路
第一步:在结构体中定义字符型num数组,name数组和双精度型s。

第二步:在主函数中引用结构体并定义i,n,aver=0,输入n,利用for循环输入结构体num和name的值。

第三步:再定义一个for循环,进行累加。

第四步:使得aver=aver/n,然后输出aver。

第五步:在for循环中用if条件语句判断s[i].s<aver,然后输出name和num。

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

posted on 2018-04-22 21:25  梁永鑫  阅读(138)  评论(0编辑  收藏  举报

导航