c语言电脑上机过程,[电脑基础知识]C语言上机编程题.doc

253b171540df25e1b84436cbe50dfc72.gif[电脑基础知识]C语言上机编程题.doc

C语言上机编程题一、数字题1将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是将a数的十位和个位依次放在c个位和十位上,b的十位和个位依次放在c的百位和千位上。如当a16,b35,则c5361。void funint a ,int b,long *c*cb10*1000b/10*100a10*10a/10;2将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是将a数的十位和个数依次放在c数的千位和十位上,b数的十位和个数依次放在c数的百位和个位上。例如当a45,b12,调用该函数后,c4152。void funint a,int b,long *c*ca/10*1000b/10*100a10*10b10;3将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。例如,当a45,b12,调用该函数后,c1524void fun(int a,int b,long *c)*cb/10*1000a10*100b10*10a/10;4将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。例如,当a45,b12,调用该函数后,c5241。void fun(int a,int b,long *c)*ca10*1000b10*100a/10*10b/10;5将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。例如,当a45,b12,调用该函数后,c4251。void fun(int a,int b,long *c)*ca/10*1000b10*100a10*10b/10;6将两个两位数的正整数a、b全并形成一个整数放在c中。合并的方式是将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a45,b12,调用该函数后,c2514。void fun(int a,int b,long *c)*cb10*1000a10*100b/10*10a/10;7将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的千位和十位上。例如,当a45,b12,调用该函数后,c1425。void fun(int a,int b,long *c)*cb/10*1000a/10*100b10*10a10;8将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a45,b12,调用该函数后,c2415。void funint a,int b,int *c*cb10*1000a/10*100b/10*10a10;9将两个两位数的正整数a,b合并形成一个整数放在c中。合并的方式是将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a45时,b12,调用该函数后,c5142。void funint a ,int b,long *c*ca10*1000b/10*100a/10*10b10;10求n以内不包括n同时能被5与11整除的所有自然数之和的平方根s并作为函数值返回。如n为1000时,函数值应为s96.979379。double funint ndouble s0.0;int i;fori0;in;iifi50i110ssi;ssqrts;return s;11计算并输出给定整数n的所有因子不包括1与自身的平方和(规定n的值不大于100)。如n的值为56,则输出为sum1113。long funint nint i;long s0;fori2;in-1;iifni0si*i;return s;12求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。若n为1000时,s153.909064。double funint ndouble s0;int i;fori0;in;iifi30i70si;ssqrts;return s;13计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。如,若给n输入20后,则输出为s0.583333。double fun(int n)int i;double sum0;fori1;in;iifi50i90sum1.0/i;return sum;14计算并输出3到n之间所有素数的平方根之和。如,若给n输入100后,则输出为sum148.874270。double fun(int n)int m,k,i;double s0;form3;mn;mksqrtm;fori2;ik;iifmi0break;ifik1ssqrtm;return s;15判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。int funint xifx10return x*x-x10;else return x*x-x100;106、用筛选法求出100之内的素数void fun int *pt int i,j,flag;*pt2;*pt;fori3;i100;iflag 1;forj2;ji;jifij0flag0;ifflag*pti;*pt;*pt0;16返回小蚕需要多少天才能爬到树顶(树高k厘米,小蚕每天白天向上爬m厘米,每天晚上因睡觉向下滑n厘米,爬到顶后不再下滑)(nmk)。例如,若分别 输入253、71、29给 k、m、n,则输出结果为6。int dayint k,int m,int nint days,height0;fordays1daysheightm;ifheightkreturn days;height-n;17求Fibonacci数列中小于t的最大的一个数,结果由函数返回。其中数列Fn的定义为F00,F11,FnFn-1Fn-2例如t1000时 ,函数值为987。int funint tint a1,b1,c0,i;docab;ab;bc;while ct;ca;return c;18求Fibonacci数列中大于T的最小的一个数,结果由函数返回。其中Fibonacci数列Fn的定义为F00,F11,FnFn-1Fn-2例如,当t1000时,函数值为1597。int funint tint a1,b1,c0,i;fori4;it;iifctcab;ab;bc;else break;return c;19w是一个大于10的无符号整数,若w是nn2位的整数,则函数求出w的后n-1位的数作为函数值返回。例如w值为5923,则函数返回923;若w值为923,则函数返回23。unsigned fununsigned wifw10000 return w10000;ifw1000return w1000;ifw100return w100;ifw10 return w10;20对变量h中的值保留两位小数,并对第三位进行四舍五入规定h中的值为正数。例如若h 值为8.32433,则函数返回8.32;若h值为8.32533,则函数返回8.33。float fun float h long t;th*10005/10;return floatt/100;21利用以下所示的简单迭代方法求方程cosx-x0的一个实根。xn-1cosxn迭代步骤如下1取x1初值为0.0;2x0x1,把x1的值赋给x0;3x1cosx0,求出一新的x1;4若x0-x1的绝对值小于0.000001,则招待步骤(5),否则执行步骤(2);5所求x1就是方程cosx-x0的一个实根作为函数值返回。输出结果Root0.739085。float funfloat x10.0,x0;dox0x1;x1cosx0;whilefabsx0-x11e-6;return x1;22根据以下公式计算s,计算结果通过形指针sn传回;s通过形参传入。SN1/1-1/31/5-1/7(-1)n/2n-1例如若n的值为11时, S0.764601void funfloat *sn,int nint i;float s1;*sn0;fori0;in;i*sn*sns*1.0/2*i1;s-s;23S(11/2)(1/31/4)(1/(2n-1)1/2n)如,若给n输入12后,则输出为S3.775958。n的值要求大于1但不大于100。double funint nint i;double s0.0;fori1;in;iss1.0/2*i-11.0/2*i;return s;24计算s(1-ln(1)-ln(2)-ln(3)ln(m2s作为函数值返回。在C语言中可调用log(n)函数求ln(n)。log函数的引用说明是double log(double x)。如,若m的值为15,则函数值为723.570801。double funint mint i;double s1.0;fori1;im;iss-logi;return s*s;25计算下列级数,和值由函数值返回。S1-xx2/2-x3/3(-1*x)n/n。如当n15,x0.5时,值为0.606531。double fundouble x, int nint i,j1;double s1.0,s11.0;fori1;in;ij-1*j;s1s1*i;ssj*powx,i/s1;return s;26根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。S11/121/1231/123n。若n的值为11时,值为1.833333。float funint nint i,s10;float s0.0;fori1;in;is1s1i;ss1.0/s1;return s;27根据以下公式求p的值,结果由函数值带回。m与n为两个正数且要求mn。Pm/nm-n,例如m12,n8时,运行结果为495.000000。float fun int m, int nint i;double p1.0;fori1;im;i pp*i;fori1;in;i pp/i;fori1;im-n;ipp/i;return p;28求的值要求满足精度0.005,即某项小于0.005时停止迭代。/211/31*2/3*51*2*3/3*5*71*2*3*4/3*5*7*91*2*3n/3*5*72n1,如果输入精度0.0005,则程序输出3.140578。double fundouble epsdouble s1.0,s11.0;int n1;whiles1epss1s1*n/2*n1;sss1;n;return 2*s;29S1/121/231/nn1例如,当n10时,函数值为0.909091。double funint nint i;double s0.0;fori1;in;iss1.0/i*i1;return s;30计算并输出给定10个数的方差。 例如,给定的10个数为95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0,则输出为S11.730729。double fundouble x10double x10.0,s0.0;int i;fori0;i10;ix1x1xi;x1x1/10;fori0;i10;isxi-x1*xi-x1;return sqrts/10;31S1-1/21/3-1/41/2n-1-1/2n。例如,若给n输入8后,则输出为S0.662872。double funint nint i;double s0.0;fori1;in;iss1.0/2*i-1-1.0/2*i;return s;32计算sln1ln2ln3lnm0.5。可调用logn函数求lnn。若m的值为20,则函数值为6.506583。double funint mint i;double s0.0;fori1;im;isslogi;return sqrts;33计算下列和值由函数值返回。S1xx2/2x3/3xn/n例如,当n10,x0.3时,函数值为1.349859。double fundouble x, int nint i;double s1.0,s11.0;fori1;in;is1s1*i;sspowx,i/s1;return s;34S1120.5120.530.5120.530.5n0.5如,若给n输入20后,则输出为s534.188884。double funint nint i;double s0.0,s10.0;fori1;in;is1s1powi,0.5;sss1;return s;35sn11/11/21/31/41/n如,若给n输入15,则输出为s2.718282。double funint ndouble t,sn1.0;int i,j;fori1;in;it1.0;forj1;ji;jt*j;sn1.0/t;return sn;36计算并输出当x0.97时下列多项式的值,直到|Sn-Sn-1|0.000001为止。Sn10.5x0.5*0.5-1/2*x20.5*0.5-1*0.5-2/3*x30.5*0.5-1*0.5-2*0.5-n1/n*xn。若给x输入0.21后,则输出为s1.100000。double fundouble xdouble s11.0,p1.0,sum0,s0,t1;int n1;dos0s1;sums0;t*n;p*0.5-n1*x;s1p /t;n;whilefabss1-s01e-6;return sum;二、数组题37求出一个2M整型二维数组中最大元素的值,并将此值返回调用函数。fun int aMint i,j,maxa00;fori0;i2;iforj0;jM;jifmaxaijmaxaij;return max;38求出一个4M整型二维数组中最小元素的值,并将此值返回调用函数。fun int aMint i,j,mina00;fori0;i4;iforj0;jM;jifminaijminaij;return min;39求出二维数组每列中最大元素,并依次放入pp所指的一维数组中.void funint ttMN,int ppNint i,j,max;forj0;jN;jmaxtt0j;fori0;iM;iifttijmaxmaxttij;ppjmax;40程序定义了NN的二维数组,给数组周边元素置0值。funint wN int i,j;fori0;iN;iforj0;jN;jifi0iN-1j0jN-1wij0;41程序定义了NN的二维数组,使数组中第一行元素中的值与倒数第一行元素中的值对调、第二行元素中的值与倒数第二行元素中的值对调其他依次类推。例如a数组中的值为0 11 12 7 91 9 7 4 520 13 18 3 114 5 6 8 215 9 17 4 1则返回主程序后a数组中的值应为15 9 17 4 114 5 6 8 220 13 18 3 11 9 7 4 50 11 12 7 9int funint aN int i,j,k;fori0;iN/2;iforj0;jN;jkaij;aijaN-i-1j;aN-i-1jk;42程序定义了NN的二维数组,使数组中第一列元素中的值与最后一列元素中的值对调、第二列元素中的值与倒数第二列元素中的值对调其他依次类推。例如a数组中的值为0 11 12 7 91 9 7 4 520 13 18 3 114 5 6 8 215 9 17 4 1则返回主程序后a数组中的值应为9 7 12 11 05 4 7 9 11 3 18 13 202 8 6 5 141 4 17 9 15int funint aN int i,j,k;fori0;iN/2;iforj0;jN;jkaji;ajiajN-i-1;ajN-i-1k;43下列程序定义了NN的二维数组,并在主函数中自动赋值。编写函数使数字右上半三角元素中的值乘以m。例如,若m的值为2,a数组中的值为a1 9 2 7则返回主程序后a数组的值应为2 182 14int funint aN, int mint i,j;fori0;iN;iforji;jN;jaij*m;44程序定义了NN的二维数组使数组左下半三角元素中的值加上n。如若n的值为3,a数组中的值为a2 5 4 1 6 9 5 3 7则返回主程序后a数组中的值应为 5 5 4 4 9 9 8 6 10 funint a N, int nint i, j;fori0; iN; iforj0; ji; jaijaijn;45下列程序定义了NN的二维数组,并在主函数中赋值。编写函数求出数组周边元素的平方和并作为函数值返回给主函数中的s。例如若a 数组中的值为a0 1 2 7 9 1 11 21 5 5 2 21 6 11 1 9 7 9 10 2 5 4 1 4 1则返回主程序后s的值应为310。int fun int wNint i,j,k0;int s0;fori0;iN;iforj0;jN;jifi 0i N-1j 0j N-1sswij*wij;return s;46下列程序定义了NN的二维数组,并在主函数中赋值。求出数组周边元素的平均值并作为函数值返回给主函数中的s。若a 数组中的值为a 0 1 2 7 91 9 7 4 52 3 8 3 14 5 6 8 25 9 1 4 1则返回主程序后s的值应为3.375。double fun int wNint i,j,k0;double av0.0;fori0;iN;i forj0;jN;jifi0iN-1j0jN-1avavwij;k;return av/k;47求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。例如若二维数组中的值为1 3 5 7 92 9 9 9 46 9 9 9 81 3 5 7 0则函数值为61。int fun int a MNint i,j,sum0;fori0;iM;iforj0;jN;jifi0iM-1j0jN-1sumsumaij;return sum;48实现矩阵3行3列的转置即行列互换。例如,若输入下面的矩阵100 200 300400 500 600700 800 900则程序输出100 400 700200 500 800300 600 900int fun int array33int i,j,t;fori0;i3;iforji1;j3;jtarrayij;arrayijarrayji;arrayjit;49实现BAA,即把矩阵A加上A的转置,存放在矩阵B中。输入下面矩阵 1 2 3 4 5 6 7 8 9其转置矩阵为1 4 7 2 5 8 3 6 9则程序输出2 6 10 6 10 14 10 14 18void fun int a33, int b33int i,j;fori0;i3;iforj0;j3;jbijaijaji;50将M行N列的二维数组中的数据按列的顺序依次放到一维数组中。例如,二维数组中的数据为33 33 33 3344 44 44 4455 55 55 55则一维数组中的内容应是33,44,55,33,44,55,33,44,55,33,44,55。void funint *s10,int *b,int *n,int mm,int nnint x,y;forx0;xnn;xfory0;ymm;ybx*mmy*syx;*n;51将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。若二维数组中的数据为33 33 33 3344 44 44 4455 55 55 55则一维数组中的内容应该是33,33,33,33,44,44,44,44,55,55,55,55.void fun int *s10, int *b, int *n, int mm, int nnint i,j,k0;fori0;imm;iforj0;jnn;jbksij;*nk;52求出一个MN二维数组每行元素的和数,并依次放入一个一维数组中传回主函数。例如,若有以下二维数组6 10 2 10 1617 15 15 8 64 18 11 19 120 12 1 3 7则输出44,61,64,23fun int aN,int bint i,j,sum0,n0;fori0;iM;iforj0;jN;jsumaij;bnsum;sum0;53输出一个如下的n阶方阵。变量n从文件c9670503.in中读取。例如,若读入 4 或 5 ,则分别输出1 2 3 48 7 6 59 10 11 1216 15 14 13或1 2 3 4 510 9 8 7 611 12 13 14 1520 19 18 17 1625 24 23 22 21void Mtrx int n int aM0,d0,i,j,k;FILE *fp ;fpdat52.dat,w;fori1;in;iforj0;jn;j d1;ajd;ifi2fork0;kn;kprintf 3d,ak;fprintffp, 3d,ak;else forkn-1;k0;kprintf 3d,ak;fprintffp, 3d,ak;printfn;fprintffp,n;fclosefp;54求数组的最小元素在数组中的下标并存放在k所指的存储单元中.如输入234,345,753,134,436,458,100,321,135,760则输出结果为6,100。int funint *s,int t,int *kint i;*k0;fori0;it;iifs*ksi*ki;return s*k;55找出一维数组元素中最大的值和它所在的下标,最大值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。void funint a,int n, int *max, int *dint i;*maxa0;*d0;fori0;in;iif*maxai*maxai;*di;56把20个随机数存入一个数组,然后输出该数组中的最小值。int funint list,int sizeint x,i;x0;fori1;isize;iiflistxlistixi;return x;57将数组xx(有n个元素)的前k个元素(kn)移到数组的尾部,变为后k个元素,但是数组的这两段(原前k个元素为一段、另外的n-k个元素为一段)中元素的顺序不得改变。例如,若输入7和 1 2 3 4 5 6 7,再输入5,则输出应为6 7 1 2 3 4 5。void Moveint n,int xx,int kint i,j,t;fori0;ik;itxx0;forj1;jn;jxxj-1xxj;xxn-1t;58移动一维数组中的内容,若数组中有n个整数,要求把下标从p到n-1pn-1的数组元素平移到数组的前面,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,p的值为6。移动后,一维数组中的内容应为7,8,9,10,10,11,12,13,14,15,1,2,3,4,5,6。void funint *w, int p, int nint i,j,t;forip;in-1;itwn-1;forjn-2;j0;jwj1wj;w0t;59移动一维数组中的内容,若数组中有n个整数,要求把下标从0到ppn-1的数组元素平移到数组的最后如一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,p为3移动后一维数组中的内容应为5,6,7,8,9,10,11,12,13,14,15,1,2,3,4。void funint *w, int p, int nint i,j,t;fori0;ip;itw0;forj1;jn;jwj-1wj;wj-1t;60删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。若一维数组中的数据是2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10删除后,数组中的内容应该是2,3,4,5,6,7,8,9,10。int funint a, int nint i,j1;fori1;in;iifaj-1aiajai;return j;61求出能整除x且不是奇数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。若x中的值为24,则有6个数符合要求,它们是2,4,6,8,12,24。void fun int x, int pp , int *nint i,j0;fori2;ix;ii2ifxi0ppji;*nj;62求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15。void fun int x, int pp, int *nint i,j0;fori1;ix;ii2ifxi0ppji;*nj;63将大于整数m且紧靠m的k个非素数存入所指的数组中.如,若输入15,5,则应输出16,18,20,21,22。void funint m, int k, int xxint i,j,n;forim1,n0;nk;iforj2;ji;jifij0xxni;break;64求出1到1000之内能被5或13整除、但不能同时被5和13整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。void funint *a,int *nint i,j0;fori1;i1000;iifi5 0i13 0 i65 0aji;*nj;65求出1到m含m之内能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数.若传给m的值为50,输出7,11,14,21,22,28,33,35,42,44,49void funint m, int *a, int *nint i,j0;fori1;im;iifi70i110aji;*nj;66求出1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。void funint *a,int *nint i,j0;fori1;i1000;iifi70i110i770 aji;*nj;67将大于整数m且紧靠m的k个素数存入所指的数组中。例如,若输入17,5,则应输出19,23,29,31,37。void funint m, int k, int xxint i,j,n;forim1,n0;nk;iforj2;ji;jifij0break;ifjixxni;68求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求出的素数的个数。int funint lim, int aaMAXint i,j,k0;fori2;ilim;iforj2;ji;jifij0break;ifjiaaki;r

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值