| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 832 人关注过本帖
标题:关于函数值传递问题
只看楼主 加入收藏
陈威
Rank: 1
等 级:新手上路
帖 子:114
专家分:0
注 册:2009-10-18
结帖率:95%
收藏
 问题点数:0 回复次数:6 
关于函数值传递问题
#include "stdio.h"
#include "conio.h"
#define N 2

struct student
{char num[6];
 char name[8];
 int score[3];
}stu[N];
void input()
{int i,j;
 for(i=0;i<N;i++)
 {printf("student%d:\n",i+1);
  printf("Input num:");
  scanf("%s",&stu[i].num);
  printf("Input name:");
  scanf("%s",&stu[i].name);
  for(j=0;j<3;j++)
  {printf("input score%d:",j+1);
   scanf("%d",&stu[i].score[j]);
  }
 }
}
void aver1(struct student stu[N])
{int i,j;
float *average1[3],sum[3]={0};
 for(j=0;j<3;j++)
 {
 for(i=0;i<N;i++)
 {sum[j]=sum[j]+stu[i].score[j];}
 *average1[j]=sum[j]/N;                           ||我要将该函数中计算出来的均值,传递到print函数中使用,该怎么实现啊?
}
}
void print(struct student stu[N])
{int i;
aver1(stu);
printf("\nNO.   name   score1   score2   score3\n");
for(i=0;i<N;i++)
{printf("%3s%5s%8d%8d%8d\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);}
 printf("average:%10f%8f%8f",*average1[0],*average1[1],*average1[2]);            ||用指针,这样写可以吗
}
main()
{input();
 aver1(stu);
 print(stu);
    getch();
}
搜索更多相关主题的帖子: 函数 
2010-02-01 12:13
windflyer
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-10-17
收藏
得分:0 
你这样肯定不行
可以用全局变量在函数之间传递值
2010-02-01 14:00
tonysf
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-1-31
收藏
得分:0 
陈威大侠,

    你好!我是c语言新手,最近用钟家明的c语言学习实验集成系统2010版打开一个mp3文件,用了下面的程序,老是报告说文件无法打开!出现 c4013 和c4101两个警告。这两个程序用钟家明以前老版本学习系统都通过了的,不知是我新购买新版本有问题,还是我的程序有问题,发了两封电邮请教钟家明老师,也没有得到回信,请各位大侠不吝帮助,在下谢谢了。我打开二进制文件读写目的是希望把英语的一个mp3 文件分成几个更短的mp3 文件,以前我完成过,这次却无法打开二进制文件。以前的程序又丢失了。
我又用了Editplus 编译器,也说打不开二进制文件。
   
下面是源程序
#include "stdio.h"
main()

    {FILE *in, *out;
        
   
   char ch,infile[20],outfile[20];
   
   printf(" Enter the infile name:\n");
   scanf("%s", infile);
   
   
   printf(" Enter the outfile name:\n");
   scanf("%s", outfile);
   
   if ((in=fopen(infile,"rb"))==NULL)
     {printf("cannot open infile\n");
         exit(0);
     }
   if ((out=fopen(outfile,"wb"))==NULL)
     {printf(" cannot open outfile\n");
         exit(0);
     }
     while (!feof(in)) fputc(fgetc(in),out);
     fclose(in);
     fclose(out);
     
}
2010-02-01 15:08
tianheile
Rank: 2
等 级:论坛游民
帖 子:5
专家分:25
注 册:2010-2-1
收藏
得分:0 
float *average1[3],是在自定义函数中定义的   ,所以当程序每次调用完该函数后,就会将刚才的float *average1[3 所用的地址内存释放,也就是说它属于局部变量,你应该将它定义为全局变量
2010-02-01 20:32
xinjinlong
Rank: 3Rank: 3
来 自:河南南阳
等 级:论坛游侠
帖 子:61
专家分:117
注 册:2010-1-19
收藏
得分:0 
一:你可以采用上面方法使用全局变量
二:你可以在传递的时候多一个参数就可以了,是数组用的都是同样的空间没有问题的
例如你可以这样:void aver1(struct student stu[N],float *average1[3])
2010-02-01 21:10
tonysf
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-1-31
收藏
得分:0 
对新手的求助如此冷漠,让人寒心!
2010-02-04 12:03
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
c4013 和 c4101 两个警告的说的内容是什么?
还有你如果有问题,应该自己发一个帖子。这样看的人多,而且回答也是针对你的。你在这发不太合适。
你如果要做这种专用的工作,应该考虑使用专用的软件。另外,如果你想知道为什么打不开,可能把那两个 printf 换成 perror ,它可以输出打不开文件的更具体的原因。
2010-02-04 13:08
快速回复:关于函数值传递问题
数据加载中...
 
   



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

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