- 论坛徽章:
- 1
|
[求助] 有点难度D,请老大们指点
- # include <iostream.h>;
- # include <stdio.h>;
- # include <stdlib.h>;
- # include <string.h>;
- long reserve( long );
- void main( void )
- {
- long n,r,level=0;
- cout<<"Please enter a value: ";
- cin>;>;n;
- while( (r=reserve(n))!=n )
- {
- fprintf( stderr, "%lu + %lu ", n, r );
- n=n+r;
- fprintf( stderr, "= %lu\n", n );
- level++;
- }
- cout<<"The level is "<<level<<endl;
- }
- long reserve(long a)
- {
- char tmpStr[20];
- int len, t;
- sprintf( tmpStr, "%lu", a );
- len = strlen(tmpStr);
- for( int i=0; i<len/2; i++ )
- {
- t = tmpStr[i];
- tmpStr[i] = tmpStr[len-i-1];
- tmpStr[len-i-1] = t;
- }
- return atol(tmpStr);
- }
复制代码
这样就可以了。
建议:做程序之前先好好想想,优化一下算法,不要光盯着结果。
你的程序为什么不行?就是由于算法过于复杂,多余的循环太多。
不过也许还有其它原因,我也就懒得查了。 |
|