我在爲這個問題編寫C程序時遇到了一些問題。也許我正在讀錯了這個問題,並以錯誤的方式去做。有人可以幫我嗎?這是他們的方式,我試圖做到這一點編寫一個程序來查找正奇數和小於或等於30的正偶數的乘積之和
#include<stdio.h>
void main(void)
{
int j, sum=0;
long int product=1;
for(j=1;j<=30;j=j+2)
{
sum=sum+j;
}
for(j=2;j<=30;j=j+2)
{
product=product*j;
}
printf("\nThe sum of positive odd numbers is: %d", sum);
printf("\nThe product of positive even numbers is: %d", product);
}
我得到的輸出是:
The sum of positive odd numbers is: 225
The product of positive even numbers is: -1409286144
我得到的產品部分錯誤。我曾嘗試使用unsigned long int,long long,unsigned long long。什麼都沒有
你的產品是溢滿您的存儲類型的限制。嘗試從'long int'換成更大的存儲類型。 – StarPilot 2013-04-30 23:04:26
2 * 4 * 8 ... * 28大致爲30位數字。你幾乎需要一個浮點類型來保存它。對於它的價值:N個連續奇數的總和(從1開始)給出N平方,因此您可以更快更容易地計算該部分。 – 2013-04-30 23:05:56
使用模塊代替將您的代碼濃縮到1循環。僞代碼 - for(j = 1,j <= 30,j ++)如果j%2 = 0,那麼product = product * j,否則sum = sum + j – 2013-04-30 23:10:58