程序陷入死循环了,大神们帮帮忙吧!
自己编写的fun(),其他的是试卷给出的#include <conio.h>
#include <stdio.h>
#include <windows.h>/*自己编写的fun(),其他的是试卷给出的*/
unsignedfun ( unsignedw )
{
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( )
{ unsignedx;
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( );
}
{:9_229:} 目前看到的情况是卡在while(z!=0),你调试下将z的值 或者上一层x的值打印出来就能知道 跟拒你的题意,这样可否,参考代码:
unsignedfun(unsignedw)
{
unsigned z,result,i;
z=w;
i = 1;
result = 0;
while(1)
{
result += (z % 10) *i;
i*=10;
z /= 10;
if(z/10 == 0)//判断下一位是否为最后一位
break;
}
return result;
} ba21 发表于 2017-8-17 13:55
跟拒你的题意,这样可否,参考代码:
谢谢兄台,不过我还是很纠结我写的代码,我找不出错来,蓝瘦 本帖最后由 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一直都保持一个数。
unsignedfun ( unsignedw )
{
int i,j,z;
unsigned m=1,n;
i=1;
z=w/10;
while(z!=0)
{z=z/10;
i++;
printf("1111");
}
for(j=1;j<i;j++)
{
m=m*10;
}
n=w%m;
return n;
} lumber2388779 发表于 2017-8-17 11:37
目前看到的情况是卡在while(z!=0),你调试下将z的值 或者上一层x的值打印出来就能知道
聪明,但是不行 ba21 发表于 2017-8-17 15:49
while(z!=0)
{z=w/10;
i++;
w为个位数的时候z就是0了 lumber2388779 发表于 2017-8-17 17:49
w为个位数的时候z就是0了
是因为打印太多吗?我记得VS可以单步调试看出来的,还不行我再帮你调试下 哪里不行了?这不是好好的。
感觉贴吧大神很牛逼!{:5_106:}{:5_106:}{:5_106:} ba21 发表于 2017-8-17 15:49
while(z!=0)
{z=w/10;
i++;
ao huangrandawu {:9_239:}谢谢你 lumber2388779 发表于 2017-8-17 17:49
w为个位数的时候z就是0了
谢谢,嘿嘿,太马虎了
页:
[1]