一道这样的C语言题目,请问应该怎样改才正确,编译错误。
#include<stdio.h>
struct books
{
char name[30];
double price;
};
int max(double x[])
{
int i,j,max;
max=x[0];
for(i=0,j=0;i<3;i++)
{
if(x[i]>max) j=i;
}
return j;
}
int min(double x[])
{
int i,j,min;
min=x[0];
for(i=0,j=0;i<3;i++)
{
if(x[i]<min) j=i;
}
return j;
}
int main()
{
struct books b[3];
int i;
for(i=0;i<3;i++)
{
scanf("%f",&b[i].price);
gets(b[i].name);
}
printf("%f, ",b[max(b.price,3)].price);
puts(b[max(b.price,3)].name);
printf("\n");
printf("%f, ",b[min(b.price,3)].price);
puts(b[min(b.price,3)].name);
return 0;
}
int max(books x[], int n)
{
int i,j;
for(i=0,j=0;i<n;i++) //这里不一定是3,应该传入n
{
if(x[i].price>x[j].price) j=i;
}
return j;
}
min的改法类似
scanf("%f",&b[i].price);
->
scanf("%lf",&b[i].price);
因为你是double
下面类似
#include "stdafx.h"
#include
#define N
struct books
{
char name[30];
double price;
};
int max(struct books x[],int n)
{
int i,j,max;
max=x[0].price;
for(i=0,j=0;i {
if(x[i].price>max) j=i;
}
return j;
}
int min(struct books x[],int n)
{
int i,j,min;
min=x[0].price;
for(i=0,j=0;i<n;i++)
{
if(x[i].price<min) j=i;
}
return j;
}
int main()
{
struct books b[20];
int i;
int n;
printf("input n:");
scanf("%d",&n);
for(i=0;i<n;i++)
{ printf(" input price %d: ",i);
scanf("%lf",&b[i].price);
printf("\n input name %d: ",i);
scanf("%s",b[i].name);
printf("%f,%s\n",b[i].price,b[i].name);
}
getchar();
int minp=min(b,n);
int maxp=max(b,n);
printf("max: %f,%s\n",b[maxp].price,b[maxp].name);
printf("min: %f,%s\n",b[minp].price,b[minp].name);
getchar();
return 0;
}
这样完整的写一下,就可以了