| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 969 人关注过本帖
标题:我刚学,能给我看看那里错了吗?谢谢
只看楼主 加入收藏
chenhuips2
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-3-17
收藏
 问题点数:0 回复次数:11 
我刚学,能给我看看那里错了吗?谢谢
#include<stdio.h>
typedef struct
{ long num;
char name[20];
int score[2];
int total;
}stu;
stu student[100];
void main()
{ int N=0,H=0;stu *p;
void xzpx(stu*,int);
printf ("请输入本班人数");
scanf ("%d\n",&N);
printf ("学号 姓名 高数 英语 总分");
for (p=student;p<p+N;p++)
{ scanf ("%ld%s%d%d",&p->num,p->name,&p->score[0],&p->score[1]);
p->total=p->score[0]+p->score[1];
printf (" %d\n",p->total);
}
for (p=student;;)
{ printf ("请选择您要进行的操作:\n1:按总分高低排名。\n2:退出。\n");
scanf ("%d",&H);
if (H==2)break;
switch(H)
{case 1:xzpx(p,N);break;
default: ;
}
}
}
void xzpx(stu*p,int N)
{ int i,j; stu *t;
for (i=0;i<N-1;i++)
{ for (j=i+1;j<N;j++)
if ((p+i)->total<(p+j)->total)
{ t=student[i];student[i]=student[j];student[j]=t; }
}
printf ("学号 姓名 高数 英语 总分");
for (;p<p+N;p++)
printf ("%-4ld%-10s%-6d%-6d\n",p->num,p->name,p->score[0],p->score[1],p->total);
}

[此贴子已经被作者于2006-3-26 20:10:27编辑过]

搜索更多相关主题的帖子: total long include 
2006-03-26 18:46
毛深肉浅
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-3-26
收藏
得分:0 
我给你回答把,看对不对.
我阅读了下有两个错误:
1:scanf里面的格式都要加@.
2:第一个循环指针p已经指向了最后一个数组元素,所以在第二个循环以前必须给p赋初值.
2006-03-26 19:39
chenhuips2
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-3-17
收藏
得分:0 

谢谢帮我看
不过我觉得那两处都没错
p->name这里是不能加&的name是字符串数组
第二次循环前我在这已经初始过了
for (p=student;;)
{ printf ("请选择您要进行的操作:\n1:按总分高低排名。\n2:退出。\n");
scanf ("%d",&H);
switch(H)
{case 1:xzpx(p,N);continue;
default: break;
}
}


2006-03-26 20:00
未来的梦
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-3-23
收藏
得分:0 
scanf ("%d\n",&N);

QQ: 619969970.weilai.虽无飞,飞必冲天;虽无鸣,鸣必惊人;虽无想,想则必成。
2006-03-26 20:01
chenhuips2
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-3-17
收藏
得分:0 
我这里是错了^_^谢谢

2006-03-26 20:05
未来的梦
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-3-23
收藏
得分:0 
int i,j; stu *t;

QQ: 619969970.weilai.虽无飞,飞必冲天;虽无鸣,鸣必惊人;虽无想,想则必成。
2006-03-26 20:06
haishanglang
Rank: 1
等 级:新手上路
帖 子:378
专家分:0
注 册:2006-3-2
收藏
得分:0 

#include<stdio.h>
typedef struct
{ long num;
char name[20];
int score[2];
int total;
}stu;
stu student[100];


void xzpx(stu*p,int N)
{
int i,j;
int t;
printf ("学号 姓名 高数 英语 总分:\n");
for (i=0;i<N;i++)
{
for (j=i+1;j<N;j++)
if ((p+i)->total<(p+j)->total)
{ t=student[i].total;student[i].total=student[j].total;student[j].total=t; }
printf ("%-4ld %-10s%-6d%-6d%-6d\n",(p+i)->num,(p+i)->name,(p+i)->score[0],(p+i)->score[1],(p+i)->total);
}
}


void main()
{
int N=0,H=0,i;
stu *p;
printf ("请输入本班人数:\n");
scanf ("%d",&N);
printf ("学号 姓名 高数 英语:\n");
p=student;
for (i=0;i<N;i++)
{
scanf ("%ld%s%d%d",&p->num,p->name,&p->score[0],&p->score[1]);
printf ("总分:\n");
p->total=p->score[0]+p->score[1];
printf (" %d\n",p->total);
p+=1;
}
for (p=student;;)
{
printf ("请选择您要进行的操作:\n1:按总分高低排名。\n2:退出。\n");
scanf ("%d",&H);
switch(H)
{
case 1:xzpx(p,N);continue;
default: exit(0);
}
}
}


请楼主运行检验,我运行成功了


2006-03-26 20:06
未来的梦
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-3-23
收藏
得分:0 

modify stu t


QQ: 619969970.weilai.虽无飞,飞必冲天;虽无鸣,鸣必惊人;虽无想,想则必成。
2006-03-26 20:07
chenhuips2
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-3-17
收藏
得分:0 
太感激7楼朋友拉
帮我改进了一下好用多拉


2006-03-26 20:20
chenhuips2
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-3-17
收藏
得分:0 

刚发现7楼的朋友这里帮我该错了
{ t=student[i].total;student[i].total=student[j].total;student[j].total=t; }

我要交换的是{ t=student[i];student[i]=student[j];student[j]=t;}
呵呵


2006-03-26 20:29
快速回复:我刚学,能给我看看那里错了吗?谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026450 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved