計(jì)算機(jī)二級(jí)C語(yǔ)言上機(jī)題庫(kù)(一)
改錯(cuò)題
數(shù)字題:
1、根據(jù)整型形參m,計(jì)算如下公式的值。
y=1+1/(2*2)+1/(3*3)+1/(4*4)+…+1/(m*m)的值。例如,若m=5,則應(yīng)輸出:1.463611。
double fun(int m)
{double y=1.0;int i;for(i=2;i<=m;i++)y+=1.0/(i*i);return(y);}
2、根據(jù)形參m,計(jì)算列公式的值。T=1-1/2+1/3-1/4+……+(-1)(m+1)/m 例如,若輸入5,則應(yīng)輸出0.783333
double fun(int m)
{double t=1.0,j=1.0;int I;for(i=2;i<=m;i++){j= -1*j;t+=j/i;}return t;}
3.根據(jù)整型參數(shù)m,計(jì)算如下公式的值,y=1/(100*100)+1/(200*200)+1/(300*300)+…+1/(m*m).例如,若m=2000,則應(yīng)輸出0.000160.
double fun (int m)
{double y=0, d;int i;
for(i=100;i<=m;i+=100)
{d=(double) i*( double)i;y+=1.0/d;}
return(y);}
4.根據(jù)以下公式求n的值。例如 ,給eps輸入0.0005時(shí),應(yīng)當(dāng)輸出
Pi=3.140578.
Pai/2=1+1/3+1/3*2/5+1/3*2/5*3/7+…
double fun(double eps)
{double s,t;int n=1;s=0.0;t=1.0;while(t>=eps){s+=t;t=t*n/(2*n+1);
n++;}return (s*2);}
5.根據(jù)形參m,計(jì)算下列公式的值。t=1+1/2+1/3+1/4+…1/m.。例如,若輸入5,則應(yīng)輸出2.283333.
double fun (int m)
{double t=1.0;int i;
for(i=2;i<=m;i++)t+=1.0/i;return t;}
6.根據(jù)整型形參m,計(jì)算如下公式的值。
y=1+1/根號(hào)(2)+1/根號(hào)(3)+……1/根號(hào)(n)例如,若m中的值為:5,則應(yīng)輸出:3.231671
#include<math.h>
double fun (int m)
{int i;double t,y=0;
for(i=1;i<=m;i++){t=1/sprt(i);y=y+t;}return y;}
7. 根據(jù)整型形參m的值,計(jì)算如下公式的值。t=1-1/(2*2)-(3*3)-…-1/(m*m)例如m=5,則應(yīng)輸出0.536389.
double fun (int m)
{double ?y=1.0;int i;
for (i=2;i<=m;i++)
y-=1.0/(i*i);return(y);}
8. 根據(jù)整型形參m,計(jì)算如下公式的值.y=1-1/(2*2)+1/(3*3)-1/(4*4)+…+(-1)(m+1)/(m*m)例如:m中的值為5,則應(yīng)輸出0.838611.
double fun (int m)
{double y=1.0;double j=1.0;int i;
for(i=2;i<=m;i++){j=-1*j;y+=j/(i*i);}return(y);}
9.根據(jù)整型形參n,計(jì)算如下公式的值。A1=1.A2=1/(1+A1),A3=1/(1+A2),An=1/(1+A(n-1)).例如,若n=10,則應(yīng)輸出0.617977.
float fun (int n)
{float ?A=1;int i;for(i=2;i<=n;i++)A=1.0/(1+A);returnA;}
10.求s=aa…aa-…aaa-aa-a(此處aa…aa表示n個(gè)a,a和n的值在1至9之間)。如a=3.n=6,則以上表達(dá)式為:s=333333-33333-3333-333-33-3.其值是296298.
long fun (int a,int n)
{int j;long s=0,t=0;
for (j=0;j<n;j++)
t=t*10+a;s=t;
for(j=1;j<n;j++){t=t/10;s=s-t;}return(s);}
11.用下面的公式求∏的近似值,直到最后一項(xiàng)的絕對(duì)值小于指定的數(shù)(參數(shù)num)為止。
∏/4≈1-1/3+1/5-1/7+…例如,輸入0.0001,則程序輸出3.1414.
float fun(float num)
{int s;float n,t,pi;t=1;
pi=0;n=1;s=1;
while(fabs(t)>=num)
{pi=pi+t;n=n+2;s=-s;t=s/n;}
pi=pi*4;return pi;}
12.計(jì)算并輸出下列級(jí)數(shù)的前N項(xiàng)之和SN,直到SN+1大于q為止,q的值通過(guò)形參傳入。
SA=2/1+3/2+4/3+(N+1)/N。例如,若q的值為50.0,則函數(shù)值為49.394948.
double fun(int q)
{int n;double s,t;n=2;s=2.0;
while(s<=q){t=s;s=s+(double)(n+1)/n;n++;}printf(“n=%d\ n”,n);return t;}
13.求S的值。設(shè)S=(22/(1*3))*(42/(3*5))*(62/(5*7)*…*(2k2/(2k-1)*(2k+1)).例如,當(dāng)k為10時(shí),函數(shù)的值應(yīng)為1.533852.
float fun(int k)
{int n;float s,w,p,q;n=1;s=1.0;
while(n<=k){w=2.0*n;p=w-1.0;q=w+1.0;s=s*w*w/p/q;n++;}return s;}
14.計(jì)算S=f(f(-1.0)+f(5.0))的值。結(jié)果為2488.000000.f(x)函數(shù)定義如下:(公式省略)
double f(double x)
{double y;if (x<=2.0)y=2.0*x*x+3.0*x+4.0;else y=-2.0*x*x+3.0*x-4.0;
return y;}
15.計(jì)算S=給f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…+f(n)的值。例如,當(dāng)n為5時(shí),函數(shù)值應(yīng)為10.407143.f(x)函數(shù)定義如下;(函數(shù)省略)
double?f(double x)
{if(x= =0.0||x= =2.0)
return0.0;else if(x<0.0)return
(x-1)/(x-2);
else return(x+1)/(x-2);}
double fun(int n)
{int i;double s=0.0,y;
for(i=-n;i<=n;i++){y=f(1.0*i);s+=y;}return s;}
16.按以下遞歸公式求函數(shù)值。函數(shù)省略。
例如,當(dāng)給n輸入5時(shí),函數(shù)值為18.
fun(int n){int c;if(n==1)c=10;else c=fun(n-1)+2;return(c);}
17.計(jì)算函數(shù)F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的 值。其中x和y不相等,z和y不等。例如,當(dāng)x的值為9,y的值為11,z的值為15時(shí),函數(shù)值為-3.50.
#define FU(m,n)(m)/(n)
float fun(float a.float b,float c)
{float value;
value=FU(a+b,a-b)+FU(c+b,c-b);return(value);}
18.用二分法求方程2x3 -4x2+3x-6=0的一個(gè)根,并要求絕對(duì)誤差不超過(guò)0.001.例如,若給m輸入-100,給n輸入90,則函數(shù)求得的一個(gè)根值為2.000.
double funx(double x)
{return (2*x*x*x-4*x*x*+3*x-6);}
double fun(double m,double n)
{double r;r=(m+n)/2;
while(fabs(n-m)>0.001)
{if(funx(r)*funx(n)<0)?m=r;
else n=r;r=(m+n)/2;}return r;}
19.傳入一個(gè)整數(shù)m,計(jì)算如下公式的值,t=1/2-1/3-…-1/m.例如,若輸入5,則應(yīng)輸出-0.283333.
double fun (int m)
{double t=1.0;int i;
for(i=2;i<=m;i++)t=t-1.0/i;return t;}
20.求出以下分?jǐn)?shù)序列的前n項(xiàng)之和;1/2,2/3,3/5,5/8,8/13,13/21…和值通過(guò)函數(shù)值返回main函數(shù)。例如,若n的值為:5,則應(yīng)輸出:3.007051.
double fun(int n)
{int i;double t,s,a,b,c;
s=0;a=1;b=2;for(i=0;i<n;i++){t=a/b;s=s+t;c=a+b;a=b;b=c;}return s;}
21.求出以下分?jǐn)?shù)序列的前n項(xiàng)之和。2/1,3/2,5/3,8/5,13/8,21/13,……和值通過(guò)函數(shù)值返回主函數(shù)。例如,若輸入5,則應(yīng)輸出8.391667.
double fun (int n)
{int a=2,b=1,c,k;double s=0.0;for(k=1;k<=n;k++){s=s+1.0*a/b;c=a;a+=b;b=c;}return(s);}
22.計(jì)算1+2+3+……+n的和值。
float fun (int n)
{double t;if (n==1)return(1);else t=fun(n-1)+n;return t;}
23.應(yīng)用遞歸算法求某數(shù)a的平方根。求平方根的迭代公式如下:x1=(x0+a/x0)/a.例如,2的平方根為1.414214.
doube fun(double a,double x0)
{double x1,y;
x1=(x0=a/x0)/2.0;if(fabs (x1?-x0)>=0.00001)
y=fun (a,x1);
else y=x1;return y; }
24.求k!(k<13),例如,若k =10,則應(yīng)輸出3628800.
long fun (int k)
{if(k>0)return(k*fun(k-1));else if (k==0)?return 1;}
25.計(jì)算整數(shù)n 階乘。
double fun (int n)
{double result=1.0;
If(n==1||n==0)return 1;
While (n>1&&n<170)result*=n--;return result;}
26.計(jì)算正整數(shù)num 的各位上的數(shù)字之積,例如,若輸入:252,則輸出應(yīng)該是:20.
long fun(long num)
{long k=1;
do {k*=num%10;num/=10;}while (num);return(k); }
27.計(jì)算正整數(shù)num的各位之平方和。例如,輸入352,則輸出應(yīng)該是38;若輸入328,則輸出應(yīng)該是77.
long fun (long num)
{long k=0;do {k+=(num%10)* (num%10);num/=10;}while (num);return(k);}
28.計(jì)算并輸出high?以內(nèi)的素?cái)?shù)之和。high由主函數(shù)傳給fun函數(shù)。若high的值為100,則函數(shù)的值為1060.
int fun (int high)
{int sum=0,n=0,j,yes;while (high>=2){yes=1;for(j=2;j<=high/2;j++)
if (high%j==0){yes=0;break;}if(yes){sum+=high;n++;}high--;}return sum;}
29.計(jì)算并輸出k以內(nèi)最大的6個(gè)能被7或11整除的自然數(shù)之和。若k的值為500,則函數(shù)的值為2925.
int fun (int k)
{intm=0,mc=0,j;
while((k>=2)&&(mc<6))
{if ((k%7==0)||
(k%11==0)){m+=k;mc++;}k--;}return m;}
30.數(shù)列中,第一項(xiàng)為3,后一項(xiàng)都比前一項(xiàng)的值增5.下列給定程序中,函數(shù)的功能是:計(jì)算前n(4≤n≤50)項(xiàng)的累積和。在累加過(guò)程中把那些被4除后余2的當(dāng)前累加值放入數(shù)組中,符合此條件的累加值的個(gè)數(shù)作為函數(shù)值返回主函數(shù)里。如,當(dāng)n的值為20時(shí),該數(shù)列為3,8,13,18,23,28,…,93,98.符合此條件的累加值應(yīng)為42,126,366,570,1010.
int fun (int n,int *a)
{int i,j=0,k,sum;sum=0;for (k=3,i=0;i<n;i++,k+=5)
{sum=sum+k;if (sum%4==2)a[j++]=sum;}return j++;} ??
31.讀入一個(gè)整數(shù)k(2≤k≤10000),打印它的所有質(zhì)因子(即所有為素?cái)?shù)的因子)。例如,若輸入整數(shù)理化2310.則應(yīng)輸出:2、3、7、11.
?isPrime (int n)
{int i,m;m=1;for (i=2;i<n;i++)if (!(n%i)){m=0;break;}return(m);}
32.將長(zhǎng)整型數(shù)中每一位上為偶數(shù)的數(shù)依次逆向取出,構(gòu)成一個(gè)新數(shù)放在t中。高位在低位,低位在高位。當(dāng)s中的數(shù)為25846513時(shí),t中的數(shù)為6482.
void fun(long s,long *t)
{int d;long s1=1.i=1;*t=0;
while(s/i>0) i=i*10;i=i/10;
while (s>0)
{d=s/i;if(d%2==0){*t=d*s1+*t;s1*=10;}s=s%i;i=i/10;}}
33.已知一個(gè)數(shù)列從0項(xiàng)開始的前3項(xiàng):0,0,1,以后的各項(xiàng)都是其相鄰的前3項(xiàng)之和。函數(shù)fun的功能是:計(jì)算并輸出該數(shù)列前n項(xiàng)的和sum。N的值通過(guò)形參傳入。例如,當(dāng)n=10時(shí),程序輸出結(jié)果應(yīng)為96.000000.
double fun (int n)
{double sum,s0,s1,s2,s;int k;sum=1.0;
if(n<=2)sum=0.0;s0=0.0;s1=0.0;s2=1.0;
for (k=4;k<=n;k++){s=s0+s1+s2;sum+=s;s0=s1;s1=s2;s2=s;}return sum;}
34.計(jì)算并輸出k以內(nèi)最大的10個(gè)能被13或17整除的自然數(shù)之和。例如,若k的值為500,則函數(shù)的值為4622.
int fun (int k)
{int m=0,mc=0,j;while ((k>=2)&&(mc<10)){if((k%13==0)||(k%17==0))
{m=m+k;mc++;}k--;}return m;}
35.通過(guò)某種方式實(shí)現(xiàn)兩個(gè)變量值的交換,規(guī)定不允許增加語(yǔ)句和表達(dá)式。例如,變量a中的值原為8,b中的值原為3,b中的值為8.
int fun (int *x,int y){int t;t=*x;*x=*y;;return (t);}
36.實(shí)現(xiàn)兩個(gè)整數(shù)的交換。例如給a和b分別輸入60和65,輸出為:a=65 b=60.
void fun (int *a,int *b){int t;t=*b;*b=*a;*a=t;}
37.將長(zhǎng)整型數(shù)中每一位上為偶數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。當(dāng)s中的數(shù)為87653142時(shí),t中數(shù)為8642.
void fun (long s,long *t){int d;long s1=1;*t=0;
while(s>0){d=s%10;if(d%2==0){*t=d*s1+*t;s1*=10;}s/=10;}}?
38.從低位開始取出長(zhǎng)整型變量s中偶數(shù)位上的數(shù),依次構(gòu)成一個(gè)新數(shù)放在t中。例如,當(dāng)s中的數(shù)為7654321時(shí),t中的數(shù)為642.
void fun (long s,long *t)
{long s1=10;s/=10;*t=
s%10;while (s>0)
{s=s/100;*t=s%10*s1+*t;s1=s1*10;}}
39.?從低位開始取出長(zhǎng)整型變量s中奇數(shù)上的數(shù),依次構(gòu)成一個(gè)新數(shù)放在t中。例如,當(dāng)s中的數(shù)為7654321時(shí),t中的數(shù)為7531.
void fun (long s,long *t)
{long s1=10;*t=s%10;while (s>10)
{s=s/100;*t=s%10*s1+*t;s1=s1*10;}}
40.?將長(zhǎng)整型數(shù)中每一位上為奇數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。當(dāng)s中的數(shù)為87653142時(shí),t中數(shù)為7531.
void fun (long s,long *t){int?d;long s1=1;*t=0;
while(s>0){d=s%10;if(d%2!=0){*t=d*s1+*t;s1*=10
;}s/=10;}}
41.求出兩個(gè)數(shù)的最大公約數(shù),并作為函數(shù)值返回。例如,若給num1和num2輸入49和21,則輸出最大公約數(shù)為27.
int fun (int a,int b)
{int r,t;if(a<b){t=a;a=b;b=t;}r=a%b;
while (r!=0){a=b;b=r;r=a%b;}return (b);}?
42.求三個(gè)數(shù)的最小公倍數(shù)。例如,給變量x1、x2、x3分別輸入15,11,2,則輸出結(jié)果應(yīng)當(dāng)是330.
fun (int x,int y,int z)
{int j,t,n,m;j=1;t=j%x;m=j%y;n=j%z;
while (t!=0||m!=0||n!=0)
{j=j+1;t=j%x;m=j%y;n=j%z;}return j;}
43.求廣義斐波那契數(shù)的第n項(xiàng)。1,1,1,3,5,9,17,31,……項(xiàng)值通過(guò)函數(shù)值返回main函數(shù)。例如,若n=15,則應(yīng)輸出:2209.
long fun (int n)
{long a=1,b=1,c=1,
d=1,k;for (k=4;k<=n;k++)
{d=a+b+c;a=b;b=c;c=d;}return d;}
44.用遞歸算法斐波那契級(jí)數(shù)列中第n項(xiàng)的值從第1項(xiàng)起,斐波那契級(jí)數(shù)序列為1,1,1,2,3,5,8,13,21…例如,若給n輸入7,該項(xiàng)的斐波那契級(jí)數(shù)值為13.
long fun (int g)
{switch (g){case 0:return 0;switch(g) case1:case 2:return1;}return (fun (g-1)+fun (g-2));}
45.統(tǒng)計(jì)一個(gè)無(wú)符號(hào)整數(shù)中各位數(shù)字值為零的個(gè)數(shù),通過(guò)形參傳回主函數(shù);并把該整數(shù)中各位上最大的數(shù)值作為函數(shù)值返回。例如,若輸入無(wú)符號(hào)整數(shù)30800,則數(shù)字值為零的數(shù)為3,各位上數(shù)字值最大的是8.
int fun (unsigned n,int *zero)
{int count=0,max=0,t;
do {t=t%10;if(t==0)
count++;if(max<t)max =t;n=n/10;}while (n);*zero=count;return max;}
46.從3個(gè)紅球,5個(gè)白球,6個(gè)黑球中任意取出8個(gè)作為一組,進(jìn)行輸出。在每組中,可以沒有黑球,但必須要有紅球和白球。組合數(shù)作為函數(shù)值返回。正確的組合數(shù)應(yīng)該是15.程序中i的值代表紅球數(shù),j的值代表白球數(shù),k的值代表黑球數(shù)。
int fun()
{int i,j,k,sum=0;
printf(“\nTheresult :\n\n”);for (i=1;i<=3;i++)
{for (j=1;j<=5;j++)
{k=8-i-j;if ((k>=1&&k<=6}&&(i!=0)&&(j!=0)|| (k==0)){sum=sum+1;
Printf (“red:%4d white:%4d black:%4d\n”,I,j,k);}}} return sum;}
47.求整數(shù)x的y次方的低3位值。例如,整數(shù)5的6次方為15625,此值的低3為值為625.
long fun (int x,int y,long *p)
{int i; long t=1;for (i=1;i<=y;i++)t=t*x;*p=t;t=t%1000;return t;}
48.根據(jù)輸入的3個(gè)邊長(zhǎng)(整數(shù)值),判斷能否構(gòu)成三角形:若能構(gòu)成三角形則返回l,若不能,則返回0。
int fun(int a,int b,int c)
{if (a+b>c&&b+c>a&&
a+c>b){if (a==b&&b==c)
return 3;else if (a==b||b==c||a==c)return 2;else return1;?}else return 0;}
49.為一個(gè)偶數(shù)尋找兩個(gè)素?cái)?shù),這兩個(gè)素?cái)?shù)之和等于該偶數(shù),并將這兩個(gè)素?cái)?shù)通過(guò)形參指針傳回主函數(shù)。
void fun (int a,int *b,int*c)
{inti,j,d,y;for (i=3;i<=a/2;i=i+2){y=1;for(j=2;j<=sprt ((double)i);j++)
if (i%j==0)y=0;if(y==1){d=a-i;for (j=2;j<=sprt
((double)d);j++)
if(d%j==0)y=0;if (y==1){*b=i;*c=d;}}}}
50.找到一個(gè)大于給定整數(shù)m且緊隨m的素?cái)?shù),并作為函數(shù)值返回。
int fun(int m)
{int i,k;for (i=m+1;;i++)
{for(k=2;k<i;k++)if (i%k==0)break;if (k>=i)return (i);}}
51.求輸入的兩個(gè)數(shù)中較小的數(shù)。例如:輸入5 10,結(jié)果為min is 5.
int fun(int x,int y)
{int z;z=x<y?x:y;return 0;}
52.判斷一個(gè)整數(shù)m是否是素?cái)?shù),若是返回1,否則返回0.
int fun (int m)
{intk=2;while (k<=m&&(m%k)) k++;
if(m==k)return1;else return 0;}
53.將十進(jìn)制正整數(shù)m轉(zhuǎn)換成k(2≤k≤9)進(jìn)制數(shù),并按位輸出。例如,若輸入8和2,則應(yīng)輸出1000。
fun (int m,int k)
{int aa[20],i;
for (i=0;m;i++)
{aa[i]=m%k;m/=k;}
for (;i;i--)
printf(“%d”,aa[i-1]);}?
54.把輸入的十進(jìn)制數(shù)以十六進(jìn)制數(shù)的形式輸出。
main ()
{charb[17]={“0123456789ABCDEF”};
int c[64] ,d,i=0,base=16;long n;
printf(“Enter a number:\n”);scanf(“%ld”,&n);do{c[i]=n%base;i++;n=n/base;}
while (n!=0);printf (“Transmite new base:\n”) for (--i;i>=0;--i)
{d=c[i];printf(“%c”,b[d]);}printf(“\n”);}
55.將一個(gè)由八進(jìn)制數(shù)字字符組成的字符串轉(zhuǎn)換為與其面值相等的十進(jìn)制整數(shù)。若輸入77777,則輸入出是32767.
int fun(char *p)
{int n;n=*p-‘0’;p++;
while(*p!=0){n=n*8+*p-‘0’;p++;}return (n);}
56.計(jì)算證整數(shù)num的各位上的數(shù)字之積。例如,若輸入253,則輸出應(yīng)該是20.
long fun (long num)
{long k=1;do {k*=num%10;mum/=10;}while (num);return (k);}
57.計(jì)算并輸出high以內(nèi)最大的10個(gè)素?cái)?shù)之和。若high的值為100,則函數(shù)的值為732.
int fun (int high)
{int sum=0,n=0,j,yes;
while ((high>=2)&&
(n<10)){yes =1;for (j=2;
j<=high /2;j++)
if (high%j==0){yes=0;
break;}if(yes){sum+=high;n++;}high--;}return sum;}
58.從整數(shù)1到55之間,選出能被3整除、且有一位上的數(shù)是5的那些數(shù),并把這些數(shù)放在b所指的數(shù)組中,這些數(shù)的個(gè)數(shù)作為函數(shù)值返回。規(guī)定,函數(shù)中a1放個(gè)位數(shù),a2放十位數(shù)。
fun (int *b)
{intk,a1,a2,i=0;for(k=10;k<55;k++){a2=k/10;a1=k-a2*10;
if ((k%3==0&&a2==5)||
(k%3==0&&a1==5)){b[i]=k;i++;}}return i;}?
59.把主函數(shù)中輸入的3個(gè)數(shù),最大的放在a中,最小的放在c中。例如,輸入的數(shù)為:55 12 34,輸出結(jié)果應(yīng)當(dāng)是:a=55.0,b=34.0,c=12.0.
void fun (float *p,float *q,float *s)
{float *k;if (*p>*q){*k=*p;*p=*q;*q=*k;}if (*s>*p){*k=*s;
*s=*p;*p=*k;}if(*q>*p)
{*k=*q;*q=*p;*p=*k;}}
60.計(jì)算n的5次方的值,通過(guò)形參指針傳回主函數(shù);計(jì)算該值的個(gè)位、十位、百位上數(shù)字之和作為函數(shù)值返回。如,7的5次方是16807,其低3位數(shù)的和值是15.
int fun(int n,int *value)
{intd,s,i;d=1;s=0;for (i=1;i<=5;i++)d=d*n;*value=d;
for (i=1;i<=5;i++)
{s=s+d%10;d=d/10;}return s;}
61.求兩個(gè)形參的乘積和商數(shù),并通過(guò)形參返回調(diào)用程序。例如輸入:61.82和12.65,輸出為:c=782.023000,d=4.886957.
void fun (double a,double b,double *x,double *y){*x=a*b;*y=a/b;}
62.輸入兩個(gè)雙精度數(shù),函數(shù)返回它們的平方和的平方根值。例如:輸入:22.936和14.121,輸出為:y=26.934415.
double fun (double *a,double *b)
{double c;
c=sqrt((*a)*(*a)+(*b)*
(*b));return c;}
63.求二分之一的圓面積,函數(shù)通過(guò)形參得到圓的半徑,函數(shù)返回二分之一的圓面積。例如輸入圓的半徑值:19.527 輸出為:s=598.950017.
float fun (float r){return 3.14159*r*r/2;}
64.判斷兩個(gè)指針?biāo)复鎯?chǔ)單元中的值的符號(hào)是否相同;若相同函數(shù)返回1,否則返回0.這兩個(gè)存儲(chǔ)單元中的值都不為0.
fun ?(double *a,double *b)
{if(*a**b>0.0)return 1;else return 0;}
65.求兩數(shù)平方根之和,作為函數(shù)值返回。例如,輸入12和20,輸出結(jié)果是:y=7.936238.
double fun (double *a,double *b)
{double c;c=sqrt(*a)+sqrt (*b);return c;}
66.判斷兩個(gè)整數(shù)m和n是否互質(zhì)(既是否有公共的因子)(m≠1,n≠1).方法是:用2到t(t取m和n中較小的那個(gè)數(shù))之間的數(shù)分別去除m和n,若m和n能同時(shí)被某個(gè)數(shù)除盡,則m和n不互質(zhì);否則它們互質(zhì)。例如,若輸入187和85,則應(yīng)輸出N0(表示它們不互質(zhì),它們有公因子17)。若輸入89和187,則應(yīng)輸出Yes(表示它們互質(zhì))。
int IsThat(int m,int n)
{int k,t,mk=1;t=m;if (m>n)t=n;for (k=2;k<=t;k++)
if (m%k==0&&n%k==0)
{mk=0;break;}return (mk);}
main ()
{int m,n;clrscr();printf (“\nPlease enter 2 number:\n”)scanf (“^%d %d”,&m,&n);
if (IsThat(m,n)) printf (“Yes\n”);else printf (“No\n”);}
67.判斷一個(gè)整數(shù)m是否是素?cái)?shù),若是返回1,否則返回0.
int fun (int m)
{intk=2;while (k<=m&&(m%k))k++;if (m==k)return 1;else return 0;}
68.求兩個(gè)形參的乘積和商數(shù),并通過(guò)形參返回調(diào)用程序。例如輸入:61.82和12.65,輸出為:c=782.023,d=4.886957.
void fun (double a,double b,double*x,double*y){*x=a*b;*y=a/b;