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

上传人:音乐台 文档编号:1987442 上传时间:2019-01-28 格式:DOC 页数:33 大小:143.50KB
返回 下载 相关 举报
[电脑基础知识]C语言上机编程题.doc_第1页
第1页 / 共33页
[电脑基础知识]C语言上机编程题.doc_第2页
第2页 / 共33页
[电脑基础知识]C语言上机编程题.doc_第3页
第3页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[电脑基础知识]C语言上机编程题.doc》由会员分享,可在线阅读,更多相关《[电脑基础知识]C语言上机编程题.doc(33页珍藏版)》请在三一文库上搜索。

1、 C语言上机编程题一、数字题:1将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位依次放在c个位和十位上,b的十位和个位依次放在c的百位和千位上。如当a=16,b=35,则c=5361。void fun(int a ,int b,long *c)*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;2将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是将a数的十位和个数依次放在c数的千位和十位上,b数的十位和个数依次放在c数的百位和个位上。例如:当a=45,b=12,调用该函数后,c=4152。void fun(int

2、a,int b,long *c)*c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10);3将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。例如,当a=45,b=12,调用该函数后,c=1524void fun(int a,int b,long *c)*c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);4将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的

3、十位和个位数依次放在c数的个位和百位上。例如,当a=45,b=12,调用该函数后,c=5241。void fun(int a,int b,long *c)*c=a%10*1000+b%10*100+a/10*10+b/10;5将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。例如,当a=45,b=12,调用该函数后,c=4251。void fun(int a,int b,long *c)*c=a/10*1000+b%10*100+a%10*10+b/10;6将两个两位数的正整数a、b全

4、并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12,调用该函数后,c=2514。void fun(int a,int b,long *c)*c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10);7将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的千位和十位上。例如,当a=45,b=12,调用该函数后,c=1425。void fun(int a,int b,long

5、 *c)*c=(b/10)*1000+(a/10)*100+(b%10)*10+(a%10);8将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12,调用该函数后,c=2415。void fun(int a,int b,int *c)*c=(b%10)*1000+(a/10)*100+(b/10)*10+(a%10);9将两个两位数的正整数a,b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数

6、的百位和个位上。例如,当a=45时,b=12,调用该函数后,c=5142。void fun(int a ,int b,long *c)*c=a%10*1000+b/10*100+a/10*10+b%10;10求n以内(不包括n)同时能被5与11整除的所有自然数之和的平方根s并作为函数值返回。如:n为1000时,函数值应为s=96.979379。double fun(int n)double s=0.0;int i;for(i=0;in;i+)if(i%5=0&i%11=0)s=s+i;s=sqrt(s);return s;11计算并输出给定整数n的所有因子(不包括1与自身)的平方和(规定n的值

7、不大于100)。如:n的值为56,则输出为sum=1113。long fun(int n)int i;long s=0;for(i=2;i=n-1;i+)if(n%i=0)s+=i*i;return s;12求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。若n为1000时,s=153.909064。double fun(int n)double s=0;int i;for(i=0;in;i+)if(i%3=0&i%7=0)s+=i;s=sqrt(s);return s;13计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。如,若给n输入20后,

8、则输出为s=0.583333。double fun(int n)int i;double sum=0;for(i=1;i=n;i+)if(i%5=0|i%9=0)sum+=1.0/i;return sum;14计算并输出3到n之间所有素数的平方根之和。如,若给n输入100后,则输出为sum=148.874270。double fun(int n)int m,k,i;double s=0;for(m=3;m=n;m+)k=sqrt(m);for(i=2;i=k+1)s+=sqrt(m);return s;15判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。int fun(int x)

9、if(x10)return (!(x*x-x)%10);else return (!(x*x-x)%100);106、用筛选法求出100之内的素数void fun ( int *pt )int i,j,flag;*pt=2;*pt+;for(i=3;i100;i+)flag = 1;for(j=2;j=k)return days;height-=n;17求Fibonacci数列中小于t的最大的一个数,结果由函数返回。其中数列F(n)的定义为F(0)0,F(1)1,F(n)=F(n-1)+F(n-2)例如:t=1000时 ,函数值为987。int fun(int t)int a=1,b=1,c=

10、0,i;doc=a+b;a=b;b=c;while (ct);c=a;return c;18求Fibonacci数列中大于T的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)例如,当t=1000时,函数值为1597。int fun(int t)int a=1,b=1,c=0,i;for(i=4;i=t;i+)if(c=10000) return w%10000;if(w=1000)return w%1000;if(w=100)return w%100;if(w=10) return w%10;20对变量h

11、中的值保留两位小数,并对第三位进行四舍五入(规定h中的值为正数)。例如:若h 值为8.32433,则函数返回8.32;若h值为8.32533,则函数返回8.33。float fun (float h )long t;t=(h*1000+5)/10;return (float)t/100;21利用以下所示的简单迭代方法求方程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)所求x

12、1就是方程cos(x)-x=0的一个实根作为函数值返回。输出结果Root=0.739085。float fun()float x1=0.0,x0;dox0=x1;x1=cos(x0);while(fabs(x0-x1)=1e-6);return x1;22根据以下公式计算s,计算结果通过形指针sn传回;s通过形参传入。SN=1/1-1/3+1/5-1/7+(-1)n/(2n-1)例如:若n的值为11时, S=0.764601void fun(float *sn,int n)int i;float s=1;*sn=0;for(i=0;i=n;i+)*sn=*sn+s*(1.0/(2*i+1);s

13、=-s;23S=(1+1/2)+(1/3+1/4)+(1/(2n-1)+1/2n)如,若给n输入12后,则输出为S=3.775958。n的值要求大于1但不大于100。double fun(int n)int i;double s=0.0;for(i=1;i=n;i+)s=s+(1.0/(2*i-1)+1.0/(2*i);return s;24计算:s=(1-ln(1)-ln(2)-ln(3)-ln(m)2s作为函数值返回。在C语言中可调用log(n)函数求ln(n)。log函数的引用说明是double log(double x)。如,若m的值为15,则函数值为723.570801。double

14、 fun(int m)int i;double s=1.0;for(i=1;i=m;i+)s=s-log(i);return (s*s);25计算下列级数,和值由函数值返回。S=1-x+x2/2!-x3/3!+(-1*x)n/n!。如当n=15,x=0.5时,值为0.606531。double fun(double x, int n)int i,j=1;double s=1.0,s1=1.0;for(i=1;i=n;i+)j=-1*j;s1=s1*i;s=s+j*pow(x,i)/s1;return s;26根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1

15、/(1+2+3)+1/(1+2+3+n)。若n的值为11时,值为1.833333。float fun(int n)int i,s1=0;float s=0.0;for(i=1;in。P=m!/(n!(m-n)!),例如:m=12,n=8时,运行结果为495.000000。float fun (int m, int n)int i;double p=1.0;for(i=1;i=m;i+) p=p*i;for(i=1;i=n;i+) p=p/i;for(i=1;i=eps)s1=s1*n/(2*n+1);s=s+s1;n+;return 2*s;29S=1/(12)+1/(23)+1/(n(n+1

16、)例如,当n=10时,函数值为0.909091。double fun(int n)int i;double s=0.0;for(i=1;i=n;i+)s=s+1.0/(i*(i+1);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,则输出为S=11.730729。double fun(double x10)double x1=0.0,s=0.0;int i;for(i=0;i10;i+)x1=x1+xi;x1=x1/10;for(i=0;i10;i+)s+=(xi-x

17、1)*(xi-x1);return sqrt(s/10);31S=(1-1/2)+(1/3-1/4)+(1/(2n-1)-1/2n)。例如,若给n输入8后,则输出为S=0.662872。double fun(int n)int i;double s=0.0;for(i=1;i=n;i+)s=s+(1.0/(2*i-1)-1.0/(2*i);return s;32计算s=(ln(1)+ln(2)+ln(3)+ln(m)0.5。可调用log(n)函数求ln(n)。若m的值为20,则函数值为6.506583。double fun(int m)int i;double s=0.0;for(i=1;i=

18、m;i+)s=s+log(i);return sqrt(s);33计算下列和值由函数值返回。S=1+x+x2/2!+x3/3!+xn/n!例如,当n=10,x=0.3时,函数值为1.349859。double fun(double x, int n)int i;double s=1.0,s1=1.0;for(i=1;i=n;i+)s1=s1*i;s=s+pow(x,i)/s1;return s;34S=1+(1+20.5)+(1+20.5+30.5)+(1+20.5+30.5+n0.5)如,若给n输入20后,则输出为s=534.188884。double fun(int n)int i;dou

19、ble s=0.0,s1=0.0;for(i=1;i=n;i+)s1=s1+pow(i,0.5);s=s+s1;return s;35sn=1+1/1!+1/2!+1/3!+1/4!+1/n!如,若给n输入15,则输出为s=2.718282。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;36计算并输出当x0.97时下列多项式的值,直到|Sn-Sn-1|=1e-6);return sum;二、数组题:37求出一个2M整型二维数组中最大元素的

20、值,并将此值返回调用函数。fun (int aM)int i,j,max=a00;for(i=0;i2;i+)for(j=0;jM;j+)if(maxaij)max=aij;return max;38求出一个4M整型二维数组中最小元素的值,并将此值返回调用函数。fun (int aM)int i,j,min=a00;for(i=0;i4;i+)for(j=0;jaij)min=aij;return min;39求出二维数组每列中最大元素,并依次放入pp所指的一维数组中.void fun(int ttMN,int ppN)int i,j,max;for(j=0;jN;j+)max=tt0j;fo

21、r(i=0;imax)max=ttij;ppj=max;40程序定义了NN的二维数组,给数组周边元素置0值。fun(int wN )int i,j;for(i=0;iN;i+)for(j=0;jN;j+)if(i=0|i=N-1|j=0|j=N-1)wij=0;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 2

22、20 13 18 3 11 9 7 4 50 11 12 7 9int fun(int aN )int i,j,k;for(i=0;iN/2;i+)for(j=0;jN;j+)k=aij;aij=aN-i-1j;aN-i-1j=k;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

23、 5 141 4 17 9 15int fun(int aN )int i,j,k;for(i=0;iN/2;i+)for(j=0;jN;j+)k=aji;aji=ajN-i-1;ajN-i-1=k;43下列程序定义了NN的二维数组,并在主函数中自动赋值。编写函数:使数字右上半三角元素中的值乘以m。例如,若m的值为2,a数组中的值为a=1 9 2 7则返回主程序后a数组的值应为2 182 14int fun(int aN, int m)int i,j;for(i=0;iN;i+)for(j=i;jN;j+)aij*=m;44程序定义了NN的二维数组使数组左下半三角元素中的值加上n。如:若n的值

24、为3,a数组中的值为a=2 5 4 1 6 9 5 3 7则返回主程序后a数组中的值应为 5 5 4 4 9 9 8 6 10 fun(int a N, int n)int i, j;for(i=0; iN; i+)for(j=0; j=i; j+)aij=aij+n;45下列程序定义了NN的二维数组,并在主函数中赋值。编写函数:求出数组周边元素的平方和并作为函数值返回给主函数中的s。例如:若a 数组中的值为a=0 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 wN)int i,

25、j,k=0;int s=0;for(i=0;iN;i+)for(j=0;jN;j+)if(i= =0|i= =N-1|j= =0|j= =N-1)s=s+wij*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 wN)int i,j,k=0;double av=0.0;for(i=0;iN;i+) for(j=0;jN;j+)if(

26、i=0|i=N-1|j=0|j=N-1)av=av+wij;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 MN)int i,j,sum=0;for(i=0;iM;i+)for(j=0;jN;j+)if(i=0|i=M-1|j=0|j=N-1)sum=sum+aij;return sum;48实现矩阵(3行3列)的转置(即行列互换)。例如,若输入下面的矩阵:100 200 300400 500 6

27、00700 800 900则程序输出:100 400 700200 500 800300 600 900int fun (int array33)int i,j,t;for(i=0;i3;i+)for(j=i+1;j3;j+)t=arrayij;arrayij=arrayji;arrayji=t;49实现B=A+A,即把矩阵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 b33)int i,j;for(i=0;

28、i3;i+)for(j=0;j3;j+)bij=aij+aji;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 fun(int (*s)10,int *b,int *n,int mm,int nn)int x,y;for(x=0;xnn;x+)for(y=0;ymm;y+)bx*mm+y=*(sy+x);(*n)+;51将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数

29、组中数据的个数存放在形参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 (*s)10, int *b, int *n, int mm, int nn)int i,j,k=0;for(i=0;imm;i+)for(j=0;jnn;j+)bk+=sij;*n=k;52求出一个MN二维数组每行元素的和数,并依次放入一个一维数组中传回主函数。例如,若有以下二维数组:6 10 2 10 1617 15 15 8 64 18

30、 11 19 120 12 1 3 7则输出:44,61,64,23fun (int aN,int b)int i,j,sum=0,n=0;for(i=0;iM;i+)for(j=0;jN;j+)sum+=aij;bn+=sum;sum=0;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 aM=0,d

31、=0,i,j,k;FILE *fp ;fp=fopen(dat52.dat,w);for(i=1;i=n;i+)for(j=0;jn;j+ )d+=1;aj=d;if(i%2)for(k=0;k=0;k-)printf( %3d,ak);fprintf(fp, %3d,ak);printf(n);fprintf(fp,n);fclose(fp);54求数组的最小元素在数组中的下标并存放在k所指的存储单元中.如输入:234,345,753,134,436,458,100,321,135,760则输出结果为6,100。int fun(int *s,int t,int *k)int i;*k=0;f

32、or(i=0;isi)*k=i;return s*k;55找出一维数组元素中最大的值和它所在的下标,最大值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。void fun(int a,int n, int *max, int *d)int i;*max=a0;*d=0;for(i=0;in;i+)if(*maxai)*max=ai;*d=i;56把20个随机数存入一个数组,然后输出该数组中的最小值。int fun(int list,int size)int x,i;x=0;for(i=1;

33、ilisti)x=i;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 Move(int n,int xx,int k)int i,j,t;for(i=0;ik;i+)t=xx0;for(j=1;jn;j+)xxj-1=xxj;xxn-1=t;58移动一维数组中的内容,若数组中有n个整数,要求把下标从p到n-1(pn-1)的数组元素平移到数组的前面,一维

34、数组中的原始内容为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 fun(int *w, int p, int n)int i,j,t;for(i=p;i=0;j-)wj+1=wj;w0=t;59移动一维数组中的内容,若数组中有n个整数,要求把下标从0到p(pn-1)的数组元素平移到数组的最后如一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,p为3移动后一维数组中的内容应为5,6,7,8,9,10,

35、11,12,13,14,15,1,2,3,4。void fun(int *w, int p, int n)int i,j,t;for(i=0;i=p;i+)t=w0;for(j=1;jn;j+)wj-1=wj;wj-1=t;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 fun(int a, int n)int i,j=1;for(i=1;in;i+)if(

36、aj-1!=ai)aj+=ai;return j;61求出能整除x且不是奇数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。若x中的值为24,则有6个数符合要求,它们是2,4,6,8,12,24。void fun (int x, int pp , int *n)int i,j=0;for(i=2;i=x;i=i+2)if(x%i=0)ppj+=i;*n=j;62求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15。void fun (int x,

37、int pp, int *n)int i,j=0;for(i=1;ix;i=i+2)if(x%i=0)ppj+=i;*n=j;63将大于整数m且紧靠m的k个非素数存入所指的数组中.如,若输入15,5,则应输出16,18,20,21,22。void fun(int m, int k, int xx)int i,j,n;for(i=m+1,n=0;nk;i+)for(j=2;ji;j+)if(i%j=0)xxn+=i;break;64求出1到1000之内能被5或13整除、但不能同时被5和13整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。void fun(int *a,int *

38、n)int i,j=0;for(i=1;i=1000;i+)if(i%5= =0|i%13= =0) & i%65 !=0)aj+=i;*n=j;65求出1到m(含m)之内能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数.若传给m的值为50,输出7,11,14,21,22,28,33,35,42,44,49void fun(int m, int *a, int *n)int i,j=0;for(i=1;i=m;i+)if(i%7=0|i%11=0)aj+=i;*n=j;66求出1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返

39、回这些数的个数。void fun(int *a,int *n)int i,j=0;for(i=1;i=1000;i+)if(i%7=0|i%11=0)&i%77!=0) aj+=i;*n=j;67将大于整数m且紧靠m的k个素数存入所指的数组中。例如,若输入17,5,则应输出19,23,29,31,37。void fun(int m, int k, int xx)int i,j,n;for(i=m+1,n=0;nk;i+)for(j=2;j=i)xxn+=i;68求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求出的素数的个数。int fun(int lim, int aaMAX)int i,j,k=0;for(i=2;i=lim;i+)for(j=2;j=i)aak+=i;r

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1