我创建了一个程序来打印数据,但是内部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;
}
请尝试运行该程序,它似乎是正确的但它不起作用。
答案 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,因为它在内循环中减少了。我不确定你为什么这样做,但检查你是否必须在两个循环中使用相同的变量