| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3740 人关注过本帖
标题:编了个实现两个数交换的程序,在构件时出了错(在VC++)中编程
只看楼主 加入收藏
qizihan
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-4-24
收藏
得分:0 
楼主,你的没有错,只是输入的时候注意格式(例如输入1,2则结果正确,若果输入1 2则出现不可预料的结果)因为你的输入函数写的是scanf("%d,%d",&a,&b);注意两个%d之间的逗号,输入是要与之相对应。

2007-05-23 22:18
小子也大叔
Rank: 2
等 级:新手上路
威 望:4
帖 子:143
专家分:0
注 册:2007-4-23
收藏
得分:0 
我晓得了  呵呵  其实实参根本没有改变(没有交换位置) 

int f(int x,int y)
{
int c;
c=x;x=y;y=c;
printf("%d,%d,",x,y);
}

只是形参改变了位置但不会传回main函数 

要是把printf("%d,%d,",x,y);
改成printf("%d,%d,",a,b);放在main函数里面去  你们try 下  结果就不一样了  我建议最好用指针传递参数

希望一心想学c的加我的群吧~~ 40834003
2007-05-23 22:20
爱C
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-5-21
收藏
得分:0 

晕。。你写的是要把a和b交换吗??
不需要自己新建一个调用函数的,那样会更麻烦!占内存哦!

2007-05-23 22:48
爱C
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-5-21
收藏
得分:0 

晕。。你写的是要把a和b交换吗??
不需要自己新建一个调用函数的,那样会更麻烦!占内存哦!

2007-05-23 22:50
2c07
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-5-24
收藏
得分:0 

/*实现两数交换*/
#include <stdio.h>
void main()
{
void swap(int *iArr);
int iArray[2];

scanf("%d,%d",&iArray[0],&iArray[1]);

printf ("iArray[0] = %d\tiArray[1] = %d\n",iArray[0],iArray[1]);

swap(iArray);

printf ("iArray[0] = %d\tiArray[1] = %d\n",iArray[0],iArray[1]);

getch();
}

void swap(int *iArr)
{

int temp;
temp = iArr[0];
iArr[0] = iArr[1];
iArr[1] = temp;

}

2007-05-24 19:54
2c07
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-5-24
收藏
得分:0 

楼主可以用数组地址传递的方法,例如:数组a在main程序中定义,其地址可以被b函数引用,数组的值如果在b函数中改变那么在main函数中也一样改变.刚学到一点,其它的请高手指点下!!!

2007-05-24 20:07
小子也大叔
Rank: 2
等 级:新手上路
威 望:4
帖 子:143
专家分:0
注 册:2007-4-23
收藏
得分:0 

第35楼  的思想其实也是指针传递 


希望一心想学c的加我的群吧~~ 40834003
2007-05-24 21:57
猫色色
Rank: 2
等 级:论坛游民
帖 子:135
专家分:25
注 册:2006-6-8
收藏
得分:0 
你既然把函数放在后边,在开头就应该有函数原形说明!
这是我给你改的
我在TC下能运行正常
#include<stdio.h>;
void huan(int x,int y);
main()
{
int a,b;
scanf("%d,%d",&a,&b);
huan(a,b);
}
void huan(x,y)
{
int c;
c=x;
x=y;
y=c;
printf("%d,%d",x,y);
}

我们在成长
2007-05-26 00:26
doctordang
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-5-9
收藏
得分:0 

#include"iostream.h"
void f(int x,int y)
{
int c;
c=x;x=y;y=c;
cout<<x<<" "<<y<<endl;
}

void main()
{
int a,b;
cin>>a>>b;
f(a,b);
}这样就对了


读书到这么大,都是些理论化理想化的东西,自从学习了编程,才发现,读书还有那么一点人味!
2007-05-26 04:16
CHEN5354520
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-4-18
收藏
得分:0 
回复:(crz03128)编了个实现两个数交换的程序,在构...

如果只是要实现两个数交换的话,何必用函数呢!,那复杂了.
真的要用函数那就用指针就OK了


这是直接交换的:
#include<stdio.h>
void main()
{

int a,b,n;
printf("a=");
scanf("%d",&a);
printf("b=");
scanf("%d",&b);
n=a;
a=b;
b=n;
printf("a=%d,b=%d\n",a,b);
}

这是用指针的:
#include<stdio.h>
void main()
{

int f(int * x,int * y);
int a,b;
printf("a=");
scanf("%d",&a);
printf("b=");
scanf("%d",&b);
f(&a,&b);
printf("a=%d,b=%d\n",a,b);
}

f(int * x,int *y)
{
int n;
n=*x;
*x=*y;
*y=n;
}


我虽然不是最棒的,但我却要做最棒的! 朋友们请相信只要努力了,那就一定会有收获的!
2007-05-26 09:21
快速回复:编了个实现两个数交换的程序,在构件时出了错(在VC++)中编程
数据加载中...
 
   



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

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