请老师看看这个简单的程序哪里错了

4oclhashcat 2018-08-10 11:16:52

//*编写程序数一下 1到 100 的所有整数中出现多少次数字9
#include <stdio.h>
int main()
{
int i=1,temp=1,count=0;
for(;i<101;i++)
{
temp=1; //启动while
while(temp)
{
temp=i%10;
if (temp==9) count++;
temp=i/10;
}
}

printf("1到100出现%d次数字9\n",count);
}

...全文
310 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangchm2018 2018-08-11
  • 打赏
  • 举报
回复
while循环的 条件表达式 在完成一次循环后 没有改变
4oclhashcat 2018-08-11
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

谢谢老师
zangfong 2018-08-10
  • 打赏
  • 举报
回复
抱歉,原来的那个程序是错的,修改后的代码如下
//*编写程序数一下 1到 100 的所有整数中出现多少次数字9
#include <stdio.h>
int main()
{
int i=1,temp=1,count=0;
for(;i<101;i++)
{
temp=i; //启动while
while(temp)
{
//temp=temp%10;
if (temp%10==9) count++;
temp=temp/10;
}
}

printf("1到100出现%d次数字9\n",count);
return 0;
}

引用 1 楼 zangfong 的回复:
你的程序在i=10的时候,在以下的while循环中就死循环了,因为i=10时,那么temp = i/10也永远是1,while循环永远成立。
        while(temp)
{
temp=i%10;
if (temp==9) count++;
temp=i/10;
}


只需要把你for循环里头的i改成temp,就ok了,以下代码供参考
//*编写程序数一下 1到 100 的所有整数中出现多少次数字9
#include <stdio.h>
int main()
{
int i=1,temp=1,count=0;
for(;i<101;i++)
{
temp=i; //启动while
while(temp)
{
temp=temp%10;
if (temp==9) count++;
temp=temp/10;
}
}

printf("1到100出现%d次数字9\n",count);
}
zangfong 2018-08-10
  • 打赏
  • 举报
回复
你的程序在i=10的时候,在以下的while循环中就死循环了,因为i=10时,那么temp = i/10也永远是1,while循环永远成立。
        while(temp)
{
temp=i%10;
if (temp==9) count++;
temp=i/10;
}


只需要把你for循环里头的i改成temp,就ok了,以下代码供参考
//*编写程序数一下 1到 100 的所有整数中出现多少次数字9
#include <stdio.h>
int main()
{
int i=1,temp=1,count=0;
for(;i<101;i++)
{
temp=i; //启动while
while(temp)
{
temp=temp%10;
if (temp==9) count++;
temp=temp/10;
}
}

printf("1到100出现%d次数字9\n",count);
}
赵4老师 2018-08-10
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
4oclhashcat 2018-08-10
  • 打赏
  • 举报
回复
[quote=引用 1 楼 zangfong 的回复:]
你的程序在i=10的时候,在以下的while循环中就死循环了,因为i=10时,那么temp = i/10也永远是1,while循环永远成立。
        while(temp)
{
temp=i%10;
if (temp==9) count++;
temp=i/10;
}


谢谢老师解答,又犯了低级错误。

69,380

社区成员

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

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