用c語言實現1+2+3+...+n求和
阿新 • • 發佈:2019-01-25
在做藍橋杯題的時候,做到最簡單的等差數列求和,我就先用for迴圈寫了一個程式,其中的核心就是很簡單的:
sum += i;
具體的函式如下:
#include <stdio.h>
int main()
{
int n;
int i;
int sum = 0;
printf ("輸入一個整數 n = ");
scanf ("%d",&n);
for (i = 1; i <= n; i++)
{
sum += i;
}
printf ("序列求和 sum = %d\n",sum);
return 0;
}
由此函式的for迴圈,我想到了也可以用別的迴圈結構來寫,便整理了一下,寫了下來。
此程式是計算由1+2+...+10的和。
#include <stdio.h> void main() { int i; //for語句 int s1 = 0; for (i=1; i<=10; i++) { s1 += i; } printf ("s1=%d\n",s1); //while語句 i = 1; int s2 = 0; while (i<=10) { s2 += i; i++; } printf ("s2=%d\n",s2); //do...while語句 i = 1; int s3 = 0; do { s3 += i; i++; } while(i<=10); printf("s3=%d\n",s3); }
之後,我自己在計算結果與編譯執行的結果是否一樣時,用到了高斯公式,即“和=(首項+末項)*項數/2”,這樣便可以不需用到迴圈了,由此也可縮短了程式碼,但是若是別的數列,還是應該先找到它的規律,再用迴圈來做。
#include <stdio.h>
int main()
{
long long n;
scanf ("%lld",&n);
long long sum = 0;
sum = (1+n)*n/2;
printf ("%lld\n",sum);
return 0;
}
此外說明的是,由於是提交到做題網站上,定義數時用的是long long 型別,在用它所給的編譯器,輸出時,用“%l64d”,我試過了,