二级C语言《上机改错题》100道:
第一类 第一章至第七章 共36题
10、给定程序modi.c中,函数fun的功能是:计算正整数num的各位上的数字之积,例如,若输入:252,则输出应该是:20。若输入:202,则输出应该是:0。 请改下程序中的错误,使其得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序结构! long fun(long num) { long k;
do { k*=num; num\\=10; } while(num); return (k); }
main(){ long n; …… scanf(\ printf(\
85、文件modi.c中程序的功能是:读入一个整数m,计算如下公式的值。 t = 1 - 1/2 - 1/3 - …… - 1/m
例如,若输入5,则应输出 -0.283333。 double MyLim( int m ) { double t = 1.0; int i;
for( i = 2; i <= m; i++ ) t = 1.0 - 1/t; ; }
main(){ int m;scanf(“%d”&m); prinf(\\n\\nThe result is %lf\\n”); mylim(m); }
98、已知一个数列的前三项分别为0,0,1, 以后的各项都是其相邻的前三项之和。给定程序modi.c中函数fun的功能是:计算并输出该数列前n项的平方根之和sum。n的值通过形参传入。
例如,当n=10时,程序的输出结果应为:23.197745。 fun(int n)
{ double sum,s0,s1,s2,s; int k; sum = 1.0;
if (n <= 2) sum = 0.0;
s0 = 0.0; s1 = 0.0; s2 = 1.0; for(k = 4;k <= n; k++)
{s = s0 + s1 + s2; sum += sqrt(s); s0 = s1; s1 = s2; s2 = s;} return sum }
20、给定程序modi.c中函数fun的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。 例如,当s中的数为:7654321时,t中的数为:7531。 void fun (long s, long t) { long sl=10; *t = s % 10;
while ( s > 0) { s = s/100; *t = s * sl + *t; sl = sl*100; } }
26、给定程序modi.c中函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,
依次构成一个新数放在t中。 例如,当s中的数为:7654321时,t中的数为:642。 void fun (long s, long t)
{ long sl=10; s /= 10; *t = s % 10;
while ( s < 0) { s = s/100; *t = s*sl + *t; sl = sl * 10; } }
5、给定程序modi.c中函数fun的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。 例如,当s中的数为:87653142时,t中的数为:7531。 void fun (long s, long *t) { int d; long sl=1; t = 0;
while ( s > 0) { d = s; if (d%2 == 0) { *t = d * sl + *t;sl *= 10; } s /= 10; } }
70、给定程序modi.c中函数fun的功能是:计算n的5次方的值(规定n的值大于2、小于8),通过形参指针传回主函数。并计算该值的个位、十位、百位上数字之和作为函数值返回。例如,7的5次方是16807,其低3位数的和值是15。 int fun( int n ,int *value ) { int d,s,i; d=0; s=1; for(i=1; i<=5; i++) d=d*n; *value=d;
for(i=1; i<=3; i++){ s=s+d; s=s/10; } return s; }
main(){ int n, sum, v; …… sum=fun( n,&v ); ……}
72、给定程序modi.c中函数fun的功能是:统计一个无符号整数中各位数字值为零的个数,通过形参传回主函数:并把该整数中各位上最大的数字值作为函数值返回。例如,若输入无符号整数30800,则数字值为零的个数为3,各位上数字值最大的是8。 int fun(unsigned n, int *zero) { int count=0,max=0,t;
do { t=n; if(t=0) count++; if(max 67、给定程序modi.c中函数fun的功能是:从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是15。程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数。 int fun() { int i,j,k,sum=0; for(i=0; i<=3; i++) { for(j=1; j<=5; j++) { k=8-i-j; if(k>=1 && k<=6) {sum=sum+1; printf(\ } } return sum; } 74、给定程序modi.c中函数fun的功能是:根据输入的三个边长(整型值),判断能否构成三角形:构成的是等边三角形,还是等腰三角形。若能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。 int fun(int a,int b,int c) { if(a+b>c && b+c>a && a+c>b) { if(a==b && b==c) return 1; else if(a==b||b==c||a==c) return 2; else return 3; } else return 0; } 75、给定程序modi.c中函数fun的功能是:首先将大写字母转换为对应小写字母;若小写字母为a~u,则将其转换为其后的第5个字母;若小写字母为v~z,使其值减21。转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f;若形参是字母W,则转换为小写字母b。 char fun(char c) { if( c>='A' && c<='Z') c=c-32; if(c>='a' && c<='u' ) c=c-5; else if(c>='v'&&c<='z') c=c-21; return c; } 57、给定程序modi.c的功能是:读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。例如,若输入整数:2310,则应输出:2、3、5、7、11。 Isprime(int n); { int i,m; m=1; for(i=2;i if !(n%i) { m=0; break; } return(m); } 60、给定程序modi.c中,函数fun的功能是:实现两个整数的交换。 例如给a和b分别输入:60和65,输出为:a=65 b=60 void fun(int a,b) {int t; t=b; b=a; a=t; } main(){int a,b; …… fun(&a,&b); …… } 96、给定程序modi.c中,函数fun的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数值为4622。 int fun(int k) {int m=0 ,mc=0; while ((k>=2)&&(mc<10)) { if ((k=0)||(k=0)) { m=m+k; mc++; } k--; return m; } main(){ printf(\ 92、函数fun的功能是:找出一个大于给定整数m且紧随m的素数,并作为函数值返回。 int fun(int m) { int i,k; for (i=m+1;;i++) { for(k=2;k } 43、给定程序modi.c中,函数fun和funx的功能是:用二分法求方程2x^3-4x^2+3x-6=0的一个根,并要求绝对误差不超过0.001。 例如,若给m输入-100,给n输入90,则函数求得的一个根值为2.000。 double funx(double x){ return(2*x*x*x-4*x*x+3*x-6); } double fun(double m,double n) int r; r=(m+n)/2; while (fabs(n-m)<0.001) { if(funx(r)*funx(n)<0) m=r; else n=r; r=(m+n)/2; } return r; } 91、给定程序modi.c中,函数fun和funx的功能是:根据整型型参m的值,计算如下公式的值 例如:若m中的值为:5,则应输出:0.536389。 double fun(int m) { double y=1.0; nt i; for (i=2;i 33、给定程序modi.c中,函数fun的功能是:根据整型型参m的值,计算如下公式的值: t=1+1/(2*2)+1/(3*3)+……+1/(m*m) 例如:m的值为5,则应输出1.463611 double fun ( int m ) { double y = 1.0 ; int i; for(i = 2 ; i < m ; i++) y += 1 / (i * i) ; return( y ) ; } main( ) { int n = 5 ; printf( \ 17、给定程序modi.c中,函数fun的功能是:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。 例如,当s中的数为:87653142时,t中的数为:8642。 void fun(long s,long *t) { int d; long s1=1; *t=0; while (s>0){d=s; if (d%2=0) { *t=d*s1+*t; s1*=10;} s\\=10; } } 4、给定程序modi.c中函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。 例如,若给num1和num2分别输入49和21,则输出的最大公约数为7;若给num1和num2分别输入27和81,则输出的最大公约数为27。 int fun(int a,int b) { int r,t; if(a r=a%b; while(r!=0) { a=b; b=r; r=a%b;} return(a); } 22、给定程序modi.c中,函数fun的功能是:求三个数的最小公倍数。 例如,给变量x1、x2、x3分别输入15 11 2,则输出结果应当是:330。 fun(int x, y, z) { int j,t,n,m; j=0; t=j%x; m=j%y; n=j%z; while(t!=0||m!=0||n!=0) {j=j+1; t=j%x; m=t%y; n=j%z; } return i; } 47、给定程序modi.c中,函数fun的功能是:计算n! 例如,给n输入5,则输出120.000000。 double fun(int n) { double result=1.0; if n==0 return 1.0; while(n>1 && n<170) result*=n--; return result; } 21、给定程序modi.c中函数fun的功能是:计算S=f(-n)+f(-n+1)+?+f(0)+f(1)+f(2)+?+f(n)的值。例如,当n为5时,函数值应为:10.407143。f(x)函数定义如下: f(double x) { if(x==0.0||x==2.0) return 0.0; else if (x<0.0) return (x-1)/(x-2); else return (x+1)/(x-2); } double fun (int n) { int i;double s=0.0,y; for (i=-n;i<=n;i++) {y=f(1.0*i); s+=y;} return s } main(){ printf(\ } 18、给定程序modi.c中函数fun的功能是:计算并输出high以内最大的10个素数之和。high的值由主函数传给fun函数。若high的值为100,则函数的值为732。 int fun( int high ) { int sum = 0, n=0, j, yes; while ((high >= 2) && (n < 10) { yes = 1; for (j=2; j<=high/2; j++ ) if (high % j ==0 ) {yes=0; break } if (yes) { sum +=high; n++; } high--;