第三次作业
题目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");
}