聲明一個和記錄變量s,聲明一個階乘記錄變量t,再聲明一個計數(shù)變量n。用一個for循環(huán),計數(shù)變量n從1開始步長為1增值至10為止;t初值設(shè)置為1,始終記錄它與n的當(dāng)前值的乘積,就得到了n的當(dāng)前值的階乘n!;s初值置0,累加每個n當(dāng)前值時的階乘t,就完成了題設(shè)要求。代碼如下:
創(chuàng)新互聯(lián)公司基于成都重慶香港及美國等地區(qū)分布式IDC機(jī)房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)中國電信成都樞紐中心報價,主機(jī)托管價格性價比高,為金融證券行業(yè)服務(wù)器托管,ai人工智能服務(wù)器托管提供bgp線路100M獨享,G口帶寬及機(jī)柜租用的專業(yè)成都idc公司。
#include "stdio.h"int main(int argc,char *argv[]){ int s,n,t;
for(s=0,t=n=1;n11;s+=t*=n++);//用t記錄每個n的當(dāng)前值的階乘并累加到s
printf("1!+2!+3!+...+10! = %d\n",s); return 0;}
擴(kuò)展資料:
C語言編寫函數(shù)技巧:
1、原則上盡量少使用全局變量,因為全局變量的生命周期太長,容易出錯,也會長時間占用空間.各個源文件負(fù)責(zé)本身文件的全局變量,同時提供一對對外函數(shù),方便其它函數(shù)使用該函數(shù)來訪問變量。
比如:niSet_ValueName(…);niGet_ValueName(…);不要直接讀寫全局變量,尤其是在多線程編程時,必須使用這種方式,并且對讀寫操作加鎖。
2、參數(shù)命名要恰當(dāng),順序要合理。
例如編寫字符串拷貝函數(shù)str_copy,它有兩個參數(shù)。如果把參數(shù)名字起為str1 和str2,例如
void str_copy (char *str1, char *str2);
那么很難搞清楚究竟是把str1 拷貝到str2 中,還是剛好倒過來。
可以把參數(shù)名字起得更有意義,如叫strSource 和strDestination。這樣從名字上就可以看出應(yīng)該把strSource 拷貝到strDestination。
還有一個問題,這兩個參數(shù)那一個該在前那一個該在后?參數(shù)的順序要遵循程序員的習(xí)慣。一般地,應(yīng)將目的參數(shù)放在前面,源參數(shù)放在后面。如果將函數(shù)聲明為:
void str_copy (char *strSource, char *strDestination);
別人在使用時可能會不假思索地寫成如下形式:
char str[20];
str_copy (str, “Hello World”); 參數(shù)順序顛倒
3、如果參數(shù)是指針,且僅作輸入?yún)?shù)用,則應(yīng)在類型前加const,以防止該指針在函數(shù)體內(nèi)被意外修改。例如:
void str_copy (char *strDestination,const char *strSource);
4、不要省略返回值的類型,如果函數(shù)沒有返回值,那么應(yīng)聲明為void 類型。
如果沒有返回值,編譯器則默認(rèn)為函數(shù)的返回值是int類型的。
5、在函數(shù)體的“入口處”,對參數(shù)的有效性進(jìn)行檢查。尤其是指針參數(shù),盡量使用assert宏做入口校驗,而不使用if語句校驗。
#includestdio.h
int?sum1=0;
int?add(int?n)
{
sum1+=n;
return?sum1;
}
int?main()
{
int?min,?max,?sum;
scanf("%d%d",?min,?max);
while(min?=?max)
sum?=?add(min++);
printf("%d",?sum);
return?0;
}
sum
“ww函數(shù)中的sum變量”和“main函數(shù)中的sum變量”不是一個變量。
應(yīng)該把sum的地址也傳過去。
#include"stdio.h"
#include"math.h"
int
ww(int
*a,int
*b,int
*sum)
{
*sum=*a+*b;
}
main()
{int
a,b,summ,*p;p=summscanf("%d,%d",a,b);ww(a,b,sum);printf("%d\n",*p);}