请大神告知,为什么我的程序陷入死循环

愤怒的小鸡wo 2014-03-28 09:00:09
#include<stdio.h>
#include<stdlib.h>
void main()
{
int s=0,j=1,n; //j为余数,s记录商的和
scanf("%d",&n);
while(n!=1)
{
n=n/3;
s=s+n;
j=n%3;
}
if(j==2)
printf("%d",s+1);
else
printf("%d",s);
system("pause");
}
...全文
147 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
愤怒的小鸡wo 2014-03-29
  • 打赏
  • 举报
回复
谢谢各位了!
均陵鼠侠 2014-03-28
  • 打赏
  • 举报
回复
引用 7 楼 u012421456 的回复:
[quote=引用 6 楼 sholber 的回复:] [quote=引用 5 楼 u012421456 的回复:] 你循环里的代码就无法结束循环啊!比如说你输入一个7,则执行完 n=n/3; 语句后,n = 2,然后s=s+n; s = 2,接着j=n%3; j = 0, n还是2不变,继续循环,n变成了0,然后不再改变,根本无法结束啊!lz代码哪来的?还是自己写的?
这样的代码正表明的确是他自己写的。抄袭可耻,原创光荣![/quote] 如果是自己写的,建议lz好好看看循环方面的内容,这个代码只要往下推一下就可以找到问题啊!学习方法很重要,对于学习,我个人的建议是遇到不会的就仔细想想,想不出来就看书,看不出来就谷歌百度,再不行了来论坛,这样的流程下来,许多问题就被解决了,而且自己也能体会到学习的快乐,何乐而不为呢? [/quote] 可不是咋的。有道理!顶!!
百曉生 2014-03-28
  • 打赏
  • 举报
回复
引用 6 楼 sholber 的回复:
[quote=引用 5 楼 u012421456 的回复:] 你循环里的代码就无法结束循环啊!比如说你输入一个7,则执行完 n=n/3; 语句后,n = 2,然后s=s+n; s = 2,接着j=n%3; j = 0, n还是2不变,继续循环,n变成了0,然后不再改变,根本无法结束啊!lz代码哪来的?还是自己写的?
这样的代码正表明的确是他自己写的。抄袭可耻,原创光荣![/quote] 如果是自己写的,建议lz好好看看循环方面的内容,这个代码只要往下推一下就可以找到问题啊!学习方法很重要,对于学习,我个人的建议是遇到不会的就仔细想想,想不出来就看书,看不出来就谷歌百度,再不行了来论坛,这样的流程下来,许多问题就被解决了,而且自己也能体会到学习的快乐,何乐而不为呢?
均陵鼠侠 2014-03-28
  • 打赏
  • 举报
回复
引用 5 楼 u012421456 的回复:
你循环里的代码就无法结束循环啊!比如说你输入一个7,则执行完 n=n/3; 语句后,n = 2,然后s=s+n; s = 2,接着j=n%3; j = 0, n还是2不变,继续循环,n变成了0,然后不再改变,根本无法结束啊!lz代码哪来的?还是自己写的?
这样的代码正表明的确是他自己写的。抄袭可耻,原创光荣!
百曉生 2014-03-28
  • 打赏
  • 举报
回复
你循环里的代码就无法结束循环啊!比如说你输入一个7,则执行完 n=n/3; 语句后,n = 2,然后s=s+n; s = 2,接着j=n%3; j = 0, n还是2不变,继续循环,n变成了0,然后不再改变,根本无法结束啊!lz代码哪来的?还是自己写的?
一根烂笔头 2014-03-28
  • 打赏
  • 举报
回复
那就说明while条件始终为真,即n!=1
漂浮一生 2014-03-28
  • 打赏
  • 举报
回复
首先我不知道你到底要干嘛, 说说程序的问题吧, n = n / 3不能保证n最后为1,因此会出现死循环的情况,比如n = 7; 在使用while()时,里面的条件一定要保证在某种情况时结束
qiminixi 2014-03-28
  • 打赏
  • 举报
回复
n最后的值是稳定到0。。。0不等于1
均陵鼠侠 2014-03-28
  • 打赏
  • 举报
回复
while(n!=1) { n=n/3;

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧