| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1105 人关注过本帖
标题:求指导,程序运行时停止工作。且想求教如果子函数定义时用*a[3], 下面的主 ...
只看楼主 加入收藏
凉岛
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-4-10
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
求指导,程序运行时停止工作。且想求教如果子函数定义时用*a[3], 下面的主函数调用时怎么调用。例如二维数组int ma(int *[3]),调用时用ma(a
#include <stdio.h>
float matrix(float(*a)[3],int n)
{
    int i,j;
    float sum=0;
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
        {
            if(i==j) sum=sum+*(*(a+i)+j);
            if(j==2-i&&i!=j)sum=sum+*(*(a+i)+2-i);
        }
        return sum;
}
int main()
{
    int i,j;
    float a[3][3];
    printf("please input 3*3 array:\n");
    for(i=0; i<3; i++)
        for(j=0;j<3;j++)
            scanf("%f",a[i][j]);
        printf("sum=%0.2f\n",matrix(a,3));
        printf("\n");
        return 0;




运行总是停止工作。而且之前的代码在定义子函数时,是  float matrix(float*a[3],int n)  
2016-04-10 22:52
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:7 
程序代码:
#include <stdio.h>
//gcc可通过
float matrix(float (*a)[3],int n)
{
    int i,j;
    float sum=0;
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
        {
            if(i==j) sum=sum+*(*(a+i)+j);
            if(j==2-i&&i!=j) sum=sum+*(*(a+i)+2-i);
        }

    return sum;
}

int main()
{
    float a[3][3]={{0,1,2},{1,2,3},{2,3,4}};

    printf("sum=%5.2f\n",matrix(a,3));
    printf("\n");

    return 0;
}

   唯实惟新 至诚致志
2016-04-11 08:35
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:7 
回复 楼主 凉岛
scanf("%f",a[i][j]); 这里是不是少了个&?
float matrix(float*a[3],int n)这个说明你的返回值sum类型是float的

[此贴子已经被作者于2016-4-11 08:48编辑过]

2016-04-11 08:46
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
收藏
得分:7 
程序代码:
#include <stdio.h>
float matrix(float a[][3])
{
    int i,j;
    float sum=0;
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
        {
            if(i==j) sum=sum+*(*(a+i)+j);
            if(j==2-i&&i!=j)sum=sum+*(*(a+i)+2-i);
        }
        return sum;
}
int main()
{
    int i,j;
    float a[3][3];
    printf("please input 3*3 array:\n");
    for(i=0; i<3; i++)
        for(j=0;j<3;j++)
            scanf("%f",&a[i][j]);
     printf("sum=%0.2f\n",matrix(a));
     printf("\n");
     return 0;
}

未佩好剑,转身便已是江湖
2016-04-11 10:10
凉岛
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-4-10
收藏
得分:0 
回复 3楼 wanglianyi1
对吼。那第二个问题请问怎么解决
2016-04-11 12:20
快速回复:求指导,程序运行时停止工作。且想求教如果子函数定义时用*a[3], 下面 ...
数据加载中...
 
   



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

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