当前位置: 代码迷 >> C语言 >> [求助]请问这题错在哪里
  详细解决方案

[求助]请问这题错在哪里

热度:153   发布时间:2006-03-12 02:22:00.0
[求助]请问这题错在哪里
struct student
{int number;
char name[10];
float score;
}stu[4];
main()
{int i,x;
float max,y;
char *z;
for(i=0;i<4;i++)
scanf("%d%s%f",&stu[i].number,&stu[i].name,&stu[i].score);
for(max=stu[0].score,i=1;i<4;i++)
if(max<stu[i].score)
max=stu[i].score;
x=stu[i].number;
y=stu[i].score;
z=stu[i].name
printf("\n the maximumscore:\n")
printf("no:%d\nname:%s\nscore:%4.1f\n",x,z,y);
}请问错在哪里啊
编译提示信息是:statement missing :in function main
谁能帮我解释一下吗
----------------解决方案--------------------------------------------------------

#include <stdio.h>
struct student
{
int number;
char name[10];
float score;
}stu[4];

void main()
{
int i,x,max;
float y;

scanf("%f",&y);
printf("please input:\n");
for(i=0;i<4;i++)
scanf("%d%s%f",&stu[i].number,stu[i].name,&stu[i].score);

for(max=stu[0].score,i=1;i<4;i++)
if(max<stu[i].score)
{
max=stu[i].score;
x=i;
}
printf("\nThe maxmumscore:\n") ;
printf("no:%d\nname:%s\nscore:%4.1f\n",stu[x].number,stu[x].name,stu[x].score);
getch();
}

楼主对照下,基本是按你的思路写的


----------------解决方案--------------------------------------------------------
以下是引用djgdq555在2006-3-12 2:22:00的发言:
struct student
{int number;
char name[10];
float score;
}stu[4];
main()
{int i,x;
float max,y;
char *z;
scanf("%f",&y); /*告诉编译器连接浮点库*/
for(i=0;i<4;i++)
scanf("%d%s%f",&stu[i].number,&stu[i].name,&stu[i].score);
for(max=stu[0].score,i=1;i<4;i++)
if(max<stu[i].score)
{ max=stu[i].score;
x=stu[i].number;
y=stu[i].score;
z=stu[i].name;}
printf("\n the maximumscore:\n");
printf("no:%d\nname:%s\nscore:%4.1f\n",x,z,y);
}请问错在哪里啊
编译提示信息是:statement missing :in function main
谁能帮我解释一下吗

你自己的 别写那么乱了


----------------解决方案--------------------------------------------------------
scanf("%d%s%f",&stu[i].number,&stu[i].name,&stu[i].score);

中stu[i].name 前那个& 也要去掉~~
----------------解决方案--------------------------------------------------------

非常感谢你的指导


----------------解决方案--------------------------------------------------------

怎么我按你的做一遍但还是有错啊
我是一个刚学C 的有些地方不能理解,能讲仔细点吗


----------------解决方案--------------------------------------------------------

struct student
{int number;
char name[10];
float score;
}stu[4];
main()
{int i,x,k;
float max,y;
char *z;
for(i=0;i<4;i++)
{
printf("Input the %d student's number,name and score:\n",i+1);
scanf("%d%s%f",&stu[i].number,&stu[i].name,&stu[i].score);
}
for(max=stu[0].score,i=1;i<4;i++)
if(max<stu[i].score)
max=stu[i].score;

for(i=0;i<4;i++)
if(max==stu[i].score) k=i; //k记录最高分对应的序号
x=stu[k].number;
y=stu[k].score;
z=stu[k].name;

printf("\n the maximumscore:\n");
printf("no:%d\nname:%s\nscore:%4.1f\n",x,z,y);


}


这个程序也能实现楼主的要求


----------------解决方案--------------------------------------------------------
以下是引用feng1256在2006-3-12 2:38:00的发言:

你自己的 别写那么乱了

struct student
{int number;
char name[10];
float score;
}stu[4];
main()
{int i,x;
float max,y;
char *z;
scanf("%f",&y); /*告诉编译器连接浮点库*/
for(i=0;i<4;i++)
scanf("%d%s%f",&stu[i].number,&stu[i].name,&stu[i].score);
for(max=stu[0].score,i=1;i<4;i++)
if(max<stu[i].score)
{ max=stu[i].score;
x=stu[i].number;
y=stu[i].score;
z=stu[i].name;}
printf("\n the maximumscore:\n");
printf("no:%d\nname:%s\nscore:%4.1f\n",x,z,y);
楼上的修正很到位,在最后一行中的printf中,z是个指针,代表的是字符串的首地址,用的是串式轮输出,而不能用*z,它代表的是一个字符;


----------------解决方案--------------------------------------------------------
  相关解决方案