c语言函数返回数组
答案:4 悬赏:0 手机版
解决时间 2021-11-07 18:20
- 提问者网友:原来太熟悉了会陌生
- 2021-11-07 03:16
c语言函数返回数组
最佳答案
- 五星知识达人网友:毛毛
- 2021-11-07 03:41
你好!
将函数采用指针的形式返回平均值
注意看后面的注释
#include
int main()
{
float *student_aver(float array[3][3]); // 改成指针的形式输出
float score[3][3];
float *a;
int i,j;
printf("请输入学生各科的成绩:");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%f",&score[i][j]);
printf("每个学生的平均成绩分别为:");
a=student_aver(score); // 指针 a 接收函数的返回值
for(i=0;i<3;i++) // 打印出平均值
printf("%.2f ",a[i]);
return 0;
}
float *student_aver(float array[3][3]) // 改成指针的形式输出
{
int i,j;
float sum,a[3];
for(i=0;i<3;i++)
{
sum=0;
for(j=0;j<3;j++)
sum=sum+array[i][j];
a[i]=sum/3;
}
return a; // 输出数组 a
}
将函数采用指针的形式返回平均值
注意看后面的注释
#include
int main()
{
float *student_aver(float array[3][3]); // 改成指针的形式输出
float score[3][3];
float *a;
int i,j;
printf("请输入学生各科的成绩:");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%f",&score[i][j]);
printf("每个学生的平均成绩分别为:");
a=student_aver(score); // 指针 a 接收函数的返回值
for(i=0;i<3;i++) // 打印出平均值
printf("%.2f ",a[i]);
return 0;
}
float *student_aver(float array[3][3]) // 改成指针的形式输出
{
int i,j;
float sum,a[3];
for(i=0;i<3;i++)
{
sum=0;
for(j=0;j<3;j++)
sum=sum+array[i][j];
a[i]=sum/3;
}
return a; // 输出数组 a
}
全部回答
- 1楼网友:舍身薄凉客
- 2021-11-07 05:24
函数是无法返回数组的,只能返回指针,但返回指针的弊端是指针指向的内存不能是函数的局部变量的。所以还得用传出参数,有两个办法,一是直接用一个array就搞定,另它的每一行的最后一列是计算出来的平均值;另一个方法就是再传入进去一个指针,返回平均数。第一种可以不修改当前接口直接改,但如果无所谓还是第二种比较好,代码如下:
void student_aver(float array[3][3], float average[3]) {int i, j;
float sum;
for (i = 0; i < 3; i++) {
sum = 0;
for(j=0;j<3;j++)
sum=sum+array[i][j];
average[i] = sum/3;
}
}
- 2楼网友:猎心人
- 2021-11-07 04:52
方法有不少,这里给出两种:
把需要返回结果的数组作为一个参数传入,函数在运算过程中填写这个数组的各个项的值,函数执行完后这个数组中的内容就是需要的内容了,这是第一种做法。
把需要返回的数组malloc出来,返回后再试用完成后再free
第一种
#includeint main()
{
void student_aver(float score[3][3], float averge[3]);
float score[3][3];
float average[3];
int i,j;
printf("请输入学生各科的成绩:");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%f",&score[i][j]);
printf("每个学生的平均成绩分别为:");
student_aver(score, average);
for(i=0;i<3;i++)
printf("%.2f ",average[i]);
return 0;
}
void student_aver(float score[3][3], float average[3])
{
int i,j;
float sum;
for(i=0;i<3;i++)
{
sum=0;
for(j=0;j<3;j++)
sum=sum+score[i][j];
average[i]=sum/3;
}
}
第二种:
#include#include
int main()
{
float* student_aver(float score[3][3]);
float score[3][3];
float *average;
int i,j;
printf("请输入学生各科的成绩:");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%f",&score[i][j]);
printf("每个学生的平均成绩分别为:");
average = student_aver(score);
for(i=0;i<3;i++)
printf("%.2f ",average[i]);
free(average);
return 0;
}
float* student_aver(float score[3][3])
{
float *average = (float*)malloc(sizeof(float) * 3);
int i,j;
float sum;
for(i=0;i<3;i++)
{
sum=0;
for(j=0;j<3;j++)
sum=sum+score[i][j];
average[i]=sum/3;
}
return average;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯