求人来看看这个C语言代码错在哪里,会出现第一行(1*...)不计算乘法

#include <stdio.h>
#include <limits.h>
int main(void)
{
unsigned int x=1,y=1, shuru;
printf("请输入一个不大于%d的正整数\n此程序将为您呈现乘法表\n", INT_MAX);
scanf("%d", &shuru);
printf("此乘法表范围为%d*%d\n\n ", shuru, shuru);
for (; x <= shuru; x++)
{
printf("%d ",x);
}
for (; y <= shuru;++y)
{
printf("\n");
printf("%d", y);
for (; x <= shuru;++x)
{
printf(" %d", x*y);
}
x = 1;
printf("\n");
}
return (0);
}

你第21行放错位置了,应该放到循环之前。

改正后的代码:

#include <stdio.h>
#include <limits.h>
int main(void)
{
unsigned int x = 1, y = 1, shuru;
printf("请输入一个不大于%d的正整数\n此程序将为您呈现乘法表\n", INT_MAX);
scanf("%d", &shuru);
printf("此乘法表范围为%d*%d\n\n      ", shuru, shuru);
for (; x <= shuru; x++)
{
printf("%d     ", x);
}
for (; y <= shuru;++y)
{
printf("\n");
printf("%d", y);
x = 1;
for (; x <= shuru;++x)
{
printf("     %d", x*y);
}
printf("\n");
}
return (0);
}

当然放到for里面也可以的

追问

是因为在第一个for(第9行)中已经使x的值改变为输入值了???

追答x = 1;
for (; x <= shuru;++x)
{
    printf("     %d", x*y);
}

显然这个循环需要把x初始化为1吧

放到后面第一次就没有初始化到咯

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-15

 因为前面的X++改变了X的值 就一个位置 还要加个X=1;

    #include <stdio.h>

    #include <limits.h>

    int main(void)

    {

    unsigned int x=1,y=1, shuru;

    printf("请输入一个不大于%d的正整数\n此程序将为您呈现乘法表\n", INT_MAX);

    scanf("%d", &shuru);

    printf("此乘法表范围为%d*%d\n\n      ", shuru, shuru);

    for (; x <= shuru; x++)

    {

    printf("%d     ",x);

    }

    for (; y <= shuru;++y)

    {

    printf("\n");

    printf("%d", y);
    x=1;//这个位置

    for (; x <= shuru;++x)

    {

    printf("     %d", x*y);

    }

    x = 1;

    printf("\n");

    }

    return (0);

    }

相似回答