首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于函数的调用和数组解决思路

2012-03-09 
关于函数的调用和数组输入格式:科目1科目2科目3科目4科目5学生一学生二学生三输出格式:科目1科目2科目3科

关于函数的调用和数组
输入格式:
              科目1     科目2     科目3   科目4     科目5  
学生一  
学生二
学生三

输出格式:
                    科目1     科目2     科目3   科目4     科目5       个人平均分
    学生一  
    学生二
    学生三
科目平均分

题目要求必须通过编辑enter函数输入数据,通过aver函数执行平均值运算,通过outarray函数输出数据。
下面是我的程序,各位大虾帮忙给我不明白的地方改善讲解一下就ok了。
谢谢。
#include   <stdio.h>
float   enter()
{
float   score[3][5];
int   i,j;
      printf( "please   enter   your   students '   score   by   3*5   :   \n ");
            for(i=0;i <3;i++)
    for(j=0;j <5;j++)
        scanf( "%f ",&score[i][j]);
}
float   aver(float   average[4][6])       /*问题1,这里的float可否省略?   */
{
    float   sum=0,sum1=0;
    int   i,j;
    for(i=0;i <3;i++)
          {
            for(j=0;j <5;j++)
sum+=average[i][j];
average[i][5]=sum/5;
          }
    for(j=0;j <5;j++)
          {
            for(i=0;i <3;i++)
sum1+=average[i][j];
average[3][j]=sum1/3;
          }
}
void   outarray(float   average[4][6])
{
int   i=0,j=0;
  for(i=0;i <3;i++)
      for(j=0;j <5;j++)
        scanf( "%f ",&average[i][j]);
  printf( "%3.1f ",average[i][j]);
    /*问题2,关于数组输出的问题,这段都可以怎么写?*/
}
main()
{
outarray(aver(enter()));
/*问题3,主函数里面如何将enter函数读入的数据调用到其他函数?
  问题4,之前定义的函数为void和int或float在主函数中调用有什么分别*/

}
问题5,老师提到过tc2.0存在数组读入float型数据会出错,可是我没遇到什么问题,各位大虾,tc2,0真的存在这个bug吗?
    小弟初识函数和数组,有一些困惑之处,希望各位大虾不吝赐教,上面的程序错误之处还需各位批评指正。

[解决办法]
1,不可以。
2,数组下标好像有问题。。。
3,存放到全局变量中,别的函数就可以访问它们了。或者,函数返回了需要的数值。
4,函数返回值,不需要返回值就是void,需要的话就必须返回需要的int或者float等的数值。。。
5,没听说过。。。
[解决办法]
建议认真阅读书上的有关章节,学习主要还是在自己。。。
明白了基本概念,就明白了这些问题了。 。。
[解决办法]
/*问题1,这里的float可否省略? */不可以,定义形参
/*问题2,关于数组输出的问题,这段都可以怎么写?*///没问题,可以这样写
float aver(float average[4][6])
float enter()
上面两个函数都有问题,是同一个问题,定义返回值为float,在函数里面却没有返回值

/*问题3,主函数里面如何将enter函数读入的数据调用到其他函数?
enter需要返回值,如果你要传递数组的话,你的返回数组的地址,
这样定义  float * enter();函数基础问题很大,建议你看看书
问题4,之前定义的函数为void和int或float在主函数中调用有什么分别*/
void不带返回值,int,float带返回值.
问题5,老师提到过tc2.0存在数组读入float型数据会出错,可是我没遇到什么问题,各位大虾,tc2,0真的存在这个bug吗?
 没遇到过


[解决办法]
void outarray(float average[4][6])
{
int i=0,j=0;
for(i=0;i <3;i++)
for(j=0;j <5;j++)
scanf( "%f ",&average[i][j]);
printf( "%3.1f ",average[i][j]);
/*问题2,关于数组输出的问题,这段都可以怎么写?*/
}
--------------------------
这里有问题:printf是运行在两个for都循环结束后,
此时i,j已经越界

热点排行