2008
12-19

要求,求出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();
}


一个小问题》有 2 条评论

  1. whos 说:

    主函数修改如下:

    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();
    }

    改过之后程序就能正确输出了。

    呵呵~~

  2. w19800605 说:

    谢谢呀,,,我理解了,,原来我在那一步出错了

留下一个回复