大伙看看我这哪里错了
#include
#include
int main()
{
int i , j ;
long long int x , y ;
for ( y = 0 , i = 1 ; i <=20 ; i++ )
{
for ( x = 1 , j = 1 ; j <=i ; j++ )
{
x *= j ;
}
y += x ;
}
printf( "%ld" , y ) ;
return 0;
}
该回答引用GPTᴼᴾᴱᴺᴬᴵ
您的代码看起来没有错误。然而,您可能需要注意以下几点:
1.在使用printf()函数输出整型变量时,建议使用%lld作为格式说明符,因为y是一个long long int类型的变量。因此,您的代码应该是这样的:
printf("%lld", y);
2.您的循环变量y和x都是long long int类型,但是循环计数器i和j只是int类型。因此,当i和j的值增大到一定程度时,x和y可能会溢出。您可以使用unsigned long long int类型来避免这种情况。例如:
#include <stdio.h>
#include <math.h>
int main()
{
int i , j ;
unsigned long long int x , y ;
for ( y = 0 , i = 1 ; i <=20 ; i++ )
{
for ( x = 1 , j = 1 ; j <=i ; j++ )
{
x *= j ;
}
y += x ;
}
printf("%llu", y) ;
return 0;
}
这应该能够避免溢出错误。
希望这可以帮助您解决问题!
看看你的程序要做什么,是不是x y没有初始化
有什么问题?
#include <stdio.h>
#include <math.h>
int main()
{
int i , j ;
long x , y ;
for ( y = 0 , i = 1 ; i <= 20 ; i++ )
{
for ( x = 1 , j = 1 ; j <=i ; j++ )
{
x *= j ;
}
y += x ;
}
printf( "%ld" , y ) ;
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: