C语言中有趣的for循环问题

C语言中有趣的for循环问题,第1张

这个for循环其实可以改写为:

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结构都要判断一下条件表达式。

参考资料来源:百度百科-循环语句


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11265086.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存