| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4309 人关注过本帖
标题:如何用函数调用多维数组做形参。
只看楼主 加入收藏
shutyourhead
Rank: 1
等 级:新手上路
帖 子:52
专家分:2
注 册:2010-8-22
收藏
 问题点数:0 回复次数:8 
如何用函数调用多维数组做形参。
例如,我要自定义一个fun函数,把一个二维数组周边元素全部置0。由主函传到fun,最后再传回来,把变形的二维数组输出
fun(不知道怎么填)
{
    int i,j;                     
    for(i=0;i<M;i++)               
    for(j=0;j<N;j++)               
    if(i==0||j==0||i==M-1||j==N-1)  
    a[i][j]=0;   
}
main()
{int a[M][N];fun(不知道怎么填);
}
搜索更多相关主题的帖子: 多维 形参 函数 
2010-08-25 19:02
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:0 
回复 楼主 shutyourhead
如下:
fun(int a[M][N],int M,int N)
{
    int i,j;                     
    if(i==0||j==0||i==M-1||j==N-1)  
        a[i][j]=0;   
}
main()
{int a[M][N];fun(a,M,N);
}

[ 本帖最后由 jack10141 于 2010-8-25 19:16 编辑 ]

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-25 19:15
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:0 
void fun(a[][N], int m, int n)
。。。。。
fun(a, m, n);
就是二维数组做形参
2010-08-25 21:29
唐小虎
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:46
专家分:119
注 册:2010-6-25
收藏
得分:0 
#include<stdio.h>
void fun(int a[M][N],int M,int N)
{
    int i,j;                     
    for(i=0;i<M;i++)               
    for(j=0;j<N;j++)               
    if(i==0||j==0||i==M-1||j==N-1)  
    a[i][j]=0;   
}

void main()
{int i,j,a[3][4];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",a[i][j]);
fun(a,3,4);
for(i=0;i<3;i++)
for(j=0;j<4;j++)
printf("%d",a[i][j]);
}
二三楼的意思是不是这个啊?我该了多少遍 结果还是没法运行!!高手再点下经吧!
2010-08-26 01:18
真我
Rank: 4
等 级:业余侠客
威 望:1
帖 子:146
专家分:210
注 册:2010-7-14
收藏
得分:0 
用数组名作形参?
个人以为最好还是用指针作形参的好,因为多维数组名可以当做一级到N级指针用,有指代不清的可能
2010-08-26 21:44
真我
Rank: 4
等 级:业余侠客
威 望:1
帖 子:146
专家分:210
注 册:2010-7-14
收藏
得分:0 
如果一定要用数组名要标出一维以后的下标
比如
int fun(int a[][4],int m,int n)
2010-08-26 22:00
真我
Rank: 4
等 级:业余侠客
威 望:1
帖 子:146
专家分:210
注 册:2010-7-14
收藏
得分:0 
所以不可能有fun(int a[M][N],int M,int N)这样的函数,

第一个下标M没有意义,第二个下标N不能用变量
2010-08-26 22:13
英俊小山
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-8-11
收藏
得分:0 
经过试验,3楼是正解!
2010-08-26 22:25
xiexinlive
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-10-29
收藏
得分:0 
三楼正解!
#include <iostream>
using namespace std;
int cal_score(int score[],int judge_type[],int n)
{
    int n_zhuangjia=0;
    int s_zhuangjia=0;
    int s_dazhong=0;
    int pingjun=0;
    for(int i=0;i<n;i++)
    {
        if (1==judge_type[i])
        {
            s_zhuangjia+=score[i];
            n_zhuangjia++;
        }
        else if (2==judge_type[i])
        {
            s_dazhong+=score[i];
        }
    }
    if (n_zhuangjia>0&&n_zhuangjia<n)
    {
        pingjun=(int)(s_zhuangjia/n_zhuangjia*0.6+s_dazhong/(n-n_zhuangjia)*0.4);
    }
    else if (n_zhuangjia==n)
    {
        pingjun=(int)(s_zhuangjia/n*0.6);
    }
    else if (n_zhuangjia==0)
    {
        pingjun=(int)(s_dazhong/n*0.4);
    }
    return pingjun;
}

void fun(int a[],int m)
{
    for(int i=0;i<m;i++)
        a[i]=100;
}

void print1(int a[],int m)
{
    for(int i=0;i<m;i++)
        cout<<a[i]<<endl;
}

void main()
{
    int score[]={12,34,23,56,90,26,87,98,100,85};
    int judge_type[]={1,1,1,1,1,2,2,2,2,2};
//    print1(score,10); //right
//    print1(judge_type,10);
    int number=0;
    fun(score,10);
//    cout<<score[0];
    number=cal_score(score,judge_type,10);
    cout<<number<<endl;
}
2013-10-29 23:03
快速回复:如何用函数调用多维数组做形参。
数据加载中...
 
   



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

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