要求,求出basic数组两个数相加,求出最小的,然后输出,,为什么我老是输出编号是乱码,最小值是0.00,,
struct
{ int number;
char name[10];
float basic[2];
}s[10]={{1,”zhao”,{90.00,98.00}},{2,”qian”,{95.00,92.00}},
{3,”sun”,{78.00,80.00}},{4,”li”,{72.00,64.00}}},*p;
main()
{ int i;
float c,x;
p=s;
c=0l;
for(i=0;i<4;i++)
x=s[i].basic[0]+s[i].basic[1];
if (c>x) {c=x; p=&s[i];}
printf(“%c,%.2f”,p->name,c);
getch();
}
>> 本文固定链接: http://www.vcgood.com/archives/2966
主函数修改如下:
main()
{ int i;
float c,x;
clrscr();
p=s;
c=s[0].basic[0]+s[0].basic[1]; //这里给 c 初值,原来的程序中 c 的值比赋值之后的 x 要小,所以下面的 if 语句不执行
for(i=1;i<4;i++)
{ x=s[i].basic[0]+s[i].basic[1]; //这里加上大括号,否则 if 语句不在循环里执行
if (c>x) {c=x; p=&s[i];} }
printf(“%s,%.2f”,p->name,c);
getch();
}
改过之后程序就能正确输出了。
呵呵~~
谢谢呀,,,我理解了,,原来我在那一步出错了