标题:while
只看楼主
chris223
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-9-22
 问题点数:0 回复次数:8 
while
#include<iostream>
#include<string>
using namespace std;
int gcd(int v1,int v2) {
while(v2){
/* 为什么必须是while(v2),不能是while(v1),或其它?如果定义int v,while(v),
或者是while(v1),会出现内存错误,为什么?*/

int temp = v2;
v2 = v1%v2;
v1 = temp;
}
}
int main( )
{
cout<<"Enter two values: \n";
int i,j;
cin>>i>>j;
cout<<"gcd:"<<gcd(i , j)<<endl;
return (0);
}
没人知道吗??

[此贴子已经被作者于2007-10-3 14:06:42编辑过]

搜索更多相关主题的帖子: values include Enter color 
2007-10-03 12:39
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
得分:0 
int gcd(int v1,int v2) {
while(v2){
/* 为什么必须是while(v2),不能是while(v1),或其它?如果定义int v,while(v),
或者是while(v1),会出现内存错误,为什么?*/
int temp = v2;
v2 = v1%v2;
v1 = temp;
}
};这个分号做什么呢?

You have lots more to work on! Never give up!c language!
2007-10-03 12:44
csmenglei951
Rank: 1
等 级:新手上路
威 望:1
帖 子:77
专家分:0
注 册:2007-9-30
得分:0 
因为v2是除数,while语句的作用就是不让v2=0,为0时不会执行while 循环
2007-10-03 12:58
不再
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-9-30
得分:0 
while(v2) //v2为真时循环
{
int temp = v2;
v2 = v1%v2; //只有这里在v2=0时循环结束
v1 = temp;
}

while(v1) //v1为真时循环
{
int temp = v2;
v2 = v1%v2; //在这里可能出现v2=0;当v2=0,v1!=0时,在下个循环将出现v1%0的情况
v1 = temp;
}

2007-10-03 13:09
gospark
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-6-1
得分:0 
V2 是被除数,如果你换城V1 的话也没关系,不过你必须在函数中还要做相应改变                                                

软硬结合才是发展之路~~~
2007-10-03 13:57
chris223
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-9-22
得分:0 
大家都没说到点子上,如果改成while(v1)编译完成后执行的时候会出现内存错误,这是为什么啊@@

八度驿站 8du.
2007-10-10 10:36
TenY
Rank: 1
来 自:重庆大学
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-3-18
得分:0 
除法中要求除数非0,
这里while(v2),就是保证除数为0时,就不继续计算了.因为在while的循环体内有%运算.
函数里还差一个return .至于return的内容就看楼主想用这个函数来干什么了.

[此贴子已经被作者于2007-10-10 11:19:31编辑过]

2007-10-10 11:14
jack_sqh
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-10-9
得分:0 
#include<iostream>
#include<string>
using namespace std;
// 求最大公约数
int gcd(int v1,int v2){
while(v2){
int temp = v2;
v2 = v1%v2;
v1 = temp; }
return v1;
}
int main( ){
cout<<"Enter two values: \n";
int i,j;
cin>>i>>j;
cout<<"gcd:"<<gcd(i,j)<<endl;
return (0);
}
求模运算v2!=0,否则那样做会无限循环

2007-10-10 15:21
chris223
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-9-22
得分:0 

我明白了,一开始我搞错了这个程序的运行过程,如果换成v1的话,这个循环就成了死循环,当然不对啦!
大家可以推导一下试试

谢谢大家的帮助

[此贴子已经被作者于2007-10-11 18:20:50编辑过]


八度驿站 8du.
2007-10-11 18:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-174789-1-1.html




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

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