份二C上机编程题正式版.docx
《份二C上机编程题正式版.docx》由会员分享,可在线阅读,更多相关《份二C上机编程题正式版.docx(79页珍藏版)》请在冰豆网上搜索。
份二C上机编程题正式版
A类数学表达式(1-10)
第1题、
编写函数fun,它的功能是:
根据以下公式求P的值,结果由函数值带回。
m与n为两个正整数且要求m>n。
m!
P=─────
n!
(m-n)!
例如:
m=12,n=8时,运行结果为495.000000。
#include
#include
floatfun(intm,intn)
{
}
main()
{
printf("P=%f\n",fun(12,8));
}
第2题、
编写函数fun,它的功能是:
利用以下所示的简单迭代方法求方程:
cos(x)-x=0的一个实根。
Xn+1=cos(Xn)迭代步骤如下:
(1)取x1初值为0.0;
(2)x0=x1,把x1的值赋给x0;
(3)x1=cos(x0),求出一个新的x1;
(4)若x0-x1的绝对值小于0.000001,执行步骤(5),否则执行步骤
(2);
(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。
程序将输出结果Root=0.739085。
#include
#include
#include
floatfun()
{
}
main()
{
printf("Root=%f\n",fun());
}
第3题、
编写函数fun,它的功能是:
求Fibonacci数列中大于t的最小的一个数,结果由函数返回。
其中Fibonacci数列F(n)的定义为:
F(0)=0,F
(1)=1
F(n)=F(n-1)+F(n-2)
例如:
当t=1000时,函数值为:
1597。
#include
#include
doublefun(intn)
{
}
main()/*主函数*/
{
printf("%f\n",fun(1000));
}
第4题、
编写函数fun,它的功能是:
根据以下公式计算s,计算结果通过形指针sn传回;s通过形参传入。
1111 (-1)^n
sn=──-──+──-──+ …… ────
1357 2n+1
例如:
若n的值为11时,输出的结果是:
S=0.764601N=11。
#include
#include
voidfun(float*sn,intn)
{
}
main()
{intn=11;floats;
fun(&s,n);
printf("S=%fN=%d\n",s,n);
}
第5题、
编写函数fun,它的功能是计算:
s=(In
(1)+In
(2)+In(3)+……+In(m))^0.5,s作为函数值返回。
在C语言中可调用log(n)函数求In(n)。
log函数的引用说明是:
doublelog(doublex)。
例如,若m的值为:
20,fun函数值为:
6.506583。
#include
#include
#include
doublefun(intm)
{
}
main()
{
printf("%f\n",fun(20));
}
第6题、
编写函数fun,它的功能是计算下列数级和,和值由函数值返回。
x^2x^3x^n
s=1+x+──+──+……+──
2!
3!
n!
例如,当n=10,x=0.3时,函数值为1.349859。
#include
#include
#include
doublefun(doublex,intn)
{
}
main()
{printf("%f\n",fun(0.3,10));
}
第7题、
编写函数fun,它的功能是:
计算并输出下列级数和:
111
s=───+───+……+─────
1×22×3n×(n+1)
例如,当n=10时,函数值为:
0.909091。
#include
#include
doublefun(intn)
{
}
main()/*主函数*/
{
printf("%f\n",fun(10));
}
第8题、
请编写一个函数fun,它的功能是:
根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):
π11×21×2×3 1×2×3×41×2×…×n
─=1+─+──+────+─────+……+────────
233×53×5×7 3×5×7×93×5×…×(2n+1)
程序运行后,如果输入精度0.0005,则程序输出为3.14…。
#include
#include
doublefun(doubleeps)
{
}
main()
{doublex;
printf("Inputeps:
");
scanf("%lf",&x);printf("\neps=%lf,PI=%lf\n",x,fun(x));
}
第9题、
请编写函数fun,其功能是:
计算并输出当x<0.97时下列多项式的值,直到|S(n)-S(n-1)|<0.000001为止。
S=1+0.5x+0.5(0.5-1)x2/2!
+……+0.5(0.5-1)(0.5-2)--------(0.5-n+1)xn/n!
例如,在主函数中从键盘给x输入0.21后,输出为:
s=1.100000。
#include
#include
doublefun(doublex)
{
}
main()
{doublex,s;
printf("Inputx:
");
scanf("%lf",&x);
s=fun(x);
printf("s=%f\n",s);
}
第10题、
请编写函数fun,其功能是:
计算并输出给定10个数的方差:
┌110┐0.5
S=│─∑(Xk-X')^2│
└10k=1┘
110
其中X'=─∑Xk
10k=1
例如,给定的10个数为95.0、89.0、76.0、65.0、88.0、72.0、85.0、81.0、90.0、56.0,输出为s=11.730729。
#include
#include
doublefun(doublex[10])
{
}
main()
{doubles,x[10]={95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0};
inti;
printf("\nTheoriginaldatais:
\n");
for(i=0;i<10;i++)printf("%6.1f",x[i]);printf("\n\n");
s=fun(x);
printf("s=%f\n\n",s);
}
B类数学的最大与最小值(1-4)
第1题、
请编写一个函数fun,它的功能是:
找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。
数组元素中的值已在主函数中赋予。
主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。
#include
#include
voidfun(inta[],intn,int*max,int*d)
{
}
main()
{inti,x[20],max,index,n=10;
for(i=0;iprintf("\n");
fun(x,n,&max,&index);
printf("Max=%5d,Index=%4d\n",max,index);
}
第2题、
请编写一个函数intfun(int*s,int*t,int*k),用来求出数组中值最大的元素在数组中的下标并存放在k所指的存储单元中,并且将最大值增添在数组的最后。
形参t所指存储单元中存放数组中数据的个数。
例如,数组中的数据如下:
876675896101301401980431451777
则输出最大值的下标为:
6,数组中的内容为:
876675896101301401980431451777980
#include
#defineN80
voidfun(int*s,int*t,int*k)
{
}main()
{inta[N]={876,675,896,101,301,401,980,431,451,777},i,n,mi;
n=10;
printf("\nTheoriginaldata:
\n");
for(i=0;ifun(a,&n,&mi);
printf("Theindexofmaxis:
%d\n",mi);
printf("Theresult:
\n");
for(i=0;i}
第3题、
请编一个函数voidfun(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。
二维数组中的数已在主函数中赋予。
#include
#include
#defineM3
#defineN4
voidfun(inttt[M][N],intpp[N])
{
}
main()
{intt[M][N]={{22,45,56,30},
{19,33,45,38},
{20,22,66,40}};
intp[N],i,j,k;
printf("Theoriginaldatais:
\n");
for(i=0;ifor(j=0;jprintf("%6d",t[i][j]);
printf("\n");
}
fun(t,p);
printf("\nTheresultis:
\n");
for(k=0;kprintf("\n");
}
第4题、
请编写一个函数intfun(int*s,intt,int*k),用来求出数组的最大元素在数组中的下标,用k返回。
例如,输入如下整数:
876675896101301401980431451777
则输出结果为:
6,980
#include
#include
intfun(int*s,intt,int*k)
{
}
main()
{
inta[10]={876,675,896,101,301,401,980,431,451,777},k;
fun(a,10,&k);
printf("%d,%d\n",k,a[k]);
}
C类二维数组行列下标(1-6)
第1题、
请编写函数fun,函数的功能是:
实现B=A+A',即把矩阵A加上A的转置,存放在矩阵B中。
计算结果在main函数中输出。
例如,输入下面的矩阵:
其转置矩阵为:
|123||147|
|456||258|
|789||369|
程序输出:
|2610|
|61014|
|101418|
#include
#include
voidfun(inta[3][3],intb[3][3])
{
}
main()
{inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3];
inti,j;
fun(a,t);
for(i=0;i<3;i++){
for(j=0;j<3;j++)
printf("%7d",t[i][j]);
printf("\n");
}
}
第2题、
程序定义了N×N的二维数组,并在主函数中自动赋值。
请编写函数fun(inta[][N]),函数的功能是:
使数组右上半三角元素中的值乘以m。
例如:
若m的值为2,a数组中的值为
|197|
a=|238|,则返回主程序后a数组中的值应为
|456|
|21814|
|2616|
|4512|
#include
#include
#include
#defineN5
intfun(inta[][N],intm)
{
}
main()
{inta[N][N],m,i,j;
printf("*****Thearray*****\n");
for(i=0;i{for(j=0;j{a[i][j]=rand()%20;printf("%4d",a[i][j]);}
printf("\n");
}
dom=rand()%10;while(m>=3);
printf("m=%4d\n",m);
fun(a,m);
printf("THERESULT\n");
for(i=0;i{for(j=0;jprintf("\n");
}
}
第3题、
编写程序,实现矩阵(3行3列)的转置(即行列互换)。
例如,输入下面的矩阵:
100200300
400500600
700800900
程序输出:
100400700
200500800
300600900
#include
#include
intfun(intarray[3][3])
{
}
main()
{
inti,j;
intarray[3][3]={{100,200,300},
{400,500,600},
{700,800,900}};
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
fun(array);
printf("Convertedarray:
\n");
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
}
第4题、
程序定义了N×N的二维数组,并在主函数中赋值。
请编写函数fun,函数的功能是:
求出数组周边元素的和。
|01279|
|19745|
a=|23831|
|45682|
|59141|
则返回主程序后s的值应为:
54。
#include
#include
#include
#defineN5
doublefun(intw[][N])
{
}
main()
{inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1};
inti,j;
doubles;
printf("*****Thearray*****\n");
for(i=0;i{for(j=0;j{printf("%4d",a[i][j]);}
printf("\n");
}
s=fun(a);
printf("*****THERESULT*****\n");
printf("Thesumis:
%lf\n",s);
}
第5题、
请编写函数fun,函数的功能是:
将M行N列的二维数组中的数据按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。
例如,二维数组中的数据为:
33333333
44444444
55555555
则一维数组中的内容应是:
333333334444444455555555。
#include
voidfun(int(*s)[10],int*b,int*n,intmm,intnn)
{
}
main()
{intw[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;
inta[100]={0},n=0;
printf("Thematrix:
\n");
for(i=0;i<3;i++)
{for(j=0;j<4;j++)printf("%3d",w[i][j]);
printf("\n");
}
fun(w,a,&n,3,4);
printf("TheAarray:
\n");
for(i=0;i}
第6题、
请编写函数fun,函数的功能是:
将M行N列的二维数组中的数据按列的顺序依次放到一维数组中。
例如,二维数组中的数据为:
33333333
44444444
55555555
则一维数组中的内容应是:
334455334455334455334455。
#include
voidfun(ints[][10],intb[],int*n,intmm,intnn)
{
/*以下代码仅供参考*/
inti,j,np=0;/*np用作b数组下标*/
*n=np;
}
main()
{intw[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;
inta[100]={0},n=0;
printf("Thematrix:
\n");
for(i=0;i<3;i++)
{for(j=0;j<4;j++)printf("%3d",w[i][j]);
printf("\n");
}
fun(w,a,&n,3,4);
printf("TheAarray:
\n");
for(i=0;i}
D类素数(1-3)
第1题、
请编写函数fun,函数的功能是:
将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。
例如,若输入:
17,则应输出:
9和46891012141516。
#include
#include
voidfun(intm,int*k,intxx[])
{
}
main()
{
intm,n,zz[100];
printf("\nPleaseenteranintegernumberbetween10and100:
");
scanf("%d",&n);
fun(n,&m,zz);
printf("\n\nThereare%dnon-primenumberslessthan%d:
",m,n);
for(n=0;nprintf("\n%4d\n",zz[n]);
}
第2题、
将大于形参m且紧靠m的k个素数存入xx数组中。
voidfun(intm,intk,intxx[])
{
/*以下代码仅供参考*/
inti,j=1,t=m+1;
while(j<=k)
{
/*以下完成判断素数,并存放到数组xx中*/
}
}
main()
{
intm,xx[100],k,i;
scanf("%d,%d",&m,&k);
fun(m,k,xx);
for(i=0;iprintf("%3d",xx[i]);
}
第3题、
请编写函数fun,其功能是:
计算并输出3到n之间所有素数的平方根之和。
例如,在主函数中从键盘给n输入100后,
输出为:
sum=148.874270。
注意:
要求n的值大于2但不大于100。
#include
#include
doublefun(intn)
{
}
main()
{intn;doublesum;
printf("\n\nInputn:
");scanf("%d",&n);
sum=fun(n);
printf("\n\nsum=%f\n\n",sum);
}
E类数学其它(1-14)
第1题、
函数fun的功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中,合并的方式是:
将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。
例如,当a=45,b=12。
调用该函数后,c=5241。
#include
#include
voidfun(inta,intb,long*c)
{
}
main()
{inta,b;longc;
printf("Inputa,b:
");
scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("There