1、C语言上机模拟试题C语言机试模拟试题一、改错题:(30分)1、求一维数组a中的值为偶数的元素之和。#include sum ( int arr ,int n ) int i,s; s = 0; for ( i=0; in; i+) if (arri % 2 = 0) /*found*/ s=s+i;改为:s = s + arri; return (s); void main() int a10=10,4,2,7,3,12,5,34,5,9,i,s; /*found*/ s = sum( a ,2 ); 改为:s = sum( a ,10 ); printf(The result is: %dn
2、, s); 2、求一维数组a中的值为奇数的元素之和。#include #include int sum( int b ,int n ) int i,s = 0; for ( i=0; in; i+) if (bi % 2 = 1) /*found*/ s = s + bi 改为:s = s + bi; return (s); void main() int a12=10,4,2,7,3,12,5,34,5,9,21,19,n; /*found*/ n = sum(a,2); 改为:n = sum( a ,12 ); printf(The result is :%dn,n ); 3、求二维数组a
3、中的最大值和最小值。#include void main() int a33=4,4,34,37,3,12,5,6,5,i,j,max,min; /clrscr(); max = min = a00; for ( i=0; i3; i+) /*found*/ for ( j=1; j3; j+)改为:for ( j=0; j3; j+) if ( max aij ) max = aij; /*found*/ if (min aij) min = aij; printf(The max is: %dn, max); printf(The min is: %dn, min); 4、求一维数组a中的
4、最大元素及其下标。 #include void main() int a10=1,4,2,7,3,12,5,34,5,9,i,max,pos; /clrscr(); max = a0; pos = 0; for ( i=1; i ai) 改为:if (max ai) max = ai; /*found*/ i = pos; 改为:pos = i; printf(The max is: %d ,pos is: %dn, max , pos); 5、猴子吃桃的问题,求第一天的桃子数。 #include #include void main() int i,j,x,p; /clrscr(); x=1
5、; /*found*/ j=12; 改为:j=11; while(j=1) p=(x+1)*2; /*found*/ p=x; 改为:x = p; j-; printf(total is %dn,p); 6、求一维数组a中的值为奇数的元素的平均值。 #include double average( int arr , int n ) int k=0,i; double s; s = 0; for ( i=0 ;in; i+) /*found*/ if (arri % 2 = 1) 改为:if (arri % 2 = =1) s = s + arri; k+; return (s/k) ; vo
6、id main() int a12=10,4,2,7,3,12,5,34,5,9,21,18; double s; / clrscr(); /*found*/ s = average(a12,12); 改为:s = average(a,12); printf(The result is: %.2fn, s); 二、填空题:(30分)1、 求一维数组a中的素数的个数:2、 程序的功能是:在第一个循环中从键盘上给a数组的前M(M100)个数组元素依次赋值,在第二个循环中使a数组前M个元素中的值对称折叠,在最后一个循环中输出折叠后的a数组的前M个元素。程序如下:#define M 5 void ma
7、in( ) int i,a100,t; /clrscr(); for(i=0;iM;i+) /*found*/ _(1)_ -填写的语句为: scanf(“%d”:,&ai); /*found*/ for(i=0;_(2)_;i+) -填写的语句为:iM/2 aM-i-1=ai; for(i=0;iM;i+) printf(%5d,ai); printf(n); 3、 计算正整数num的各位上的数字之和。#include void main( ) int num,k; /clrscr() ; /*found*/ _(1)_; 填写的语句为:k=0; printf(Please enter a
8、number:) ; scanf(%d,&num) ; do /*found*/ k=_(2)_ ; 填写的语句为:k=k+num%10; num/=10; while(num) ; printf(n%dn,k) ; 4、 求cman=m!/n!*(m-n)!之值,例如:m=12,n=2时,cman is 66#include #include long int fun(int x) long int s=1; int i; for (i=1;i=x;i+) s*=i; /*found*/ _(1)_; 填写的语句为:return s; void main() long int m=12,n=
9、2,s1,s2,s3; /clrscr(); s1=fun(m); s2=fun(n); s3=fun(m-n); /*found*/ printf(Cmn is : %ld,_(2)_ ); 填写的语句为:s1/(s2*s3) 5、 输出Fabonacci数列1,1,2,3,5前20项,要求每位输出5个数。#include stdio.h void main() long int f20=1,1; int i; /clrscr(); /*found*/ _(1)_;填写的语句:int j=0; for(i=2;i20;i+) fi=fi-1+fi-2; /*found*/ if(_(2)_)
10、 printf(n);填写的语句:j+%5=0 printf(%8ld,fi); printf(n); 6、 求两个正整数m,n之间所有既能被3整除也能被7整除的整数之和。#include #include main() int m,n,i,t; long int s=0; /clrscr(); scanf(%d,%d,&m,&n); if( mn ) t=m; m=n; n=t; /*found*/ for (_(1)_;i+)填写的语句:i=m;i=n; if ( i%3=0 & i%7=0 ) s += i; /*found*/ printf(Sum is : _(2)_n,s ); 填
11、写的语句:%ld 7、 从键盘输入一个由数字组成的字符串(字符串长度小于8),将该字符串转换成一个十进制数。例如:从键盘输入12345,则程序运行的结果应当为:n=12345#include stdio.h#include string.h void main() char s10; int i; long int n; /clrscr(); /*found*/ _(1)_; 填写的语句:n=0 scanf(%s,s); for(i=0;istrlen(s);i+) /*found*/ n=n*10+_(2)_; 填写的语句:i+1 printf(n=%ldn,n); 8、 从键盘输入一个正整
12、数n,计算并输出n的阶乘。#include #include #include long fac( int n ) int i; long t=1; for( i=2;i=x);return sum; /*end*/ void main() double x,sum; printf(Enter x:n); scanf(%lf,&x); sum=fun(x); printf(sum=%.4fn,sum); NONO( ); NONO( ) FILE *fr,*fw; int i; double x; fr=fopen(D:exam03200310PROGIN.DAT,r); fw=fopen(D
13、:exam03200310PROGOUT.DAT,w); for(i=1;i=5;i+) fscanf(fr,%lf,&x); fprintf(fw,s=%.4fn,fun(x); fclose(fr); fclose(fw); 2、将一个4位的整数m拆开,然后按相反的顺序输出,每输出一位数其后留2个空格。如m=1234,输出的结果应为m=1234, 4 3 2 1.程序如下: #include stdio.h #include math.h #include stdlib.h void main() int m=1234,a,b,c,d; /*begin*/ a=m%10; b=m/10%1
14、0; c=m/100%10; d=m/1000; /*end*/ printf(m=%d,%d %d %d %dn,m,a,b,c,d); NONO(m,a,b,c,d); NONO( x,a,b,c,d ) int x,a,b,c,d; FILE *f; f=fopen(D:exam03200302PROGOUT.DAT,w); fprintf(f,x=%d: %3d%3d%3d%3d#n,x,a,b,c,d); fclose(f); 3、按下面的公式,求S的近似值。S=1+1/2*2+1/3*3+1/n*n#include stdio.h #include math.h #include
15、stdlib.h double fun(int n) /*begin*/int i;double p,sum=0.0;for(i=1;i=n;i+)p=i*i;sum=sum+1.0/p;return sum; /*end*/ void main() double s; int n; /clrscr(); printf(Enter s:n); scanf(%d,&n); s=fun(n); printf(s= %.3fn,s); NONO( ); NONO( ) FILE *fr,*fw; int i,m; fr=fopen(D:exam03200306PROGIN.DAT,r); fw=fo
16、pen(D:exam03200306PROGOUT.DAT,w); for(i=1;i=5;i+) fscanf(fr,%d,&m); fprintf(fw,s=%.3f#n,fun(m); fclose(fr); fclose(fw); a) 求一个三数m的各位上的数字之和。m由键盘输入。#include int fun(int m) /*begin*/int s=0;while(m!=0)s=s+m%10;m=m/10;return s; /*end*/ void main() int m,s; /clrscr(); printf(Enter m :n); scanf(%d,&m); s=
17、fun(m); printf(Result is: %dn,s); NONO( ); NONO( ) FILE *fr,*fw; int i,j,k,m; fr=fopen(D:exam03200308PROGIN.DAT,r); fw=fopen(D:exam03200308PROGOUT.DAT,w); for(i=1;i=5;i+) fscanf(fr,%d,&m); fprintf(fw,Sum = %dn,fun(m); fclose(fr); fclose(fw); b) 求两个正整数m和n的最大公约数,将求出的最大公数存入变量t中。#include stdio.h #includ
18、e math.h #include stdlib.h void main() int m=76,n=40,t,i; /*begin*/ while(n!=0)i=m%n;m=n; n=i;t=m; /*end*/ printf(The Highest Common Divisor of %d and %d is %dn,m,n,t); NONO(m,n,t); NONO( int m,int n,int t) FILE *f; f=fopen(D:exam03200309PROGOUT.DAT,w); fprintf(f,Maximal Common Divisor Of %d and %d
19、is %dn,m,n,t); fclose(f); c) 求两个正整数m和n的最小公倍数,将求出的最小公倍存入变量t中。#include stdio.h #include math.h #include stdlib.h void main() int m=6,n=45,t,i,temp; /*begin*/ temp=n*m; while(m!=0)i=n%m;n=m; m=i; t=temp/n; /*end*/ printf(The Lowest Common Multiple of %d and %d is %dn,m,n,t); NONO(m,n,t); NONO( int m,int n,int s) FILE *f; f=fopen(D:exam03200339PROGOUT.DAT,w); fprintf(f,Minimal Common Multiple Of %d and %d is %dn,m,n,s); fclose(f);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1