鱼C论坛

 找回密码
 立即注册
查看: 2020|回复: 11

[已解决]程序陷入死循环了,大神们帮帮忙吧!

[复制链接]
发表于 2017-8-17 11:30:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
自己编写的fun(),其他的是试卷给出的
#include <conio.h>
#include <stdio.h>
#include <windows.h>/*自己编写的fun(),其他的是试卷给出的*/



unsigned  fun ( unsigned  w )
{
int i,j,z;
unsigned m=1,n;
i=1;
z=w/10;
while(z!=0)
{  z=w/10;
        i++;
        printf("1111");
}
for(j=1;j<i;j++)
{
        m=m*10;
}
n=w%m;
return n;

}




void NONO( )
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,
    输出数据,关闭文件。 */
  unsigned x ;
  int i ;
  FILE *rf, *wf ;

  rf = fopen("bc5.in", "r") ;
  wf = fopen("bc5.out", "w") ;
  for(i = 0 ; i < 20 ; i++) {
    fscanf(rf, "%u", &x) ;
    fprintf(wf, "%u\n", fun(x)) ;
  }
  fclose(rf) ;
  fclose(wf) ;
}
main( )
{   unsigned  x;
    system("cls");
    printf ( "Enter a unsigned integer number :  " ); scanf ( "%u", &x );
    printf ( "The original data is :  %u\n", x );
    if ( x < 10  ) printf ("Data error !");
    else printf ( "The result  :  %u\n", fun ( x ) );
    NONO( );
}
最佳答案
2017-8-17 17:49:18
ba21 发表于 2017-8-17 15:49
while(z!=0)
{  z=w/10;
        i++;

w为个位数的时候z就是0了
UD0D0A}QR6Y}DOIABC$JHF0.png
)L209EG495%UI9_7J1HQA2H.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-17 11:37:36 | 显示全部楼层
目前看到的情况是卡在while(z!=0),你调试下将z的值 或者上一层x的值打印出来就能知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-17 13:55:26 | 显示全部楼层
跟拒你的题意,这样可否,参考代码:
  1. unsigned  fun(unsigned  w)
  2. {
  3.         unsigned z,result,i;
  4.         z=w;

  5.         i = 1;
  6.         result = 0;
  7.         while(1)
  8.         {                 
  9.                 result += (z % 10) *i;
  10.                 i*=10;
  11.                 z /= 10;
  12.                 if(z/10 == 0)//判断下一位是否为最后一位
  13.                         break;
  14.         }

  15.         return result;

  16. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-17 15:35:32 | 显示全部楼层
ba21 发表于 2017-8-17 13:55
跟拒你的题意,这样可否,参考代码:

谢谢兄台,不过我还是很纠结我写的代码,我找不出错来,蓝瘦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-17 15:49:02 | 显示全部楼层
本帖最后由 ba21 于 2017-8-17 15:52 编辑
hello`world 发表于 2017-8-17 15:35
谢谢兄台,不过我还是很纠结我写的代码,我找不出错来,蓝瘦


while(z!=0)
{  z=w/10;
        i++;
        printf("1111");
}
这么明显的错,还要怎么找???
w/10 你 z 你什么时候才能=0;z一直都保持一个数。

  1. unsigned  fun ( unsigned  w )
  2. {
  3. int i,j,z;
  4. unsigned m=1,n;
  5. i=1;
  6. z=w/10;
  7. while(z!=0)
  8. {  z=z/10;
  9.         i++;
  10.         printf("1111");
  11. }
  12. for(j=1;j<i;j++)
  13. {
  14.         m=m*10;
  15. }
  16. n=w%m;
  17. return n;

  18. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-17 15:49:22 | 显示全部楼层
lumber2388779 发表于 2017-8-17 11:37
目前看到的情况是卡在while(z!=0),你调试下将z的值 或者上一层x的值打印出来就能知道

聪明,但是不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-17 17:49:18 | 显示全部楼层    本楼为最佳答案   
ba21 发表于 2017-8-17 15:49
while(z!=0)
{  z=w/10;
        i++;

w为个位数的时候z就是0了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-17 17:50:29 | 显示全部楼层
lumber2388779 发表于 2017-8-17 17:49
w为个位数的时候z就是0了

是因为打印太多吗?我记得VS可以单步调试看出来的,还不行我再帮你调试下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-17 19:44:40 | 显示全部楼层
哪里不行了?这不是好好的。

2017-08-17_194234.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-19 20:19:24 | 显示全部楼层
感觉贴吧大神很牛逼!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-24 17:31:45 | 显示全部楼层
ba21 发表于 2017-8-17 15:49
while(z!=0)
{  z=w/10;
        i++;

ao huangrandawu 谢谢你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-24 17:32:31 | 显示全部楼层
lumber2388779 发表于 2017-8-17 17:49
w为个位数的时候z就是0了

谢谢,嘿嘿,太马虎了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 23:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表