即使条件满足,while循环也不会中断

时间:2015-06-21 20:49:04

标签: c loops while-loop iteration

我创建了一个程序来打印数据,但是内部while循环没有中断,它应该在值为0时中断,但它会进入连续循环。

任何人都可以告诉我程序中有什么问题。 这是编译器的正确行为。

#include<stdio.h>
int main()
{
        int i=1,n,a=0;
        while(i<=500)
        {
                printf("1st i = %d\n",i);
                while(i > 0)    //This loop is not breaking.
                {
                        printf("2nd i = %d\n",i);
                        n = i%10;
                        printf("n = %d\n",n);
                        a = n*n*n + a;
                        i = i/10;
                        printf ("3rd i = %d\n",i);
                        printf ("a = %d\n",a);
                        if (i==0)
                                break;
                }
                if (a==i)
                        printf("Number is Armstrong");
                i++;
        }
        return 0;
}

请尝试运行该程序,它似乎是正确的但它不起作用。

1 个答案:

答案 0 :(得分:3)

对两个循环使用相同的变量(i),在内循环中,退出的条件是i为0或负数,但内部循环中此变量的唯一变化是<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0"> <xsl:param name="pNewType" select="'xsd:string'"/> <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> <xsl:template match="@type"> <!-- <xsl:if test="type='xsd:boolean'"> Found element!!********* </xsl:if> --> *** Condition to check if its boolean doesn't work <xsl:attribute name="type"> <xsl:value-of select="$pNewType"/> </xsl:attribute> </xsl:template> </xsl:stylesheet> 使用int时会出现意外结果。

此外,i在外循环中永远不会达到500,因为它在内循环中减少了。我不确定你为什么这样做,但检查你是否必须在两个循环中使用相同的变量