#include <stdio.h>
int main()
{
int n,x,i,count=0;
long sum=0,s;
scanf("%d",&x);
if(x%5!=0){
for(i=1;;i++){
sum=sum*10+1;
count++;
if(sum>x){
if(sum%x==0){
s=sum/x;
goto loop;
}
}
}
}
loop:
printf("%lld %d",s,count);
return 0;
}
你耗时太多了
要把不必要的操作全部去掉
比如已经告诉你输入的数不是5的倍数,那你还多此一举判断一下干什么
还有你的i本身就是位数,为什么另外写个count去++,这样每个循环有2个变量在++不消耗时间的吗
还有i从1开始循环很显然浪费时间,不过我还没想好怎么优化
goto loop改为break
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main()
{
int x,count=0;
double sum=0,s;
double intpart ;
loop: printf("请输入:\n");
scanf("%d",&x);
if(x%5==0||x%2==0){
printf("请输入不以5结尾的奇数\n");
system("pause");
goto loop;
}
do{
sum=sum*10+1;count++;
}while(double( modf(sum/x,&intpart))!= 0.000000); //modf 返回sum/x的小数部分
s=sum/x;
printf("%.0f %d\n",s,count);
return 0;
}
看不懂联系 qq 541496557
1.goto语句要慎用,能不用就不用
2.goto语句使用时,以我的经验,代码向上跳回时使用,向下执行尽量不要使用goto语句跳转,能用continue或者break实现,就用这些来实现,不要养成使用goto语句的习惯