《C语言程序设计函数练习题及参考答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计函数练习题及参考答案.docx(53页珍藏版)》请在第一文库网上搜索。
1、C语言程序设计练习题及参考答案1、定义一个函数int fun(int a, int b, int c),它的功能是:若a, b, c能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。include int fun(int a, int b, int c)(if(a+bc & bca & a+cb)(if(a=b & b=c )return 3;else if (a-b b-c a=c)return 2;else return 1;)else return 0;)void main()(int a, b, c, shape;pri
2、ntf (z,Tnput a, b, c: );scanf (%d%d%d”, &a, &b, &c);printf (na=%d, b=%d, c=%dn”, a, b, c);shape =fun(a, b, c);printf (z,nnThe shape : %dz, shape);2、编写一个程序,将两个变量的值交换,例如变量a中的值原为3, b中的值原为8,程序运行后a中的值为8, b中的值为3。include void fun(int *x, int *y)int t;t=*x;*x=*y;*y=t)void main()int a=3,b=8;printf (,%d %dz,
3、a, b);fun (&a, b);printf (,%d %dn”, a, b);3、从键盘输入3个数,将最大值放在变量a中,最小值放在变量c中。例如,输入的数为:551234,输出结果应当是:a=55.0, b=34. 0, c=12. 0oinclude void fun(float *p, float *q, float *s)(float k;if (*p*q)k=*p;*p=*q;*q=k;if (*q*s)k=*s;*s=*p;*p=k;if (*p*q) k=*p;*p=*q;*q=k;)void main() float a, b, c;printf (z,Input a b
4、 c: ); scanf (z,%f%f%fz,, &a, &b, &c);printf (zza=%4. If, b=%4. If, c=%4. lfnnzz, a, b, c);fun(&a, &b, &c);printf (z,a=%4. If, b=%4. If, c=%4. lfnz, a, b, c);4、编写函数fun(intn),它的功能是:计算正整数n的所有因子(1和n除外)之和作为函数值返回。例如:n=120时,函数值为239。ttinclude include int fun(int n)(int i,s=0;for (i=2;in;i+)if (n%i=0) s=s+i
5、;return s;)void main()*主函数*(void NONO();printf (z,%dn/z, fun (120);NONO ();)void N0N0()*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE *wf;wf = fopen(,a30, out, w);fprintf (wf, ,/%dn, fun (120);fclose(wf);5、计算s,并输出1S = 1 + + + + 1+21+2+3l+2+3+nn通过键盘输入,例如:若n的值为11时,则函数值为:1.833333include include float fun(
6、int n)int i;float s=l. 0, h=l;for (i=2;i=n;i+)(h=h+i; s=s+l.0/h;return s;)void main()(int n;float s;printf (z,nPlase enter N: ); scanf (%d, &n);s=fun(n);printf (,the results);6、将一个整数中的每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:87653142时,t中的数为:7531。ttinclude void fun (long s,long *t)int d;long
7、sl=l;*t=0;while (s0)(d=s%10;if(d%2!=0)(*t=d*sl+*t;sl=sl*10;)s/=10;main()(long s, t;printf (z,Please enter s:);scanf (ld,&s);fun (s, &t);printf (,zThe result is:%ldnz,, t);7、计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值从键盘传入,若k的值为500,则输出4622。ttinclude int fun(int k)(int m=0,mc-0,j;while(k=l)&(mc10)(if (k%13 = 0)
8、 (k%17 = 0)(m=m+k;mc+;)k一;)return m;)void main()printf (z,%dn, fun (500);8、已知一个数列的前三项分别为3 0, 1,以后的各项都是其相邻的前三项之和,计算并输出该数列前n项的平方根之和sum。例如,当n=10时,程序的输出结果应为:23. 197745oinclude itinclude double fun(n)(double sum, s, si, s2, s;int k;sum =1.0;if (n = 2) sum = 0. 0;s = 0. 0; si = 0. 0; s2 = 1. 0;for (k = 4;
9、 k = n; k+) s - s si + s2;sum += sqrt (s);s = si; si = s2; s2 = s;)return sum;)void main ()(int n;printf (Input N二);scanf (,%d,z, &n);printf (,%fnz, fun(n);9、编写一个程序,从键盘输入m,输出大于m且紧随m的素数。include int fun(int m)int i, k;for (izzm+l; i+) for (k=2;k=i)return (i);)void main()(int n;printf(z,Plase enter n:)
10、;scanf (, &n);printf (dn,fun (n);10、判断两个整数m和n是否互质(即是否有公共的因子)(ml, nl) o方法是:用2到t (t取m和n中较小的那个数)之间的数分别去除m和n,若m和n能同时被某个数除尽,则川和n不互质;否则它们互质。例如,若输入如7和85,则应输出No (表示它们不互质,它们有公因子17)。若输入89和187,则应输出Yes (表示它们互质)。include int IsThat( int m, int n )int k, t, mk=l;t=m;if (mn) t=n;for (k=2;k=t;k+)if ( m%k=0 & n%k=0 )
11、 mk=0; break; return mk;)void main()(int m, n;printf ( nPlease enter 2 numbers:z,);scanf (/,%d %d,&m, &n);if ( IsThat( m, n )printf( Yesn);elseprintf ( zzNonz,);1k将十进制正整数m转换成k进制数(2k9)并输出(m, k从键盘输入)。例如,若输入8和2,则应输出1000 (即十进制数8转换成二进制表示是1000)。ttinclude void Trans ( int m, int k )(int aa20, i, j;for( i =
12、 0; m; i+ )(aa i = m%k;m /= k;)for( j=i-l; j=0; j)printf (,/%d, aaj);void main()(int b, n;printf ( zzPlease enter a number and a base:n );scanf (z/%d , &n, &b );Trans ( n, b );12、统计从键盘输入的50个实数中有多少个正数、多少个负数、多少个零include void fun(int *zs, int *fs, int *1, float aa)int i;for (i=0;i0)(*zs)+;if(aai0)(*fs)
13、+;if(aai=0)(*1)+;)void main()(float num50;int i, czs, cfs, cl;czs=cfs=cl=0;printf( nPlease enter 50 float numbers :n );for (i=0;i50;i+)scanf( u%fv ,&numi);fun (&czs, &cfs, &cl, num);printf (n 正数:%d,负数:d ,零:%d nz, czs, cfs, cl);13、计算并输出方程2+*=1989的所有整数解ttinclude void fun()(int x, y;for (x=l;x=44;x+)for (y=l;y=44;y+)if (x*x+y*y=1989)printf ( x=%d , y=%d n” , x, y);)void main()printf ( “方程/2+/2=1989 的整数解为:r );fun