c语言小程序 分解质因数 为什么一定要加个while(i!=n)想了好久都没想明白, 求高手指点。

c语言小程序 分解质因数 为什么一定要加个while(i!=n)想了好久都没想明白, 求高手指点。,第1张

//因为当除数为 i 时,不一定只能除 n 一次,可能要除好几次,所以要在 i 时找出它的所有倍数

例如:n=100,i=2时,除一次之后,n=50,但是n还可以再除一次2变为25,但是如果没有

while(i!=n)语句,i 在for 循环中增为3 ,就少一个质因子 2,同样当 i 增到 5 时也有两个

#include<stdlibh>

#include<stdioh>

int main()

{

int n,i;

printf("请输入一个正整数!\n");

scanf("%d",&n);

printf("%d=",n);

for(i=2;i<n;i++)

{

while(i!=n)

{

if(n%i==0)

{

printf("%d",i);

n=n/i;

}

else

break;

}

}

printf("%d\n",n);

system("pause");

}

我运行了,解释是GO west,youn 最后没有‘g’

因为你用了while循环

输入之后先是读出ch = 'G'

判断ch是否为'g',

不是所以打印G

接着读下一个字符 得ch=‘O’

判断ch是否为'g',

不是所以打印O

……

到读到g时,ch=‘g’

判断ch是否为'g',

是,所以循环结束g不打印

循环结束,程序结束。

打印过程中为换行或加其他符号,所以是

GO west,youn

你在程序中打印点其他的,或换行就可以很清楚看出来怎么回事了。

比如:

# include <stdioh>

int main(void)

{

char ch;

scanf(" %c",&ch);

while (ch != 'g')

{

printf("%c",ch);

printf("\n"); //换行

scanf(" %c",&ch);

}

return 0;

}

while(1)其中1代表一个常量表达式,while(1) 表示无限循环,除非你设置break等类似的跳出循环语句循环才会中止

while(i--)其中i是一个变量,因此表达式i--有不同的值,依次递减,i--是先取值后减,--i先加后取值,所以i--的值同未执行该自减运算时的i相等。

扩展资料:

while(1) 表示无限循环。

while的语法格式为 :

while(condition)

{

//do something 1

}

//do something 2

condition 为循环条件,每次判断condition是否为真,为真时执行while循环体中的语句块(代码中块1);为假时结束循环,执行后续语句(代码中块2)。

这里condition为1 表示条件永远为真,一直执行循环体内语句。为了结束循环,可以在循环体内满足某些特定条件使用break跳出循环。

如下:

while(1)

{

//do something

if(condition)

{

break;

}

}

参考资料:

百度百科-while

while语句的原型是while(表达式)语句,当表达式为非0值时,执行while语句中的嵌套语句。

那么while(1)其中1代表一个常量表达式,他永远不会等于0。所以,循环会一直执行下去。除非你设置break等类似的跳出循环语句循环才会中止

while(i--)其中i是一个变量,因此表达式i--有不同的值,依次递减,i--是先取值后减,--i先加后取值,所以i--的值同未执行该自减运算时的i相等。因此当i为0时,循环会跳出

很容易混淆的是把i--的值误认为i执行自减后的值,可以编个小程序验证下

#include<iostream>

#include<stdlibh>

using namespace std;

int main()

{

int i=1;

while(i--)//此时i=0

{

i--;//执行该语句i为-1

break;

}

cout<<i;

system("pause");

}

输出为-1,说明执行了循环内i--的语句

希望能帮到你

题目没说以什么为输入结束标志的话,一般默认是以EOF的。所以你可以将cin>>n>>b放到while循环的条件里,cin如果读到eof则返回0。

while(cin>>n>>b)

{

//字符串处理代码

}

也就是说把goto语句的跳转去掉。

当然你要是舍不得的话可以把把cin>>n语句用if(cin>>b) 代替掉,如果cin返回0即读到eof,则跳出循环。

另:不知道你们对c的要求严不严,最好不要出现goto语句。

另另:代码没仔细看,就针对你说的不知道以什么为结束标志提看了下

以上就是关于c语言小程序 分解质因数 为什么一定要加个while(i!=n)想了好久都没想明白, 求高手指点。全部的内容,包括:c语言小程序 分解质因数 为什么一定要加个while(i!=n)想了好久都没想明白, 求高手指点。、C语言小程序不懂!、while(1) 什么意思 while(i--)什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10121132.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存