竖式问题的官方代码是如下:
#include
int main()
{
int abc, de, x, y, z, i, ok, count = 0;
char s[20], buff[100];
scanf("%s", s);
for (abc = 111; abc < 999; abc++)
{
for (de = 11; de < 99; de++)
{
x = abc * (de % 10);
y = abc * (de / 10);
z = abc * de;
sprintf(buff, "%d%d%d%d%d", abc, de, x, y, z); //把这五个数字作为字符放入buff数组中 ,连接为一条字符串
ok = 1;
for (i = 0; i < strlen(buff); i++)
if (strchr(s, buff[i]) == NULL)
ok = 0;
if (ok)
{
printf("<%d>\n", ++count);
printf("%5d\nX%4d\n-----\n%5d\n%4d\n-----\n%5d\n\n", abc, de, x, y, z);
}
}
}
printf("The number of solutions = %d\n", count);
return 0;
}
但是让我想不通的是,如果我把输出时的计数器count先在前面写成count=count+1;或者是++count;然后输出时直接写成count,调试的时候结果会出现很多很多竖式停不下来,这是为什么呢?