c语言上机试题1(数学计算)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1整型、实型
1.1实型四舍五入
请编一个函数fun,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入(规定实型数为正数)。例如:实型数为 1234.567, 则函数返回1234.57;实型数为 1234.564, 则函数返回 1234.56。注意: 部分源程序存在文件PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
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;
else
return (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;
else
result=temp2;
return result/100;
1.2根据公式求圆周率
#include
#include
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
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;