十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
#includestdio.h
成都创新互联服务项目包括新县网站建设、新县网站制作、新县网页制作以及新县网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,新县网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到新县省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
void main()
{
int i,j;
int m=0,n=0;
long sum=0;
for(i=1;i=20;i++)
{m=m+1;
for(j=1;j=3;j++)
{n=n+1;
sum=sum+(i+1)*(i+1)*(j+2);
}
} */内循环语句多的时候,就不能省略大括号了/*
printf("sum is:%ld\n",sum);
printf("外循环的次数:%d,内循环的次数:%d\n",m,n);
}
一般情况下循环次数都已给出,例:
int n;
cinn;
while(n--)
{
语句1;
语句2;
}
但是还有其他条件的话,举个例子:
int i=0;
while(条件满足)//为给出的条件
{
语句1;
语句2;
...
i=i+1;
}
while里面的i就起到了计算循环的次数!
在C语言中,不是所有的循环都可以准确计算出循环次数的。对于简单的for循环可以计算出循环次数。例如,for(i=1;i100;i+=2)s+=i;
这个循环用来计算100以内所有奇数的总和,他从1开始,每循环一次,后一次加的是后一次加的是99,总的循环次数就是:
(99-1)/2+1=50
#include stdio.h
int IsCircle(int n) //判断n是不是循环数
{
int cir[6],cirtemp[6]; //本题中输入最大为6位数
int i=0,j,k=0,count=0;
while(n0) //把n的每一位一次放入数字cirtemp中(反序)
{
count++; //计数
cirtemp[i++]=n%10;
n=n/10;
}
for(i=0;icount;i++) //把顺序还原回来(直接用反序也可以,只是还原回看后面的代码会好理解些)
cir[i]=cirtemp[count-i-1];
for(i=0;icount;i++) //是几位数总共就要循环几次
{
j=cir[k]; //向前右j步
k=(k+j)%count; //走完后的下标
}
if(k==0) //循环完刚好回到第一个数,这个数是循环数
return 1;
else
return 0;
}
int main()
{
int n,i=0;
printf("请输入一个数(9<这个数<999589):\n"); //按题意这行可以删去
scanf("%d",n);
while(1)
{
if(IsCircle(n+i)==1)
{
printf("%d\n",n+i);
break;
}
else if(IsCircle(n-i)==1)
{
printf("%d\n",n-i);
break;
}
i++;
}
return 0;
}
严格来说我这个程序还不严谨,IsCircle中判断k是否遍历了0,1,2,……count这些自然数来判断是否是循环数更准确,毕竟可能会有巧合使得循环完后回到了第一个数(下标k=0)但是却在中途有一个数没有作为起点和终点(只是觉得有可能,具体是否可能需要证明)。
其实也不难把k的每一个值都加起来如果=1+2+3+……+count,且最后k=0就可以了
还有就是输入的时候最好判断一下输入是否规范 9<数<999589