C语言上机试题1-20套.doc_第1页
C语言上机试题1-20套.doc_第2页
C语言上机试题1-20套.doc_第3页
C语言上机试题1-20套.doc_第4页
C语言上机试题1-20套.doc_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

46C语言上机考试题(第一套)1.编写函数fun,它的功能是:计算并输出下列级数和:例如,当n = 10时,函数值为:0.909091 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序:#include #include double fun( int n )float main() /*主函数 */ clrscr(); printf(%fn, fun(10);解答:#include #include double fun( int n )double s=0;int i;for(i=1;in+1;i+)s+=1.0/(i*(i+1);return s;main() /*主函数 */ system(cls);printf(%fn,fun(10);说明:主函数中的clrscr()函数为TC下使用的清屏函数,在VC中不能使用,在本题中可以直接删除或改为system(cls)2.在10000, 20000范围内考察个位数字是7的素数, 问: (1) 这样的素数有多少个? (2) 其中最大的一个等于几?解答:#include int main(void)int max,num=0; int i,j;for(i=10000;i20001;i+)for(j=2;ji;j+)if( i%j=0 )break;if( j=i & i%10=7)num+;max=i;printf(num=%d,max=%dn,num,max);return 0;3. 编写程序,从键盘输入一年份,判断该年份是否为闰年。解答:#include int main(void)int year;printf(please input the year:n);scanf(%d,&year);if( (year%400=0) | (year%4=0 & year%100!=0) )printf(%d is a leap year!,year);elseprintf(%d is not a leap year!,year);return 0;C语言上机考试题(第二套)1.编写函数fun,它的功能是:计算并输出下列级数和:例如,当n = 10时,函数值为:0.909091 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序:#include #include double fun( int n ) main() /*主函数 */ clrscr(); printf(%fn, fun(10);解答:略(见第一套试题1)2.回文数是指正读和反读都一样的自然数。例如,8, 121, 5445这三个数都是回文数。求: (1) 1,1000之内既是回文数,又是素数的最大整数。(2) 1,1000以内既是回文数,又是素数的整数有多少个。解答:#include int huiwen(int n)int p,m,flag=0;int s=0;m=n;dop=m%10;s=s*10+p;m=m/10;while(m);if(s=n)flag=1;return flag;int sushu(int n)int i,flag=0;for(i=2;in;i+)if(n%i=0)break;if(i=n)flag=1;return flag;int main(void)int i,max,num=0;for(i=1;i1001;i+)if( huiwen(i) & sushu(i) )max=i;num+;printf(num=%d,max=%dn,num,max);return 0;3. 编写程序,能对输入一行字符,统计其中分别有多少个单词和空格。比如输入:”How are you”,有3个单词和2个空格。解答:#include int main(void)char line81;int word=0,blank=0,flag=0;int i=0;gets(line);while(linei!=0)if(linei= )blank+;if(flag)flag=0;elseif(!flag)word+;flag=1;i+;printf(word=%d,blank=%dn,word,blank);return 0;C语言上机考试题(第三套)1.编写函数fun,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:F(0)=0,F(1)=1F(n)=F(n-1)+F(n-2)例如:当t =1000时,函数值为:1597。注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序:#include #include #include int fun( int t) main() /*主函数 */ int n;clrscr(); n=1000;printf(n = %d, f = %dn,n, fun(n);解答:#include #include #include int fun( int t)int f1=0,f2=1,temp;while(f2t)temp=f1;f1=f2;f2=temp+f1;return f2; main() /*主函数 */ int n;n=1000;printf(n = %d, f = %dn,n,fun(n);说明:主函数中的clrscr( )应删除,或者改为sys(“cls”)2.先从键盘上输入一个3行3列矩阵元素的值,然后输出主对角线元素平方之和.解答:#include int main(void) int array33;int i,j,sum=0;for(i=0;i3;i+)for(j=0;j3;j+)scanf(%d,&arrayij);if(i=j)sum+=arrayij*arrayij;printf(sum=%dn,sum);return 0;3. 编程:删除字符串中的数字字符。解答:#include int main(void) char string81;int i=0,j;gets(string);while(stringi!=0)if(stringi=0 & stringi=9)j=i;dostringj=stringj+1;j+;while(stringj!=0);else i+;printf(%sn,string);return 0;C语言上机考试题(第四套)1.编写函数fun,它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。例如若n为1000时,函数值应为:s = 153.909064。注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序:#include #include #include double fun( int n) main() /*主函数 */ clrscr();printf(s=%fn, fun (1000) );解答:#include #include #include double fun( int n) int i;double s,sum=0;for(i=1;i1000;i+)if(i%3=0 & i%7=0 )sum+=i;s=sqrt(sum);return s;main() /*主函数 */ printf(s=%fn,fun (1000) );2.编程求出两个非零正整数的最大公约数.解答:#include int main(void)int m,n,t;printf(please input two positive integer:n);scanf(%d%d,&m,&n);if( m0 & n0)if(mn)t=m;m=n;n=t;dot=m%n;m=n;n=t;while(t);printf(the max common divisor is %dn,m);elseprintf(Error!n);return 0;3.请编写程序:根据以下公式求(要求满足精度0.0005)的近似值:/2=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+(1*2*3*4*n)/(3*5*7*(2n+1))解答:#include int main(void)double sum=1;double p=1,q=1;int n=1;while ( p/q 5e-4)p*=n;q*=(2*n+1);sum+=p/q;n+;printf(pi=%f,2*sum);return 0;C语言上机考试题(第五套)1.现矩阵(3行3列)的转置(即行列互换)。例如,输入下面的矩阵:100 200 300400 500 600700 800 900程序输出:100 400 700200 500 800300 600 900注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include #include int fun(int array33) main()int i, j;int array33=100,200,300,400,500,600,700,800,900;clrscr() ;for (i=0;i3;j+) for (j=0;j3;j+)printf(%7d,arrayij);printf(n); fun(array);printf(“converted array:n”);for(I=0;I3;I+) for(j=0;j3;j+) printf(“%7d”,arrayIj); printf(“n”); 解答:#include #include int fun(int array33)int temp,i,j;for (i=0;i3;i+) for (j=0;ji+1;j+)temp=arrayij;arrayij=arrayji;arrayji=temp;main()int i, j;int array33=100,200,300,400,500,600,700,800,900;for (i=0;i3;i+) for (j=0;j3;j+)printf(%7d,arrayij);printf(n);fun(array);printf(converted array:n);for(i=0;i3;i+) for(j=0;j3;j+)printf(%7d,arrayij);printf(n);2. 编写程序,计算s=1-+-+-解答:#include int main(void)double s=0;int i,flag=1;for(i=1;i101;i+)s+=1.0/i*flag;flag=-flag;printf(s=%fn,s);return 0;3.编写程序,求2100中的所有的亲密素数对的个数。亲密素数:如果x是素数,则x+2也是素数。解答:#include int sushu(int n)int i,flag=0;for(i=2;in;i+)if(n%i=0)break;if(i=n)flag=1;return flag;int main(void)int i,num=0;for(i=2;i101;i+)if( sushu(i) & sushu(i+2) )printf(%d,%dn,i,i+2);num+;printf(num=%dn,num);return 0;C语言上机考试题(第六套)1. 从键盘入一个整数k(2k10000),输出它的所有质因子(即所有为素数的因子)。例如,若输入整数:2310,则应输出:2、3、5、7、11。解答:#include int sushu(int n)int i,flag=0;for(i=2;in;i+)if(n%i=0)break;if(i=n)flag=1;return flag;int main(void)int i,k;printf(please input a integer:(2=k=10000)n);scanf(%d,&k);for(i=2;ik;i+)if( k%i=0 & sushu(i) )printf(%dt,i);return 0;2.编写函数fun,它的功能是:计算正整数n所有因子(1和n除外)之和作为函数值返回。例如:n = 120时,函数值为239注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序:#include #include int fun (int n) main() /*主函数 */ clrscr();printf(%dn, fun (120);解答:#include #include int fun (int n) int i,sum=0;for(i=2;in;i+)if(n%i=0)sum+=i;return sum;main() /*主函数 */ printf(%dn,fun (120);3. 编写程序,求s=1/(1*2)+1/(2*3)+1/(n*(n+1)解答:#include int main(void) int n,i;double s=0;printf(please input a integer:n);scanf(%d,&n);for(i=1;in+1;i+)s+=1.0/(i*(i+1);printf(s=%fn,s);return 0;C语言上机考试题(第七套)1.编写函数fun,它的功能是计算下列级数和,和值由函数值返回。 例如,当n = 10,x = 0.3时,函数值为1.349859注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序:#include #include #include double fun(double x , int n) main() clrscr();printf(%fn, fun(0.3,10);解答:#include #include #include double fun(double x,int n) double s=1,p=1; int i; for(i=1;in+1;i+) p*=x/i; s+=p; return s;main() printf(%fn,fun(0.3,10);2. 编写程序,求出并输出所有的“水仙花数”。所谓水仙花数,是指一个三位数,其各位数字的立方之和等于该数。解答:#include int main(void) int a,b,c,i;for(i=100;i1000;i+)a=i/100;b=i/10%10;c=i%10;if( a*a*a + b*b*b + c*c*c =i)printf(%dt,i);return 0;3.给出三角形的三边a,b,c,求三角形的面积。解答:#include #include int main(void) double a,b,c,p,s;printf(please input three numbers:(a,b,c)n);scanf(%lf%lf%lf,&a,&b,&c);if( a+bc & b+ca & c+ab)p=(a+b+c)/2;s=sqrt( p * (p-a) * (p-b) * (p-c) );printf(a=%.2f,b=%.2f,c=%.2f s=%.2fn,a,b,c,s);elseprintf(Error!n);return 0;C语言上机考试题(第八套)1.编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回:n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+1/(1+2+3+N)例如:若n的值为11时,则函数的值为:1.833333注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序:#include #include #include float fun(int n) main() int n; float s;clrscr()printf(nPlease enter N:); scanf(%d, &n);s = fun(n);printf(the result is: %fn, s);解答:#include #include #include float fun(int n) int i;float s=0,p=0;for(i=1;in+1;i+)p+=i;s+=1.0/p;return s;main() int n; float s;printf(nPlease enter N:);scanf(%d, &n);s = fun(n);printf(the result is: %fn,s);2.编程求:一球从100米高度自由落下,每次落地后反跳回原来高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?解答:#include int main(void) int i;double s=100,sum=100;for(i=1;i10;i+)s=s/2;sum+=2*s;printf(s=%lf,sum=%lfn,s/2,sum);return 0;3.编程:根据以下公式求值,并作为函数值返回.(精确到0.000001).解答:#include double fun(void)int i=1;double m=1,n=1,s=1;dom*=i;n*=(2*i+1);s=s+m/n;i+;while(m/n)1e-6);return 2*s;int main(void) double pi;pi=fun();printf(pi=%fn,pi);return 0;C语言上机考试题(第九套)1.下列程序中,函数fun的功能是:将十进制正整数m转换成k(2k9)进制数,并按位输出。例如:若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。请编写fun函数,使它能得出正确的结果。试题程序:#include #include void fun( int m, int k )main( )int b, n;clrscr();printf(nPlease enter a number and a base:n);scanf(%d %d,&n, &b );fun( n, b );printf(n);解答:#include #include void fun( int m, int k )int t=1;long s=0;dos+=(m%k)*t;t*=10;while( m/=k);s+=(m%k)*t;printf(%d,s);main( )int b, n;printf(nPlease enter a number and a base:n);scanf(%d%d,&n,&b );fun(n,b);printf(n);2.一个自然数平方的末几位与该数相同时,称该数为同构数.例如,252=625,则25为同构数.编程求出11000中所有的同构数.解答:#includeint main(void)long i,j,k;k=10;for (i=1;i=1000;i+)if (i=k) k*=10;j=i*i;if(j%k=i)printf(%ldt%ldn,i,j);return 0;3.编程计算的值。当程序正确时,结果为:2488.000000。函数定义如下:解答:#include double fun(double x)double s;if(x=2)s=2*x*x+3*x+4;elses=-2*x*x+3*x-4; return s;int main(void)double s;s=fun( fun(-1.0)+fun(5.0);printf(%fn,s);return 0;C语言上机考试题(第十套)1.下列程序中,fun函数的功能是:求 s = aa aa - - aaa aa a(此处aa aa表示n个a,a和n的值在1至9之间)例如:a = 3,n = 6,则以上表达式为: s = 333333 33333 3333 333 33 3其值为:296298a和n是fun函数的形参,表达式的值作为函数值传回main函数。 请编写fun函数,使它能计算出正确的结果。 试题程序:#include #include long fun (int a, int n) main( ) int a, n; clrscr() ; printf(nPlease enter a and n: ) ; scanf(%d%d,&a,&n ) ; printf(The value of function is: %1dnfun (a, n ) );解答:#include #include long fun (int a, int n) int i;long s=a,p=a;for(i=1;in;i+)p=p*10+a;if(i=n-1)s=p-s;elses+=p;return s;main( ) int a, n;printf(nPlease enter a and n:) ;scanf(%d%d,&a,&n );printf(The value of function is: %1dn,fun (a, n ) );2.将4100中的偶数分解成两个素数之和,每个数只取一种分解结果.如100=3+97,100=11+89,100=17+83等,但我们只取第一种分解即可.解答:#include int sushu(int n)int i,flag=0;for(i=2;in;i+)if(n%i=0)break;if(i=n)flag=1;return flag;int main(void) int i,j;for(i=4;i101;i=i+2)for(j=2;ji/2+1;j+)if( sushu(j) & sushu(i-j) )printf(%d = %d + %dn,i,j,i-j);break;return 0;3.一张100元票面的纸钞兑换成10元、20元或50元的票面,问共有多少种不同的兑换方法?解答:#include int main(void) int a,b,c,count=0;for(a=0;a3;a+)for(b=0;b6;b+)for(c=0;c11;c+)if( 50*a + 20*b +10*c = 100)printf(a=%d,b=%d,c=%dn,a,b,c);count+;printf(count=%dn,count);return 0;C语言上机考试题(第十一套)1.在主函数中从键盘输入若干个数放入数组中,用0结束输入,并放在最后一个元素中,下列程序中,函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)。例如:数组中的元素中的值依次为:39,-47,21,2,-8,15,0,则程序的运行结果为:19.250000。请改编写fun函数,使它能得出正确的结果。 试题程序:#include int fun ( int x )main( ) int x1000; int i=0;clrscr();printf(nPlease enter some data (end with 0): );do scanf(%d,&xi); while(xi+ !=0);printf(%fn,fun ( x );解答:#include float fun ( int x)int n=0,i=0;float sum=0;while( xi!=0)if(xi0)sum+=xi;n+;i+;if(n!=0)return sum/n;else return 0;main( ) int x1000;int i=0;printf(nPlease enter some data (end with 0):);do scanf(%d,&xi);while(xi+ !=0);printf(%fn,fun ( x );2. 编程:将一个数字字符串转换成一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串“-1234”,则函数把它转换为整数值-1234。解答:#include int main(void) char str81;int i=0,flag=1;long sum=0;scanf(%s,str);while(stri!=0)if( stri=- | stri=+ )if( stri=- )flag=0;elsesum=sum*10+(stri-0);i+;if(!flag)sum=-sum;printf(%ldn,sum);return 0;3.百马百担问题.有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,编程计算共有多少种驮法?解答:#include int main(void) int a,b,c,count=0;for(a=0;a100/3+1;a+)for(b=0;b100/2+1;b+)for(c=0;c n。例如:m = 12,n = 8时,运行结果为495.000000。注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。试题程序:#include #include float fun(int m, int n) main() /*主函数 */ clrscr();printf(P=%fn, fun (12,8);解答:#include #include float fun(int m, int n)int i;float p1,p2,p3,s;p1=p2=p3=1;for(i=1;im+1;i+)p1*=i;for(i=1;in+1;i+)p2*=i;for(i=1;i(m-n)+1;i+)p3*=i;s=p1/(p2*p3);return s;main() /*主函数 */ printf(P=%fn, fun (12,8);2.求出1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数,并求这些数的个数。解答:#include int main(void) int i,count=0;for(i=1;i1001;i+)if( (i%7=0|i%11=0) & !(i%7=0 & i%11=0) )printf(%dt,i);count+;printf(ncount=%d ,count);return 0;3.编程求一个33矩阵对角线元素之和. 解答:#include #define N 4int main(void) int arrayNN,i,j,sum=0;for(i=0;iN;i+)for(j=0;jN;j+)scanf(%d,&arrayij);if(i=j | i+j=N-1 )sum+=arrayij;for(i=0;iN;i+)for(j=0;jN;j+)printf(%dt,arrayij);printf(n);printf(n sum=%d ,sum);return 0;C语言上机考试题(第十三套)1.下列程序中,函数fun的功能是:求以下分数序列的前n项之和。1/2,2/3,3/5,5/8,8/13,13/21,和值通过函数值返回main函数。例如,若n的值为:5,则应输出:3.007051。请编写程序中的fun函数, 使它能得出正确的结果。试题程序:#include double fun( int n ) main() int n;printf(Enter n: ); scanf(%d, &n);printf(nThe result : %f n, fun(n);解答:#include double fun( int n ) int i;double x=1,y=2,t;double s=x/y;for(i=1;in;i+)t=x;x=y;y=t+x;s+=x/y;return s;main() int n;printf(Enter n: ); scanf(%d, &n);printf(nThe result : %f n, fun(n);2. 编写程序,能对输入一行字符,统计其中分别有多少个单词和空格。比如输入:”How are you”,有3个单词和2个空格。解答:#include int main(void) char str81;int i=0,flag=0,word=0,blank=0;printf(please enter a line of characters!n);gets(str);while( stri!=0 )if(stri= )blank+;flag=0;elseif( flag=0 )word+;flag=1;i+;printf(word=%d,blank=%dn,word,blank);return 0;3.编写程序,求1+3+5+7+195+197+199的和。解答:#include int main(void) int i;long sum=0;for(i=1;i200;i=i+2)sum+=i;printf(sum=%ldn,sum);return 0;C语言上机考试题(第十四套)1.已知一个数列从第0项开始的前三项分别为0,0,1,以后的各项都是其相邻的前三项之和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论