还行,只是有个坎儿,就是对比的时候。
#include<stdio.h>
#include<string.h>
int main(){
char input[61];
int value[61];
int length,i,j,k,mul;
int result[65];
int flag;
int a;
while(scanf("%s",input)!=EOF){
length=strlen(input);
for(i=0;i<length;++i)
value[i]=input[i]-'0';
//将数与1~n分别相乘
for(mul=1;mul<=length;++mul){//i为乘数
flag=0;
a=0;//表示进位
//将结果存在result数组中
for(j=length-1;j>=0;--j){
a+=value[j]*mul;
result[j]=a%10;
a/=10;
}
//对result从头到尾找起点
for(i=0;i<length;++i){
if(result[i]==value[0]){
k=i;
//判断是否每个数都相同
for(j=0;j<length;++j){
if(value[j]!=result[k])
break;
k==length-1?k=0:k++;
}
if(j==length){
flag=1;
break;
}
}
}
if(flag==0)
break;
}
printf("%s",input);
if(flag)
printf(" is cyclic\n");
else
printf(" is not cyclic\n");
}
return 0;
}