| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 561 人关注过本帖
标题:函数调用练习
只看楼主 加入收藏
静夜书生
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-3-18
收藏
 问题点数:0 回复次数:2 
函数调用练习
//练习函数调用
#include<stdio.h>
void main()
{
int *turn(int a[3][3]);
int a[3][3],i,j,*r,*k,line=0;
for (i=0;i<=2;i++)
{
for (j=0;j<=2;j++)
scanf ("%d",&a[i][j]);//输入数组
}
r=turn(a);//调用函数
k=r;
printf("array c:\n");
for (;r<=k+9;r++)//打印数组
{
printf("%5d",*r);}
line++;
while (line==3)//控制换行
{
printf("\n");}
line=0;
printf("\n");
}
int *turn(int a[3][3])
{
int *p;
int b[3][3],i,j;
for (i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{
b[j][i]=a[i][j];//实现二维数组转置,即行列互换。
}
}
p=&b[0][0];
return (p);
}
可以帮我看看这个程序哪有问题吗 ,没有错误,但不得结果的
搜索更多相关主题的帖子: 函数 练习 int turn 
2007-03-18 19:39
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 

我想强烈提示一下楼主,格式书写问题要注意,{ }不要乱打

你之所以得不到结果是因为,你调用TURN函数的时候,的确进行了交换,但是函数调用完毕之后,接受函数返回值的指针的确是指向数组B的首地址,但此时数组B已经释放,里面数据都不存在了,你想输出B肯定得不到结果,解决问题,你要在函数中再加一个参数(数组B),而且要是指针型的,因为你传过来的要是地址,不然又会得不到结果;另一种解决的方法是定义一个全局变量(数组B);下面是我采用后者做的,其它问题我都没有考虑,肯定会有不足之处

里面改 } 的地方很多;

#include<stdio.h>
int b[3][3];
void main()
{
int *turn(int a[3][3]);
int a[3][3],i,j,*r,*k,line=0;
for (i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
scanf ("%d",&a[i][j]);//输入数组
}
r=turn(a);//调用函数
k=r;
printf("array c:\n");
for (;r<=k+9;r++)//打印数组
{
printf("%5d",*r);
line++;
while (line==3)//控制换行
{
printf("\n");
line=0;
}
}
}
int *turn(int a[3][3])
{

int *p;
int i,j;
for (i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{
b[j][i]=a[i][j];//实现二维数组转置,即行列互换。
}
}
p=&b[0][0];
return (p);
}

[此贴子已经被作者于2007-3-18 20:20:17编辑过]


雁无留踪之意,水无取影之心
2007-03-18 20:19
静夜书生
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-3-18
收藏
得分:0 

没问题了,非常的感谢.谢谢你改格式. thank you very much!

2007-03-18 20:40
快速回复:函数调用练习
数据加载中...
 
   



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

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