马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
void division ( int * , int , int ) ;
int cir ( int * ) ;
_Bool judge ( int * , int , int ) ;
int main ( void )
{
int i = 7 , j , max = 0 , temp , result ;
int a [ 10000 ] = { 0 } ;
while ( i <= 1000 )
{
for ( j = 0 ; j < 10000 ; j ++ )
{
a [ j ] = 0 ;
}
division ( a , i , 1 ) ;
temp = cir ( a ) ;
if ( temp > max )
{
result = i ;
max = temp ;
}
i ++ ;
printf ( "%d" , i ) ;
}
printf ( "%d\n" , result ) ;
/* division ( a , 45 , 1 ) ;
printf ( "%d\n" , cir ( a ) ) ;*/
return 0 ;
}
void division ( int *a , int i , int j )//将一个数除数存进A数组
{
int count = 0 ;
while ( count <= 10000 )
{
while ( j < i )
{
j *= 10 ;
count ++ ;
}
if ( !( j % i ) )
{
a [ count ] = j / i ;
break ;
}
else
{
a [ count ] = j / i ;
j = j % i ;
}
}
}
int cir ( int *a )//返回循环数
{
int i = 1 , j = 2 , k , temp ;
_Bool flag = 0 ;
k = 9999 ;
while ( a [ k ] == 0 )
{
k -- ;
}
if ( k < 9000 )
{
return 0 ;
}
while ( 1 )
{
while ( a [ i ] != a [ j ] )
{
j ++ ;
if ( j == 9999 && a [ i ] != a [ j ] )
{
i ++ ;
flag = 1 ;
j = i + 1 ;
break ;
}
}
if ( flag )
{
flag = 0 ;
continue ;
}
k = j - i ;
if ( judge ( a , k , i ) )
{
break ;
}
else
{
j ++ ;
continue ;
}
}
return k ;
}
_Bool judge ( int *a , int k , int i )//判断是不是这个循环
{
int j , b = i , count = 0 ;
while ( count < 10 )
{
j = b + k ;
if ( a [ b ] != a [ j ] )
{
return 0 ;
}
b ++ ;
count ++ ;
}
return 1 ;
}
这是我写的代码,但是不知道为什么总是会运行出错,找了好久没找到错误,求大神告知一下我这段代码到底出错在哪里了,谢谢
|