资源描述
第三十一套
请补充main函数,该函数的功能是:求n!。
例如,7!=5040。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
void main()
{
int I,n;
long f=1;
system("CLS");
printf("Input n: ");
scanf("%d",【1】);
for(【2】;I<=n;I++)
【3】;
printf("%d!=%ld\n",n,f);
}
【参考答案】
(1) &n (2) i=1或i=2 (3) f*=i
下列给定程序中,函数fun的功能是:求表达式s=aa…aa-…-aa-aa-a(此处aa…aa表示n个a,a和n的值在1至9之间)的值。例如a=3,n=6,则以上表达式为:
s=333333-33333-3333-333-33-3
其值是296298。a和n是函数fun的形参,表达式的值作为函数值传回main函数。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include <conio.h>
#include <stdio.h>
long fun(int a,int n)
{
int j;
/*************found**************/
long s=0,t=1;
/*************found**************/
for(j=0;j<=n;j++)
t=t*10+a;
s=t;
for(j=1;j<n;j++)
{
/*************found**************/
t=t%10;
s=s-t;
}
return(s);
}
main()
{
int a,n;
printf("\nPlease enter a and n: ");
scanf("%d%d",&a,&n);
printf("\nThe value of function is %ld\n", fun(a,n));
}
【参考答案】
(1)错误:long s=0,t=1; 正确:long s=0, t=0;
(2)错误:for (j=0;j<=n;j++)
正确:for (j=0;j<n;j++)
(3)错误:t=t%10; 正确:t=t/10;
请编写函数fun,其功能是计算并输出如下多项式的值:
Sn=l+1/1!+1/2!+1/3!+1/4!+…+1/n!
例如,若主函数从键盘给n输入15,则输出为S=2.718282。
注意:n的值要求大于1但不大于100。部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include <stdio.h>
double fun(int n)
{
}
void main()
{
int n;
double s;
FILE *out;
printf("\nInput n: ");
scanf("%d",&n);
s=fun(n);
printf("s=%f\n",s);
/******************************/
out=fopen("out.dat","w");
fprintf(out,"%f\n",fun(n));
fclose(out);
/******************************/
}
【参考答案】
double fun(int n)
{
double t,sn=1.0;
int i,j;
for(i=1;i<=n;i++)
{
t=1.0;
for(j=1;j<=i;j++)
t*=j;
sn+=1.0/t;
}
return sn;
}
第三十二套
请补允函数fun,该函数的功能是:计算并输出下列多项式的值。
例如,若主函数从键盘给n输入50后,则输出为S=1.960784。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填若干表达式或语句。
试题程序:
#include <stdio.h>
【1】 fun(int n)
{
int i,j;
double sum=0.0,t;
for(i=1;i<=n;i++)
{
t=0.0;
for(j=1;j<=i;j++)
t+=【2】;
sum+=【3】;
}
return sum;
}
void main()
{
int n;
double s;
printf("\nInput n: ");
scanf("%d",&n);
s=fun(n);
printf("\n\ns=%f\n\n",s);
}
【参考答案】
(1) double (2) j (3)1.0/t或(double)1/t
下列给定程序中,函数fun的功能是:根据整型形参m,计算如下公式的值。
例如,若m的值为5,则应输出:1.463611。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include <conio.h>
#include <stdio.h>
double fun (int m)
{ double y=1.0;
int i;
/*************found**************/
for(i=2;i<m;i++)
/*************found**************/
y+=1/(i*i);
return (y);
}
void main()
{ int n=5;
system("CLS");
printf("\nThe result is %1f\n",fun(n));
}
【参考答案】
(1)错误:for (i=2;i<m;i++)
正确:for(i=2;i<=m;i++)
(2)错误:y+=1/(i*i) ;
正确:y+=1.0/(i*i) ;
请编写函数fun,该函数的功能是:计算并输出
S=1+(1+20.5)+(1+20.5+30.5)+…+(1+20.5+30.5+…+n0.5)
例如,若主函数从键盘给n输入20后,则输出为S=534.188884。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<math.h>
#include<stdio.h>
double fun(int n)
{
}
void main()
{
FILE *wf;
int n;
double s;
printf("\n\nInput n: ");
scanf("%d",&n);
s=fun(n);
printf("\n\ns=%f\n\n",s);
/******************************/
wf=fopen("out.dat","w");
fprintf(wf,"%f",fun(20));
fclose(wf);
/*****************************/
}
【参考答案】
double fun(int n)
{
int i;
double s=0.0,s1=0.0;
for(i=1;i<=n;i++)
{
s1=s1+pow(i,0.5);
/*求每一项*/
s=s+s1;
/*按公式求出s*/
}
return s;
}
第三十三套
程序的功能是计算。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。
试题程序:
#include <stdio.h>
long fun(int n)
{
int I;
long s;
s=【1】;
for(I=1;I<=n;I++)
s=【2】;
return s;
}
void main()
{
long s;
int k,n;
scanf("%d",&n);
s=【3】;
for(k=0;k<=n;k++)
s=【4】;
printf("%ld\n",s);
}
【参考答案】
(1) 1 (2) s*i或i*s (3) 0 (4) s+fun(k)
数列中,第一项为3,后一项都比前一项的值增5。下列给定程序中,函数fun的功能是:计算前项的累计和。在累加过程中把那些被4除后余2的当前累加值放入数组中,符合此条件的累加值的个数作为函数值返回主函数里。如当n的值为20时,该数列为3,8,13,18,23,28,…,93,98。符合此条件的累加值应为42,126,366,570,1010。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include <stdio.h>
#define N 20
int fun(int n, int *a)
/*************found**************/
{ int I,j,k,sum;
sum=0;
for(k=3,I=0;I<n;I++,k+=5)
{ sum=sum+k;
/*************found**************/
if(sum%4=2)
a[j++]=sum;
}
/*************found**************/
return j;
}
void main()
{int a[N],d,n,i;
printf("\nEnter n(4<=n<=50): ");
scanf("%d",&n);
d=fun(n,a);
printf("\n\nThe result :\n ");
for(i=0;i<d;i++) printf("%6d ",a[i]);
printf("\n\n ");
}
【参考答案】
(1)错误:int i,j,k,sum; 正确:int i,j=0,k,sum;
(2)错误:if(sum%4=2) 正确:if(sum%4==2)
(3)错误:return j; 正确:return j++;
请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的值不大于1000。
例如,若主函数从键盘给n输入的值为856,则输出m为sum=763。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include <stdio.h>
int fun(int n)
{
}
void main()
{
int n,sum;
FILE *out;
printf("Input n:");
scanf("%d", &n);
sum=fun(n);
printf("sum=%d\n", sum);
/******************************/
out=fopen("out.dat","w");
fprintf(out,"%d\n",fun(123));
fprintf(out,"%d\n",fun(456));
fprintf(out,"%d\n",fun(789));
fprintf(out,"%d\n",fun(147));
fprintf(out,"%d",fun(258));
fclose(out);
/******************************/
}
【参考答案】
int fun(int n)
{
int s=0,i;
for(i=2;i<=n-1;i++)
/*将n减1累加*/
if(n%i==0)
s+=i;
return s;
}
第三十四套
请补充main函数,该函数的功能是:求1+2!+3!+…+N!的和。
例如,1+2!+3!+…+5!+6!的和为873。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include <stdlib.h>
#include <stdio.h>
void main()
{
int I, n;
long s=0, t=1;
system("CLS");
printf("\nInput n:\n");
scanf("%d",【1】);
for(I=1;I<=n;I++)
{
t=【2】;
s=【3】;
}
printf("1!+2!+3!...+%d!=%ld\n",n,s);
}
【参考答案】 (1) &n (2) t*i (3) s+t
下列给定程序中,函数fun的功能是:求S的值。设
S=(22/(1*3))*(42/(3*5))*(62/(5*7))*…*(2k)2/((2k-1)*(2k+1))
例如,当k为10时,函数的值应为1.533852。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
/*************found**************/
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++;
}
/*************found**************/
return s
}
void main()
{ system("CLS");
printf("%f\n ",fun(10));
}
【参考答案】
(1)错误:fun(int k) 正确:double fun(int k)
(2)错误:return s 正确:return s;
请编写函数fun,它的功能是:计算并输出n(包括n)以内所有能被5或9整除的自然数的倒数之和。
例如,若主函数从键盘给n输入20后,则输出为s= 0.583333。
注意:n的值要求不大于100。部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include <stdio.h>
double fun(int n)
{
}
main()
{
int n;
double s;
FILE *out;
printf("\nInput n:");
scanf("%d",&n);
s=fun(n);
printf("\n\ns=%f\n",s);
/******************************/
out=fopen("out.dat","w");
fprintf(out,"%f\n",fun(30));
fclose(out);
/******************************/
}
【参考答案】
double fun(int n)
{
int i;
double sum=0.0;
for(i=1;i<=n;i++)
if(i%5==0||i%9==0)
sum+=1.0/i;
return sum;
}
第三十五套
给定程序的功能是:计算并输出下列级数的前N项之和SN,直到SN大于q为止,q的值通过形参传入。
例如,若q的值为50.0,则函数值为50.416687。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include <stdio.h>
double fun(double q)
{
int n;
double s,t;
n=2;
s=2.0;
while(s【1】q)
{
s=s+(double)(n+1)/n;
【2】;
}
printf("n=%d\n ",n);
【3】;
}
void main()
{
printf("%f\n ",fun(50));
}
【参考答案】
(1)<=
(2)n++或n+=1或n=n+1
(3)return s 或 return(s)
下列给定程序中,函数fun的功能是:给定n个实数,输出平均值,并统计平均值以上(含平均值)的实数个数。例如,n=8时,输入193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763,所得平均值为195.838745,在平均值以上的实数个数应为5。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
int fun(float x[], int n)
/*************found**************/
int j, c=0; float xa=0.0;
for (j=0; j<n; j++)
xa+=x[j]/n;
printf("ave=%f\n",xa);
for (j=0; j<n;j++)
if(x[j]>=xa)
c++;
return c;
}
void main()
{ float x[100]={ 193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763};
system("CLS");
printf("%d\n",fun (x,8));
}
【参考答案】
(1)错误:缺{ 正确:加{
请编写函数fun,它的功能是:求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数,并将它们放在a所指的数组中,通过n返回这些数的个数。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
void fun(int *a,int *n)
{
}
void main( )
{
FILE *wf;
int aa[1000], n, k;
system("CLS");
fun(aa,&n);
for(k=0;k<n;k++)
if((k+1)%10==0)
{
printf("%5d ",aa[k]);
printf("\n"); /*一行写10个数*/
}
else
printf("%5d ",aa[k]);
/******************************/
wf=fopen("out.dat","w");
for(k=0;k<n;k++)
if((k+1)%10==0)
{
fprintf(wf,"%5d ",aa[k]);
fprintf(wf,"\n"); /*一行写10个数*/
}
else
fprintf(wf,"%5d ",aa[k]);
fclose(wf);
/*****************************/
}
【参考答案】
void fun(int *a,int *n)
{
int i,j=0;
for(i=1;i<=1000;i++) /*求1到1000之内能被7或11整除但不能同时被7和11整除的所有整数,并放入数组a中*/
if((i%7==0||i%11==0)&&i%77!=0)
a[j++]=i;
*n=j; /*传回满足条件的数的个数*/
}
第三十六套
请在函数fun的横线上填写若干表达式,使从键盘上输入一个整数n,输出n对应的斐波拉契数列。斐波拉契数列是一整数数列,该数列自第三项开始,每数等于前面两数之和,即0,1,1,2,3,5,8,13,21,34,55,…
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include <stdio.h>
int fun(int n);
void main()
{
int i,n=0;
scanf("%d",&n);
for(i=0;i<n;i++)
printf("%d ",fun(i));
}
int fun(int n)
{
if(【1】)
return 0;
else
if(【2】)
return 1;
else
return 【3】 ;
}
【参考答案】
(1) n==0 (2) n==1 (3) fun(n-1)+fun(n-2)
下列给定程序中,函数fun的功能是:根据整型形参n,计算如下公式的值。
A1=1,A2=1/(1+A1),A3=1/(1+A2),…,An=1/(1+A (n-1))
例如,若n=10,则应输出0.617977。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
/*************found**************/
int fun(int n)
{ float A=1;int I;
/*************found**************/
for(I=2;I<n;I++)
A=1.0/(1+A);
return A;
}
void main()
{ int n;
system("CLS");
printf("\nPlease enter n: ");
scanf("%d",&n);
printf("A%d=%lf\n",n,fun(n));
}
【参考答案】
(1)错误:int fun(int n)
正确:float fun(int n)
(2)错误:for(i=2;i<n;i++)
正确:for(i=2;i<=n;i++)
请编写函数fun,其功能是:将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位依次放在c数的千位和十位上,b数的十位和个位依次放在c数的个位和百位上。
例如,当a=45,b=12,调用该函数后,c=4251。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include <stdio.h>
#include <conio.h>
void fun(int a ,int b,long *c)
{
}
void main()
{
int a,b;
long c;
FILE *out;
printf("Input a ,b: ");
scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("The result is :%1d\n",c);
/******************************/
out=fopen("out.dat","w");
fun(44,55,&c);
fprintf(out,"%1d\n",c);
fclose(out);
/******************************/
}
【参考答案】
void fun(int a,int b,long *c)
{
*c=(a/10)*1000+(b%10)*100+(a%10)*10+b/10;
}
第三十七套
请补充函数fun,该函数的功能是:把从键盘输入的3个整数按从小到大输出。
例如,输入"33 78 25",结果输出"25 33 78"。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
void main()
{
int x,y,z,t;
system("CLS");
printf("Input x,y,z\n");
scanf("%d%d%d",&x,&y,&z);
if(【1】)
{
t=x;
x=y;
y=t;
}/*交换x,y的值*/
if(【2】)
{
t=z;
z=x;
x=t;
}/*交换x,z的值*/
if(【3】)
{
t=y;
y=z;
z=t;
}/*交换z,y的值*/
printf("******the result*******\n");
printf("from small to big:%d %d %d\n",x,y,z);
}
【参考答案】
(1) x>y (2) x>z (3) y>z
下列给定程序中,函数fun的功能是:找出100到n(不大于1000)之间三个位上的数字都相等的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。
请改正函数fun中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include <stdio.h>
#define N 100
展开阅读全文