c语言上机试题1数学计算Word下载.docx
《c语言上机试题1数学计算Word下载.docx》由会员分享,可在线阅读,更多相关《c语言上机试题1数学计算Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
for(i=0;
i<
20;
i++){
fscanf(rf,"
a);
fprintf(wf,"
%f\n"
fun(a));
}
fclose(rf);
fclose(wf);
答案1:
longi=h*1000;
if(i%10<
5)
return(i/10)/100.0;
else
return(i/10+1)/100.0;
答案2:
longtemp=a*1000,temp2;
temp2=temp/10;
temp=temp%10;
floatresult;
//被除数定义成float
if(temp>
4)
result=temp2+1;
result=temp2;
returnresult/100;
1.2根据公式求圆周率
#include<
math.h>
doublefun(doubleeps){
}
main(){
doublex;
printf("
Inputeps:
"
scanf("
%lf"
&
x);
printf("
\neps=%lf,PI=%lf\n"
x,fun(x));
NONO();
NONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*fp,*wf;
doublex;
fp=fopen("
c:
\\test\\in.dat"
wf=fopen("
\\test\\out.dat"
for(i=0;
10;
i++){
fscanf(fp,"
x);
%lf\n"
fun(x));
fclose(fp);
doublei=1,a=1,b=1,c=1,s=0;
while(c>
=eps){
s+=c;
a*=i;
b*=2*i+1;
c=a/b;
i++;
returns*2;
doublen=1.0,m,s1,s2;
m=2*n+1;
s1=n;
s2=m;
doubletemp=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求阶乘
floatfun(intm,intn){
intmain(void)/*主函数*/{
P=%f\n"
fun(12,8));
//NONO();
intNONO(void){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
inti,m,n;
floats;
fscanf(fp,"
%d,%d"
m,&
n);
s=fun(m,n);
s);
答案:
floatresult;
intx,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);
returnresult;
尝试建立一个专门求阶乘的函数。
1.4求公式
doublefun(intn){
fun(10));
inti,n;
doubles;
%d"
s=fun(n);
fprintf(wf,"
fclose(fp);
inti;
doublem,sum=0.0;
for(i=1;
i<
i++){
m=i*(i+1);
sum+=1/m;
returnsum;
1.5整数分解
函数fun的功能是:
将a、b中的两个两位正整数合并形成一个新的整数放在c中。
合并的方式是:
将a中的十位和个位数依次放在变量c的十位和千位上,b中的十位和个位数依次放在变量c的个位和百位上。
例如,当a=45,b=12。
调用该函数后,c=5241。
部分源程序存在文件PROG1.C中。
数据文件IN.DAT中的数据不得修改。
voidNONO(void);
longfun(inta,intb){
inta,b;
longc;
Inputa,b:
scanf("
%d%d"
a,&
b);
c=fun(a,b);
Theresultis:
%ld\n"
c);
return0;
voidNONO(void){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
inti,a,b;
longc;
./44/in.dat"
./44/out.dat"
b);
fun(a,b,&
c);
a=%d,b=%d,c=%ld\n"
a,b,c);
longi1=(a%10)*1000;
aa=%d,bb=%d"
b%10,b/10);
longi2=(b%10)*100;
longi3=a/10*10;
longi4=b/10;
//returna%10*1000+b%10*100+a/10*10+b/10;
returni1+i2+i3+i4;
1.6数学公式
/************found************/
fun(intm){
doubley=0,d;
inti;
for(i=100;
i<
m;
i+=100){
d=(double)i*(double)i;
y+=1.0/d;
return(y);
intn=2000;
printf("
\nTheresultis%lf\n"
fun(n));
doublefun(intm){
i+=100){
1.7数学公式
修正:
当k=1时,第一项为4/1*3
floatfun(intk){
main(){
fun(10));
intn;
floats,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++;
returns;
改错:
floatsum=1.0;
for(i=2;
=k;
sum*=(2*i*2*i)/((2*i+1)*(2*i-1));
//注意数据类型
1.8最小公倍数
给定程序MODI1.C中函数fun的功能是:
求三个数的最小公倍数。
例如,给主函数中的变量x1、x2、x3分别输入15112,则输出结果应当是:
330。
请改正程序中的错误,使它能得出正确结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
/************found************/
fun(intx,y,z){
intj,t,n,m;
j=1;
t=j%x;
m=j%y;
n=j%z;
while(t!
=0||m!
=0||n!
=0){
j=j+1;
m=j%y;
returni;
intx1,x2,x3,j;
Inputx1x2x3:
%d%d%d"
x1,&
x2,&
x3);
x1=%d,x2=%d,x3=%d\n"
x1,x2,x3);
j=fun(x1,x2,x3);
Theminimalcommonmultipleis:
%d\n"
j);
intfun(intx,inty,intz){
returnj;
编程:
//求三个数的最大数
intmax(intx,inty,intz){
//求三个数最小公倍数
intfun(intx,inty,intz){
inttemp;
if(x>
y)temp=x;
elsetemp=y;
if(temp>
z)returntemp;
elsereturnz;
inttemp=max(x,y,z);
intresult=temp;
while
(1){
if(result%x==0&
&
result%y==0&
result%z==0)returnresult;
result=result+temp;
1.9n!
改错
给定程序MODI1.C中函数fun的功能是:
计算n!
。
例如,给n输入5,则输出120.000000。
请改正程序中的错误,使程序能输出正确的结果。
不要改动main函数,不得增行或删行,也不得更改程序的结构!
doublefun(intn){
doubleresult=1.0;
ifn==0return1.0;
while(n>
1&
n<
170)
result*=n--
returnresult;
intn;
InputN:
\n\n%d!
=%lf\n\n"
n,fun(n));
if(n==0)return1.0;
result*=n--;
1.10数学公式
doublefun(intn){
intn=5;
\nThevalueoffunctionis:
%lf\n"
fun(n));
inta,b,c,k;
doubles;
s=0.0;
a=2;
b=1;
for(k=1;
k<
=n;
k++){
s=s+(double)a/b;
c=a;
a=a+b;
b=c;
1.11数列
已知一个数列从第0项开始的前三项分别为0,0,1,以后的各项都是其相邻的前三项之和。
给定程序MODI1.C中函数fun的功能是:
计算并输出该数列前n项的平方根之和。
n的值通过形参传入。
例如,当n=10时,程序的输出结果应为:
23.197745。
InputN="
n);
fun(n));
doublesum,s0,s1,s2,s;
intk;
sum=1.0;
if(n<
=2)sum=0.0;
s0=0.0;
s1=0.0;
s2=1.0;
for(k=4;
k++){
s=s0+s1+s2;
sum+=sqrt(s);
s0=s1;
s1=s2;
s2=s;
returnsum;
1.12数学公式
intfun(intn){
floatA=1;
for(i=2;
i<
n;
i++)A=1.0/(1+A);
returnA;
\nPleaseentern:
n);
A%d=%f\n"
n,fun(n));
floatfun(intn){
if(2<
=n)return1.0/(1+fun(n-1));
//递归
或:
i++)A=1.0/(1+A);
//另一种
1.13数学公式
根据整型形参m的值,计算如下公式的值。
doubley=1.0;
/**************found**************/
for(i=2;
m;
i++)
y-=1/(i*i);
return(y);
intn=5;
for(i=2;
i++)
y-=1.0/(i*i);
1.14数学公式
doublefun(doubleeps){
doubles,t;
intn=1;
s=0.0;
t=0;
while(t>
eps){
s+=t;
t=t*n/(2*n+1);
n++;
return(s);
main(){
doublex;
\nPleaseenteraprecision:
\neps=%lf,Pi=%lf\n\n"
x,fun(x));
t=1.0;
return(s*2);
1.15素数
找出一个大于形参m且紧随m的素数,并作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
intfun(intm){
inti,k;
for(i=m+1;
;
for(k=2;
i;
k++)
if(i%k!
=0)break;
/**************found**************/
if(k<
i)return(i);
voidmain(){
n=fun(20);
n=%d\n"
n);
if(i%k==0)break;
if(k==i)return(i);
1.16整数处理
从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。
高位仍在高位,低位仍在低位。
例如,当s中的数为:
7654321时,t中的数为:
642。
//voidfun(longs,longt){
voidfun(longs,long*t){
longsl=10;
s/=10;
*t=s%10;
//while(s<
0){
while(s>
0){
s=s/100;
*t=s%10*sl+*t;
sl=sl*10;
main(){
longs,t;
\nPleaseenters:
%ld"
s);
fun(s,&
t);
t);
1.17自然数
计算小于形参k的最大的10个能被13或17整除的自然数之和。
k的值由主函数传入,若k的值为500,则函数值为4622。
intfun(intk){
intm=0,mc=0,j;
while((k>
=2)&
(mc<
10)){
if((k%13=0)||(k%17=0)){
m=m+k;
mc