C语言数组怎么返回自定义函数 5
.使用指针来添加两个矩阵和向所得矩阵返回到调用函数写功能。#include"stdio.h"voidmain(){int*fun(int*p,int*k);inta[50...
.使用指针来添加两个矩阵和向所得矩阵返回到调用函数写功能。
#include "stdio.h"
void main()
{int *fun(int *p,int *k);
int a[50][50]={0};
int b[50][50]={0};
int c[50][50]={0};
int i,j,n,*p,*k;
printf("n=?\n");
scanf("%d",&n);
printf("enter a and b\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&b[i][j]);
p=&a[0][0];
k=&b[0][0];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
c[i][j]=*fun(p,k);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
printf("%5d",c[i][j]);
}
int *fun(int *p,int *k)
{
int i,j,n;
int c[50][50]={0};
printf("n=?\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
c[i][j]=(*(p+i)+j)+(*(k+i)+j);
return(c[i][j]);
}
}
}
这个程序不正确,怎么修改。或者哪位大哥亲自写一下正确程序。
讲解时最好举个实例 展开
#include "stdio.h"
void main()
{int *fun(int *p,int *k);
int a[50][50]={0};
int b[50][50]={0};
int c[50][50]={0};
int i,j,n,*p,*k;
printf("n=?\n");
scanf("%d",&n);
printf("enter a and b\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&b[i][j]);
p=&a[0][0];
k=&b[0][0];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
c[i][j]=*fun(p,k);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
printf("%5d",c[i][j]);
}
int *fun(int *p,int *k)
{
int i,j,n;
int c[50][50]={0};
printf("n=?\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
c[i][j]=(*(p+i)+j)+(*(k+i)+j);
return(c[i][j]);
}
}
}
这个程序不正确,怎么修改。或者哪位大哥亲自写一下正确程序。
讲解时最好举个实例 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏5(财富值+成长值)
2个回答
展开全部
//一、由函数参数带回固定的二维数组
void func(int ppout[][2])
{
ppout[0][0] = 1;
ppout[0][1] = 2;
ppout[1][0] = 3;
ppout[1][1] = 4;
}
int _tmain(int argc, _TCHAR* argv[])
{
int pp[2][2];
func(pp);
cout << pp[0][0] << pp[0][1] << endl;
cout << pp[1][0] << pp[1][1] << endl;
system("pause"); //让窗口暂停,便于看结果
return 0;
}
//二、由函数参数带回动态二维数组
void func(int** pp, int rows, int columns)
{
int i, j;
for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
{
pp[i][j] = (i + 1) * 10 + j + 1;
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int rows = 3, columns = 2;
int** pp;
int i, j;
//申请内存
pp = new int*[rows];
for (j = 0; j < rows; j++)
pp[j] = new int[columns];
func(pp, rows, columns);
for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
{
cout << pp[i][j] << " ";
}
cout << endl;
}
//释放内存
for (j = 0; j < rows; j++)
delete[] pp[j];
delete[] pp;
system("pause"); //让窗口暂停,便于看结果
return 0;
}
//如果非要从函数的返回值中带回二维数组,这是最好的方式
//三、由函数带回动态二维数组
int** func(int rows, int columns)
{
int i, j;
int** pp;
//申请内存
pp = new int*[rows];
for (j = 0; j < rows; j++)
pp[j] = new int[columns];
for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
{
pp[i][j] = (i + 1) * 10 + j + 1;
}
}
return pp;
}
int _tmain(int argc, _TCHAR* argv[])
{
int rows = 3, columns = 2;
int** pp;
int i, j;
pp = func(rows, columns);
for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
{
cout << pp[i][j] << " ";
}
cout << endl;
}
//释放内存
for (j = 0; j < rows; j++)
delete[] pp[j];
delete[] pp;
system("pause"); //让窗口暂停,便于看结果
return 0;
}
//四、由函数带回二维数组
//这种方式有问题,程序中已经说明,不要采取此方式
const int rows = 3, columns = 2;
int (*func())[columns]
{
int i, j;
static int pp[rows][columns]; //如果不是静态的,函数退出后其内存就变得无效。
for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
{
pp[i][j] = (i + 1) * 10 + j + 1;
}
}
return pp;
}
int _tmain(int argc, _TCHAR* argv[])
{
int (*pp)[columns];
int i, j;
//pp = new (int[columns]*)[rows];
pp = func();
for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
{
cout << pp[i][j] << " ";
}
cout << endl;
}
system("pause"); //让窗口暂停,便于看结果
return 0;
}
void func(int ppout[][2])
{
ppout[0][0] = 1;
ppout[0][1] = 2;
ppout[1][0] = 3;
ppout[1][1] = 4;
}
int _tmain(int argc, _TCHAR* argv[])
{
int pp[2][2];
func(pp);
cout << pp[0][0] << pp[0][1] << endl;
cout << pp[1][0] << pp[1][1] << endl;
system("pause"); //让窗口暂停,便于看结果
return 0;
}
//二、由函数参数带回动态二维数组
void func(int** pp, int rows, int columns)
{
int i, j;
for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
{
pp[i][j] = (i + 1) * 10 + j + 1;
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int rows = 3, columns = 2;
int** pp;
int i, j;
//申请内存
pp = new int*[rows];
for (j = 0; j < rows; j++)
pp[j] = new int[columns];
func(pp, rows, columns);
for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
{
cout << pp[i][j] << " ";
}
cout << endl;
}
//释放内存
for (j = 0; j < rows; j++)
delete[] pp[j];
delete[] pp;
system("pause"); //让窗口暂停,便于看结果
return 0;
}
//如果非要从函数的返回值中带回二维数组,这是最好的方式
//三、由函数带回动态二维数组
int** func(int rows, int columns)
{
int i, j;
int** pp;
//申请内存
pp = new int*[rows];
for (j = 0; j < rows; j++)
pp[j] = new int[columns];
for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
{
pp[i][j] = (i + 1) * 10 + j + 1;
}
}
return pp;
}
int _tmain(int argc, _TCHAR* argv[])
{
int rows = 3, columns = 2;
int** pp;
int i, j;
pp = func(rows, columns);
for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
{
cout << pp[i][j] << " ";
}
cout << endl;
}
//释放内存
for (j = 0; j < rows; j++)
delete[] pp[j];
delete[] pp;
system("pause"); //让窗口暂停,便于看结果
return 0;
}
//四、由函数带回二维数组
//这种方式有问题,程序中已经说明,不要采取此方式
const int rows = 3, columns = 2;
int (*func())[columns]
{
int i, j;
static int pp[rows][columns]; //如果不是静态的,函数退出后其内存就变得无效。
for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
{
pp[i][j] = (i + 1) * 10 + j + 1;
}
}
return pp;
}
int _tmain(int argc, _TCHAR* argv[])
{
int (*pp)[columns];
int i, j;
//pp = new (int[columns]*)[rows];
pp = func();
for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
{
cout << pp[i][j] << " ";
}
cout << endl;
}
system("pause"); //让窗口暂停,便于看结果
return 0;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-12-15
展开全部
表示不知道你要表达什么,还有这段代码是干什么用的?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询