1整型、实型1.1实型四舍五入请编一个函数fun,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入(规定实型数为正数)。
例如:实型数为1234.567, 则函数返回1234.57;实型数为1234.564, 则函数返回1234.56。
注意: 部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>int NONO(void);float fun ( float h ) {}int main(void) {float a;printf ("Enter a: ");scanf ( "%f", &a );printf ( "The original data is : " );printf ( "%f \n\n", a );printf ( "The result : %f\n", fun ( a ) );NONO( );return 1;}int NONO(void) {/* 请在此函数内打开文件,输入测试数据,调用fun 函数,输出数据,关闭文件。
*/ int i ;float a ;FILE *rf, *wf ;rf = fopen("./05/in.dat","r") ;wf = fopen("./05/out.dat","w") ;for(i = 0 ; i < 20 ; i++) {fscanf(rf, "%f", &a) ;fprintf(wf, "%f\n", fun(a)) ;}fclose(rf) ;fclose(wf) ;return 1;}答案1:long i=h*1000;if(i%10<5)return (i/10)/100.0;elsereturn (i/10+1)/100.0;答案2:long temp=a*1000,temp2;temp2=temp/10;temp=temp%10;float result; //被除数定义成float if(temp>4)result=temp2+1;elseresult=temp2;return result/100;1.2根据公式求圆周率#include <stdio.h>#include <math.h>double fun ( double eps) {}main( ) {double x;printf("Input eps:") ;scanf("%lf",&x);printf("\neps = %lf, PI=%lf\n", x, fun(x));NONO();}NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/ FILE *fp, *wf ;int i ;double x ;fp = fopen("c:\\test\\in.dat","r") ;wf = fopen("c:\\test\\out.dat","w") ;for(i = 0 ; i < 10 ; i++) {fscanf(fp, "%lf", &x) ;fprintf(wf, "%lf\n", fun(x)) ;}fclose(fp) ;fclose(wf) ;}答案1:double i=1,a=1,b=1,c=1,s=0;while(c>=eps) {s+=c;a*=i;b*=2*i+1;c=a/b;i++;}return s*2;答案2:double n=1.0,m,s1,s2;m=2*n+1;s1=n;s2=m;double temp=s1/s2,sum=0.0;while(temp>=eps){sum+=temp;n+=1;m+=2;s1*=n;s2*=m;temp=s1/s2;}return (sum+1)*2;1.3求阶乘#include <stdio.h>float fun(int m, int n) {}int main(void) /* 主函数*/ {printf("P=%f\n", fun (12,8));//NONO();return 1;}int NONO (void) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/ FILE *fp, *wf ;int i, m, n ;float s;fp = fopen("c:\\test\\in.dat","r") ;wf = fopen("c:\\test\\out.dat","w") ;for(i = 0 ; i < 10 ; i++) {fscanf(fp, "%d,%d", &m, &n) ;s = fun(m, n) ;fprintf(wf, "%f\n", s) ;}fclose(fp) ;fclose(wf) ;return 1;}答案:float result;int x,y,z,o=1,p=1,q=1;for(x=1;x<=m;x++){o=o*x;}for(y=1;y<=n;y++){p=p*y;for(z=1;z<=m-n;z++){q=q*z;}result=o/(p*q);return result;尝试建立一个专门求阶乘的函数。
1.4求公式#include <stdio.h>double fun( int n ) {}int main(void) /* 主函数*/ {printf("%f\n", fun(10));//NONO();return 1;}int NONO (void) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/ FILE *fp, *wf ;int i, n ;double s ;fp = fopen("c:\\test\\in.dat","r") ;wf = fopen("c:\\test\\out.dat","w") ;for(i = 0 ; i < 10 ; i++) {fscanf(fp, "%d", &n) ;s = fun(n) ;fprintf(wf, "%f\n", s) ;}fclose(fp) ;fclose(wf) ;return 1;}int i;double m,sum=0.0;for(i=1;i<=n;i++){m=i*(i+1);sum+=1/m;}return sum;1.5整数分解函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。
合并的方式是:将a中的十位和个位数依次放在变量c的十位和千位上,b中的十位和个位数依次放在变量c的个位和百位上。
例如,当a=45,b=12。
调用该函数后,c=5241。
注意: 部分源程序存在文件PROG1.C中。
数据文件IN.DAT 中的数据不得修改。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>void NONO(void);long fun(int a, int b) {}int main(void) {int a,b;long c;printf("Input a, b:");scanf("%d%d", &a, &b);c=fun(a, b);printf("The result is: %ld\n", c);NONO();return 0;}void NONO (void) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/FILE *rf, *wf ;int i, a,b ;long c ;rf = fopen("./44/in.dat","r") ;wf = fopen("./44/out.dat","w") ;for(i = 0 ; i < 10 ; i++) {fscanf(rf, "%d,%d", &a, &b) ;fun(a, b, &c) ;fprintf(wf, "a=%d,b=%d,c=%ld\n", a, b, c) ;}fclose(rf) ;fclose(wf) ;}答案:long i1=(a%10)*1000;printf("aa=%d,bb=%d",b%10,b/10);long i2=(b%10)*100;long i3=a/10*10;long i4=b/10;//return a%10*1000+b%10*100+a/10*10+b/10; return i1+i2+i3+i4;1.6数学公式#include <stdio.h>/************found************/fun(int m){double y = 0, d;int i ;/************found************/for( i = 100;i < m;i += 100 ) {d = (double)i * (double)i ;y += 1.0 / d ;}return (y);}main( ) {int n = 2000 ;printf( "\nThe result is %lf\n", fun ( n ) ) ;}答案:double fun ( int m ) {for( i = 100;i <=m;i += 100 ) {1.7数学公式修正:当k=1时,第一项为4/1*3#include <stdio.h>#include <math.h>float fun(int k){}main ( ) {printf("%f\n", fun (10));}答案1: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;改错:int i;float sum=1.0;for(i=2;i<=k;i++){sum*=(2*i * 2*i)/((2*i+1)*(2*i-1)); //注意数据类型}return sum;1.8最小公倍数给定程序MODI1.C中函数fun的功能是:求三个数的最小公倍数。