void main()
{int i,j
for(i=0,j=5i=ji++,j--)
{
cout<<i<<'\t'<<j<<endl
}
}
这样就好理解了,初始条件:i=0,j=5
i=j,将j的值赋给i,即i=j=5,于是结果为5 5
然后执行i++,j--,则i=1,j=4,再执行
i=j,将j的值赋给i,即i=j=4,于是结果为4 4
然后执行i++,j--,则i=2,j=3,再执行
i=j,将j的值赋给i,即i=j=3,于是结果为3 3
然后执行i++,j--,则i=3,j=2,再执行
i=j,将j的值赋给i,即i=j=2,于是结果为2 2
然后执行i++,j--,则i=4,j=1,再执行
i=j,将j的值赋给i,即i=j=1,于是结果为1 1
最后i=0时,表达式的值为false,退出循环
这里关键要知道i=j不是判断i和j是否相等,而是赋值语句
判断i和j是否相等应该是 i==j
#include <stdio.h>int IsCircle(int n) //判断n是不是循环数
{
int cir[6],cirtemp[6] //本题中输入最大为6位数
int i=0,j,k=0,count=0
while(n>0) //把n的每一位一次放入数字cirtemp中(反序)
{
count++ //计数
cirtemp[i++]=n%10
n=n/10
}
for(i=0i<counti++) //把顺序还原回来(直接用反序也可以,只是还原回看后面的代码会好理解些)
cir[i]=cirtemp[count-i-1]
for(i=0i<counti++) //是几位数总共就要循环几次
{
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
#include<stdio.h>
int main()
{
int i=0
while(i<520)
{
printf("我爱你\n")
i++
}
return 0
}
采用while循环和printf输出函数即可。
扩展资料:
在C语言中,有三种类型的循环语句:for语句、while语句和do While语句。分别介绍如下:
for
for为当型循环语句,它很好地体现了正确表达循环结构应注意的三个问题:
⑴控制变量的初始化。
⑵循环的条件。
⑶循环控制变量的更新。
while:
while结构循环为当型循环(when type loop),一般用于不知道循环次数的情况。维持循环的是一个条件表达式,条件成立执行循环体,条件不成立退出循环。
while语句格式为:
while(条件表达式)
循环体
每次执行循环体前都要对条件表达式进行判断。
do…while语句结构为直到型循环(until type loop),也用于不知道循环次数的情况。do…while和while的区别在于do…while结构是执行完一遍循环体再判断条件。
do while语句格式为:
do
循环体
while(条件表达式)
每执行完一次循环体,do…while结构都要判断一下条件表达式。
参考资料来源:百度百科-循环语句
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)