C语言习题有一题不是太清楚,求高手指教,谢谢!
题目:编写程序,从键盘输入10本书的名称和定价并存入结构数组中,从中查找定价最高和最低的书的名称和定价,并输出。源程序:#include<stdio.h>#defineN...
题目:编写程序,从键盘输入10本书的名称和定价并存入结构数组中,从中查找定价最高和最低的书的名称和定价,并输出。
源程序:
#include<stdio.h>
#define NUMBER 10
struct book{
char name;
double price;
};
int main(void)
{
int i,index,temp,k;
struct book s[NUMBER];
for(i=0;i<NUMBER;i++)
{
printf("Enter %d message:",i+1);
scanf("%s%lf",s[i].name,&s[i].price);
}
for(k=0;k<9;K++)
{
index=k;
for(i=k+1;i<NUMBER;i++)
{
if(s[index].price<s[i].price)
{
index=i;
}
}
temp=s[index];
s[index]=s[k];
s[k]=temp;
}
printf("max1 name:%s price:%d\n",s[0].name,s[0].price);
printf("min1 name:%s price:%d\n",s[9].name,s[9].price);
return 0;
}
编译报错为:
c:\documents and settings\administrator\桌面\rtyu.c(17) : error C2065: 'K' : undeclared identifier
c:\documents and settings\administrator\桌面\rtyu.c(27) : error C2115: '=' : incompatible types
c:\documents and settings\administrator\桌面\rtyu.c(29) : error C2115: '=' : incompatible types
确实不知道那里出错了,请指教 展开
源程序:
#include<stdio.h>
#define NUMBER 10
struct book{
char name;
double price;
};
int main(void)
{
int i,index,temp,k;
struct book s[NUMBER];
for(i=0;i<NUMBER;i++)
{
printf("Enter %d message:",i+1);
scanf("%s%lf",s[i].name,&s[i].price);
}
for(k=0;k<9;K++)
{
index=k;
for(i=k+1;i<NUMBER;i++)
{
if(s[index].price<s[i].price)
{
index=i;
}
}
temp=s[index];
s[index]=s[k];
s[k]=temp;
}
printf("max1 name:%s price:%d\n",s[0].name,s[0].price);
printf("min1 name:%s price:%d\n",s[9].name,s[9].price);
return 0;
}
编译报错为:
c:\documents and settings\administrator\桌面\rtyu.c(17) : error C2065: 'K' : undeclared identifier
c:\documents and settings\administrator\桌面\rtyu.c(27) : error C2115: '=' : incompatible types
c:\documents and settings\administrator\桌面\rtyu.c(29) : error C2115: '=' : incompatible types
确实不知道那里出错了,请指教 展开
2个回答
展开全部
#include<stdio.h>
#define NUMBER 10
struct book{
char name;
double price;
};
int main(void)
{
int i,index,k;double temp;// k前面的是中文逗号 temp要定义成double类型
struct book s[NUMBER];
for(i=0;i<NUMBER;i++)
{
printf("Enter %d message:",i+1);
scanf("%s%lf",s[i].name,&s[i].price);
}
for(k=0;k<9;k++) // 最后一个k 大写了
{
index=k;
for(i=k+1;i<NUMBER;i++)
{
if(s[index].price<s[i].price)
{
index=i;
}
}
temp=s[index].price; //缺了price
s[index].price=s[k].price;
s[k].price=temp;
}
printf("max1 name:%s price:%d\n",s[0].name,s[0].price);
printf("min1 name:%s price:%d\n",s[9].name,s[9].price);
return 0;
}
追问
我将temp定义成struct book temp可以吗?若按照你做的那样,就只改变了price,但是name并没有交换,所以输出的结果没法对应起来啊!
追答
结构体之间只要类型相同可以赋值交换
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |