| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 703 人关注过本帖
标题:请大家帮我改一下这个程序 似乎是fun函数错了
只看楼主 加入收藏
风——等待
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2011-6-27
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:10 
请大家帮我改一下这个程序 似乎是fun函数错了
利用结构体的指针形式来求数组的最大值(求结构体中s的最大值)
似乎是fun函数错了
#include <stdio.h>
#include <string.h>
#define N 10
typedef struct ss
{ char num[10];
int s;
} STU;
void fun(STU a[],STU *s)
{
int temp;
s=temp;
temp=a;
for(;temp<a+10;temp++)
if(a[temp].s>a[temp+1].s)
return a[temp+1].s;
else return a[temp].s;
}
main ( )
{ STU a[N]={ {"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},
{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71} }, m;
int i;
printf("***** The original data *****\n");
for (i=0;i<N;i++)printf("No=%s Mark =%d\n",a[i].num,a[i].s);
fun (a,&m );
printf ("***** THE RESULT *****\n");
printf ("The lowest:%s,%d\n",m.num,m.s);
}
搜索更多相关主题的帖子: void include return 结构体 
2011-06-27 13:59
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
void可以有返回值吗?
2011-06-27 14:22
风——等待
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2011-6-27
收藏
得分:0 
回复 2楼 hjywyj
我把程序这样改了一下  但是还是有错  请你帮我看看
#include <stdio.h>
#include <string.h>
#define N 10
typedef struct ss
{ char num[10];
int s;
} STU;
void fun(STU a[],STU *s)
{
int i,*min;
for(i=1;i<10;i++)
if(a[i].s >a[i+1].s) *min=a[i+1].s;
}
main ( )
{ STU a[N]={ {"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},
{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71} }, m;
int i;
printf("***** The original data *****\n");
for (i=0;i<N;i++)printf("No=%s Mark =%d\n",a[i].num,a[i].s);
fun (a,&m );
printf ("***** THE RESULT *****\n");
printf ("The lowest:%s,%d\n",m.num,m.s);
}
2011-06-27 14:36
风——等待
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2011-6-27
收藏
得分:0 
回复 2楼 hjywyj
我把程序这样改了一下  但是还是有错  请你帮我看看
#include <stdio.h>
#include <string.h>
#define N 10
typedef struct ss
{ char num[10];
int s;
} STU;
void fun(STU a[],STU *s)
{
int i,*min;
for(i=1;i<10;i++)
if(a[i].s >a[i+1].s) *min=a[i+1].s;
}
main ( )
{ STU a[N]={ {"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},
{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71} }, m;
int i;
printf("***** The original data *****\n");
for (i=0;i<N;i++)printf("No=%s Mark =%d\n",a[i].num,a[i].s);
fun (a,&m );
printf ("***** THE RESULT *****\n");
printf ("The lowest:%s,%d\n",m.num,m.s);
}
2011-06-27 14:36
Pirelo
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:118
专家分:550
注 册:2011-1-28
收藏
得分:0 
O(∩_∩)O~楼主挺悲催的,人家说的是main函数的返回类型
还有int i,*min;
min你初始化了吗?
2011-06-27 14:51
whqjjqqpp
Rank: 2
等 级:论坛游民
帖 子:5
专家分:14
注 册:2007-7-5
收藏
得分:0 
fun (a,&m ) 虽然写了对m的地址进行了操作,可是函数
void fun(STU a[],STU *s)
{
int i,*min;
for(i=1;i<10;i++)
if(a[i].s >a[i+1].s) *min=a[i+1].s;
}
中,并没有使用s参数,printf ("The lowest:%s,%d\n",m.num,m.s)中访问m,而m却没有赋值,里面的数据是随机的。
2011-06-27 14:59
whqjjqqpp
Rank: 2
等 级:论坛游民
帖 子:5
专家分:14
注 册:2007-7-5
收藏
得分:0 
void fun(STU a[],STU *s)
{
int i,min=0;

for(i=1;i<N;i++)//为防止溢出,统一用宏定义
{
 min = (a[min].s > a[i].s)?i:min;//找到最小的元素的下标
}
s=&a[min];//或者s->s=a[min].s;strcpy(s->num,a[min].num);
}
随便写写,没测试过,呵呵
2011-06-27 15:15
风——等待
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2011-6-27
收藏
得分:0 
回复 7楼 whqjjqqpp
严重错误
2011-06-27 15:17
whqjjqqpp
Rank: 2
等 级:论坛游民
帖 子:5
专家分:14
注 册:2007-7-5
收藏
得分:10 
s=&a[min];不行,s->s=a[min].s;strcpy(s->num,a[min].num);可得到结果
***** THE RESULT *****
The lowest:A08,61
2011-06-27 15:18
风——等待
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2011-6-27
收藏
得分:0 
回复 9楼 whqjjqqpp
好的  谢谢哈
2011-06-27 15:26
快速回复:请大家帮我改一下这个程序 似乎是fun函数错了
数据加载中...
 
   



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

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