1 請編寫函式fun,其功能時:計算並輸出當x<0.97時下列多項式的值,直到|sn-s(n-1)|<0.000001為止。
Sn=1+0.5x+0.5(0.5-1)/2!x(2)+…+0.5(0.5-1)(0.5-2)…..(0.5-n+1)/n!x(n)
【參考答案】
le fun(double x)
{double s1=1.0,p=1.0,sum=0.0,s0,t=1.0;
int n=1;
do
{s0=s1;
sum+=s0;
t*=n;
p*=(0.5-n+1)*x;
s1=p/t;
n++;}while(fabs(s1-s0)>1e-6);
return sum;}
2 請編寫一個函式fun,其功能是:將兩個兩位數的正整數ab合併形成一個整數放在c中。合併方式是:將a數的十位和個位數依次放在c數的個位和百位上,b數的十位和個位數依次放在c數的十位和千位上。
【參考答案】
void fun(int a,int b,long *c)
{*c=(b)*1000+(a)*100+(b/10)*10+a/10;}
3請編寫函式fun,其功能是:將s所指字串中ascii值為偶數的字元刪除,串中剩餘字元形成一個新串放在t所指的陣列中。
【參考答案】
void fun(char *s,char t[])
{int i,j=0,n=strlen(s);
for(i=0;i
if (s%2!=0)
{t[j]=s;
j++;}
t[j]=‘’;}
4已知學生的記錄由學號和學習成績構成,n名學生的資料已存入a結構體陣列中。請編寫函式fun,該函式的功能是:找出成績最低的學生記錄,通過形參返回主函式(規定只有一個最低分)。
【參考答案】
void fun(stu a[],stu *s)
{int i,min;
min=a[0].s;
for(i=0;i
if(a.s
{min=a.s;
*s=a;}}
5程式定義了n×n的二維陣列,並在主函式中自動賦值。請編寫函式fun,該函式的.功能是:使陣列左下半三角元素中的值乘以n。
【參考答案】
fun(int a[][n],int n)
{int i,j;
for(i=0;i
for(j=0;j<=i;j++)
a[j]=a[j]*n;}
6請編寫函式fun,其功能使:將兩個兩位正整數a b合併形成一個整數放在c中。合併的方式使:將a數的十位和個位數依次放在c數的百位和個位上,b數的十位和個位數依次放在c數的千位和十位上。
【參考答案】
void fun(int a,int b,long *c)
{*c=(b/10)*1000+(a/10)*100+(b)*10+a;}
7請編寫一個函式fun,它的功能使:計算n門課程的平均分,計算結果作為函式值返回。
【參考答案】
float fun(float *a,int n)
{float ave=0.0;
int i;
for(i=0;i
ave+=a;
ave/=n;
return ave;}
8假定輸入的字串中只包含字母和*號。請編寫函式fun,它的功能使:將字串尾部的*號全部刪除,前面和中間的*號不刪除。
【參考答案】
void fun(char *a)
{int i=0;
char *p,*q;
p=q=a;
while(*p)
p++;
p--;
while(*p==‘*’)
p--;
while(q<=p)
{a=*q;
i++;
q++;}
a=‘’;}
9請編寫函式fun,其功能是:將兩個兩位數的正整數a b合併形成一個整數放在c中,合併的方式是:將a數的十位和個位數依次放在c的個位和百位上,b數的十位和個位數依次放在c數的千位和十位上。
【參考答案】
void fun(int a,int b,long *c)
{c=(b/10)*1000+(a)*100+(b)*10+a/10;}
10 n名學生的成績已在主函式中放入一個帶頭節點的連結串列結構中,h指向連結串列的頭節點。請編寫函式fun,它的功能是:求出平均分,由函式值返回。
【參考答案】
double fun(strec *h)
{double aver=0.0;
while(h!=null)
{aver+=h->s;
hy=h->next;}
aver/=n;
return aver;}