C程序填空改错及答案
- 格式:doc
- 大小:744.05 KB
- 文档页数:33
c语言改错题及答案【篇一: c 语言二级上机(t 填空 ,改错 ,编程 )题库及答案】100套题目(每套题目包含 3 道题:一道程序填空题、一道程序修改题、一道程序设计题),真实考试的时候,考生输入准考证后计算机随机为你抽取一套考试,每个考生考试时只需考一套题目(包含三道题)二级 c 语言上机试题汇编※※※※※※※※※※※※※※※※※※※※※※※第01套:给定程序中,函数 fun 的功能是:将形参 n 所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针 n 传回所指变量。
例如,输入一个数:27638496 ,新的数:为739 。
请在程序的下划线处填入正确的内容并把下划线删除 , 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的blank1.c中。
不得增行或删行,也不得更改程序的结构!给定源程序:#include stdio.hvoid fun(unsigned long *n){ unsigned long x=0, i; int t;i=1;while(*n)/**********found**********/{ t=*n % __1__;/**********found**********/if(t%2!= __2__){ x=x+t*i; i=i*10; }*n =*n /10;}/**********found**********/*n=__3__;}main(){ unsigned long n=-1;while(n99999999||n0){ printf(please input(0n100000000): ); scanf(%ld,n); }fun(n);printf(\nthe result is: %ld\n,n);}【参考答案】(1)10 (2) 0 (3) x解题思路:第一处: t 是通过取模的方式来得到*n 的个位数字,所以应填:10 。
三、读程序题1、float f=3.1415927;printf(“%f,%5.4f,%3.3f”,f,f,f);则程序的输出结果是3.141593,3.1416,3.142 .2、int x=6,y=7;printf(“%d,”,x++);printf(“%d\n”,++y);程序的输出结果是6,83、a=3;a+=(a<1)?a:1;printf(“%d”,a);结果是. 44、for (a=1,b=1;a<=100;a++){ if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}程序的输出结果a的值为22 .5、int y=1,x,*p,a[ ]={2,4,6,8,10};p=&a[1];for(x=0;x<3;x++)y + = * (p + x);printf(“%d\n”,y);程序的输出结果y的值是19 .四、程序填空题1、从键盘上输入10个数,求其平均值。
main(){int i;float f,sum;for(i=1,sum=0.0;i<11;i++){ scanf(“%f”,&f);Sum+=f ;}printf(“average=%f\n”,sum/10);}2、以下程序是建立一个名为myfile的文件,并把从键盘输入的字符存入该文件,当键盘上输入结束时关闭该文件。
#include <stdio.h>main(){ FILE *fp;char c;fp= ;do{c=getchar();fputs(c,fp);}while(c!=EOF);3、以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。
请填空。
main(){ float x,amax,amin;scanf(“%f”,&x);amax=x;amin=x;while(x>=0.0 ){ if(x>amax)amax=x;if(x<=amin )amin=x;scanf(“%f”,&x);}printf(“\namax=%f\namin=%f\n”,amax,amin);}三、阅读程序题(1) 3.141593,3.1416,3.142(2)6,8(3) 4(4)22(5)19四、程序填空题1、scanf(“%f”,&f);sum+=f;2、fopen(“myfile”,w)fclose(fp);3、x>=0.0 x<=amin三、阅读程序题1、int x=6,y=7;printf(“%d,”,x++);printf(“%d\n”,++y);程序的输出结果是______.2、float f=3.1415927;printf(“%f,%5.4f,%3.3f”,f,f,f);则程序的输出结果是______.3、a=3;a+=(a<1)a:1;printf(“%d”,a);结果是______.4、main(){ int a[5]={2,4,6,8,10},*P,* *k;p=a;k=&p;printf(“%d,”,*(p++));printf(“%d\n”,* *k);程序的输出结果是______.5、main(){int a,b;for (a=1,b=1;a<=100;a++){ if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;} }程序的输出结果a的值为______.四、程序填空题1、求主次对角线之和。
第1题【程序改错】功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。
例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。
------------------------------------------------------*/#include <conio.h>#include <stdio.h>#include <string.h>void fun (char *s, char *t){/**********FOUND**********/int i;sl = strlen(s);for (i=0; i<sl; i++)/**********FOUND**********/t[i] = s[sl-i];for (i=0; i<sl; i++)t[sl+i] = s[i];/**********FOUND**********/t[2*sl] = "0";}main(){char s[100], t[100];printf("\nPlease enter string s:"); scanf("%s", s);fun(s, t);printf("The result is: %s\n", t);}答案:1). int i,sl;2). t[i] = s[sl-i-1];3). t[2*sl] = '\0'; 或 t[2*sl] = 0;第2题【程序改错】功能:求出以下分数序列的前n项之和。
和值通过函数值返回main 函数。
2/1+3/2+5/3+8/5+13/8+21/13 ……例如:若n = 5,则应输出:8.391667。
------------------------------------------------------*/#include <conio.h>#include <stdio.h>/**********FOUND**********/fun ( int n ){int a, b, c, k; double s;s = 0.0; a = 2; b = 1;for ( k = 1; k <= n; k++ ){/**********FOUND**********/s = (double)a / b;c = a;a = a + b;b = c;}/**********FOUND**********/return c;}main( ){int n = 5;printf( "\nThe value of function is: %lf\n", fun ( n ) );}答案:1). double fun(int n)2). s = s + (double)a / b; 或 s += (double)a / b; 或 s += a /(double)b; 或s=s+a/(double)b;3). return s;第3题【程序改错】功能:读入一个整数m( 5≤m≤20 ),函数getarr调用函数rnd获得m个随机整数,函数sortpb将这m个随机整数从小到大排序。
C改错和程序填空 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】三、程序综合题。
(共4题,每题4分。
估计包括程序判断改错题和程序填空题)1.在下面程序横线处填上适当内容,一个类的头文件如下所示,num初始化值为5,程序产生对象T,且修改x为10,并使用show()函数输出x。
#include<>classT{private:staticintx;public:T(int);Voidshow();};_intTest::num=5;____T::T(intn){num=n;}voidT::show(){cout<<num<<endl;}voidmain(){Tt(10);();_____}2.在下划线处填上缺少的部分。
#include<>ClassA{inta,b;public:_A(inti=0,intj=0)____;列程序有一处错,请改正并说明理由#include<>classA{intX,Y;protected:intzx,zy;public:voidinit(inti,intj){zx=i;zy=j;}A(inti,intj,intn=0,intm=0){X=i,Y=j,zx=m,zy=n;}};voidmain(){Aa(25,20,3,5);(5,9);cout<<()<<endl;类中默认X,Y为私有成员,不能直接在函数体外调用。
}改正:将X,Y设置为公有成员即可。
4.下列程序有一处错误,指出改正并说明理由。
#include<>classA{private:intx;public:A(inti){x=i;}A(){x=0;}friendintmin(A&,A&);};intmin(A&a,A&b){return>:;}voidmain(){Aa(3),b(5);cout<<(a,b)<<endl;}友元函数不能直接这么调用。
/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:求如下表达式:1 1 1S = 1 + —— + ——— + ...... + ———————1+2 1+2+3 1+2+3+......+n ------------------------------------------------------*/#include <stdio.h>main(){int n;double fun();printf("Please input a number:");/**********FOUND**********/print("%d",n) ;printf("%10.6f\n",fun(n));}/**********FOUND**********/fun(int n){int i,j,t;double s;s=0;/**********FOUND**********/while(i=1;i<=n;i++);{t=0;for(j=1;j<=i;j++)t=t+j;/**********FOUND**********/=s+1/t;}return s;}/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:判断m是否为素数,若是返回1,否则返回0。
------------------------------------------------------*/#include <stdio.h>/**********FOUND**********/void fun( int n){int i,k=1;if(m<=1) k=0;/**********FOUND**********/for(i=1;i<m;i++)/**********FOUND**********/if(m%i=0) k=0;/**********FOUND**********/return m;}void main(){int m,k=0;for(m=1;m<100;m++)if(fun(m)==1){printf("%4d",m);k++;if(k%5==0) printf("\n");}}/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:用下面的和式求圆周率的近似值。
c语言程序阅读填空、运行结果、改错题三、读程序题1、float f=3.1415927;printf(“%f,%5.4f,%3.3f”,f,f,f);则程序的输出结果是3.141593,3.1416,3.142 .2、int x=6,y=7;printf(“%d,”,x++);printf(“%d\n”,++y);程序的输出结果是6,83、a=3;a+=(a<1)?a:1;printf(“%d”,a);结果是. 44、for (a=1,b=1;a<=100;a++){ if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}程序的输出结果a的值为22 .5、int y=1,x,*p,a[ ]={2,4,6,8,10};p=&a[1];for(x=0;x<3;x++)y + = * (p + x);printf(“%d\n”,y);程序的输出结果y的值是19 .四、程序填空题1、从键盘上输入10个数,求其平均值。
main(){int i;float f,sum;for(i=1,sum=0.0;i<11;i++){ scanf(“%f”,&f);Sum+=f ;}printf(“average=%f\n”,sum/10);}2、以下程序是建立一个名为myfile的文件,并把从键盘输入的字符存入该文件,当键盘上输入结束时关闭该文件。
#includemain(){ FILE *fp;char c;fp= ;do{c=getchar();fputs(c,fp);}while(c!=EOF);3、以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。
请填空。
main(){ float x,amax,amin;scanf(“%f”,&x);amax=x;amin=x;while(x>=0.0 ){ if(x>amax)amax=x;if(x<=amin )amin=x;scanf(“%f”,&x);}printf(“\namax=%f\namin=%f\n”,amax,amin);} 三、阅读程序题(1) 3.141593,3.1416,3.142(2)6,8(3) 4(4)22(5)19四、程序填空题1、scanf(“%f”,&f);sum+=f;2、fopen(“myfile”,w)fclose(fp);3、x>=0.0 x<=amin三、阅读程序题1、int x=6,y=7;printf(“%d,”,x++);printf(“%d\n”,++y);程序的输出结果是______.2、float f=3.1415927;printf(“%f,%5.4f,%3.3f”,f,f,f);则程序的输出结果是______.3、a=3;a+=(a<1)a:1;printf(“%d”,a);结果是______.4、main(){ int a[5]={2,4,6,8,10},*P,* *k;p=a;k=&p;printf(“%d,”,*(p++));printf(“%d\n”,* *k);程序的输出结果是______.5、main(){int a,b;for (a=1,b=1;a<=100;a++){ if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;} }程序的输出结果a的值为______.四、程序填空题1、求主次对角线之和。
1、结果:75#include "stdio.h"fun( int m, int xx[] ){int i,j,k=0;xx[k++]=1;for( i=2; i<=m; i++)for( j=2; j<i; j++)if( _____________) // i%j==0 {xx[k++]=i;break;}_____________; //return k}main(){int zz[100];printf("%d\n",fun(100,zz));}2、结果:8.640500#include <stdio.h>#include <math.h>double fun(int n){/*下行有错*/int s=0; int i; //double s=0.0; int i; for(i=1;i<=n;i++)s+=log(1.0*i);s=sqrt(s);/*下行有错*/return ; //return s;}main(){printf("%lf\n",fun(30));}#include <stdio.h>void main(){int i,n=0;for(i=10006;i<=99996;i++)if(i%10==6 && i%3==0)n++;printf("%d\n",n);}/*求1到1000之内能被7或11整除、但不能同时被7和11整除的整数个数。
请编写程序。
*/#include <stdio.h>void main(){int i,n=0;for(i=1;i<=1000;i++)if((i%7==0||i%11==0)&&(!(i%7==0&&i%11==0))){n=n+1;}printf("%d\n",n);}#include<stdio.h>int fun(int m){int i,k;for(i=m+1;;i++){for(k=2;k<i;k++)/*下行有错*/if(i%k!=0) break; //if(i%k==0) break; if(k==i)/*下行有错*/return k; //return i;}}main(){int n;scanf("%d",&n);printf("%d\n",fun(n));}6、结果:5#include <stdio.h>#include <math.h>main(){int a,b,sum,count=0,i;/*下行有错 */for (a=1; a<=700; a--) // for (a=1; a<=700; a++) {sum=0;for(b=1;b<=a;b++){if(a%b==0)sum=sum+a/b;}for(i=2;i<=9;i++)if(sum==a*i)/*下行有错 */count+=i; //count+=1;}printf("%d\n",count);}7、结果:495.00#include<stdio.h>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<=m-n;i++) p=p/i;__________ //return p;}main(){ printf("%.2f\n",fun(12,8));}#include<stdio.h>main(){int p,q,r,s,n=0;for(p=1;p<=100;p++)for(q=p;q<=100;q++)for(r=q;r<=100;r++)for(s=r;s<=100;s++)if(1.0/p+1.0/q+1.0/r+1.0/s==1) n++;printf("%d",n);}#include<stdio.h>/*下行有错*/IsPrime(integer n) // int IsPrime(int n) { int i,m;m=1;for(i=2;i<n;i++)/*下行有错*/if(n%i) // if(n%i==0){m=0;break;}return(m);}main( ){ int j,k=2310,sum=0;for(j=2;j<=k;j++)if((!(k%j))&&(IsPrime(j)))sum+=j;printf("%d\n",sum);}#include<stdio.h>main(){int i,t=1,s=0;for(i=1;i<=101;i+=2){s=s+t*i;__________ // t=t*(-1); }printf("%d\n",s);}#include "stdio.h"int fun(int a,int b){int i,count=0,low,high;for ( i=a;i<=b;i++ ){low=i%10;high=i/100;if( _____________ ) // if(low==high )count++;}return count;}main(){printf("%d\n",_____________ ); //fun(300,900) }#include<stdio.h>void main(){int num,a,b,c,count=0;/*下行有错*/while(num=101;num<1000;num++) // for(num=101;num<1000;num++) {a=num/100;b=num%100/10;c=num%10;/*下行有错*/if(num+c*100+b*10+a=1333) // if(num+c*100+b*10+a==1333) count++;}printf("%d\n",count);}13、结果:23.197745#include<stdio.h>#include<math.h>double 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+=__________;// sum+=sqrt(s); s0=s1;s1=s2;s2=s;}__________ //return sum;}main(){ printf("%f\n",fun(10));}#include<stdio.h>#include<math.h>main(){ int i,ge,shi,bai,n=0;for(i=1;i<1000;i++){ ge=i%10;shi=i/10%10;bai=i/100;if(i==pow(ge,3)+pow(shi,3)+pow(bai,3)) n++;}printf("%d\n",n);}#include<stdio.h>int fun(int a,int b){ int r,t;if(a<b){ t=a; a=b; b=t;}r=a%b;while(r!=0){ a=b;b=r;/*下行有错*/r=a/b; // r=a%b;}/*下行有错*/return a; // return b; }main(){ int a;a=fun(780,208);printf("%d\n",a);}#include<stdio.h>long fun(int g){switch(g){case 0: return 0;case 1: return 1;case 2: return 1;}return( __________);// return( fun(g-1)+fun(g-2)); }main(){long fib;int n=25;fib=__________ ;//fun(n);printf("%ld\n",fib);}#include<stdio.h>/*下行有错*/void IsPrime(int n) // int IsPrime(int n) { int i,m;m=1;for(i=2;i<n;i++)if(!(n%i)){ m=0;/*下行有错*/continue; //break;}return(m);}main( ){ int j,k=2310,sum=1;for(j=2;j<=k;j++)if((!(k%j))&&(IsPrime(j)))sum*=j;printf("%d\n",sum);}#include<stdio.h>double fun(int n){double s=1.0;int i;for(i=1;__________ ;i++) //i<=n s=s-1.0/(i*(i+1));__________ //return s;}main(){printf("%.4f\n",fun(7));}#include<stdio.h>age( int n ){ int c;if( n==1 ) c=10;else __________ //c=age(n-1)+2;return(c);}main(){ int n=10;printf("%d\n", __________ ); // age(n) }21、结果: 5118372#include <stdio.h>#include <math.h>main(){ long sum;int i;sum=0;for (i=5;i<=80;i++){/*下行有错*/if (fmod(i,2)==0) // if (fmod(i,2)==1) sum+=i*i*i;}printf("%ld\n",sum);}#include <stdio.h>main(){ int i,a,b,c,d,n=0;for (i=1000;i<=9999;i++){d=i%10;c=i/10%10;b=i/100%10;a=i/1000;if(a*a+b*b+c*c+d*d==100)n++;}printf("%d\n",n);}#include<stdio.h>int mcf(int a,int b){ int temp;while(b){__________a=b;b=temp;}return a;}main(){printf("%d\n",__________ ); // mcf(234,338) }#include <stdio.h>#include <math.h>int prime(int n){ int yes, i;if(n<=1) {return 0;}yes=1;for(i=2; i<=sqrt(n); i++) /*下行有错*/if(n%i!=0) //if(n%i==0) { yes=0; break;}return yes;}main(){int sum=0, i;for(i=2;i<500; i++)if(prime(i))/*下行有错*/sum+=1; //sum+=i;printf("%d\n", sum);}#include <stdio.h>main(){ int i,a,b,c,n=0;for (i=101;i<=999;i+=2){c=i%10;b=i/10%10;a=i/100;if((a+b+c)%12==0)n++;}printf("%d\n",n);}#include<stdio.h> main(){int i,s=1;for(i=9;i>=1;i--) s=2*(s+1) ; printf("%d",s);}#include <stdio.h>#include <math.h>int su(int x){int j,k;k=sqrt(x) ;for(j=2;j<=k;j++){if (x%j==0) break;}if (x>1&&j>k) return (1);else return (0);}void main(){ long sum=0;int a,i,j;for (a=11;a<=99;a++){ i=a%10;j=a/10;if (su(a)&&su(i*10+j)){sum=sum+a;printf("%5d",a);} }printf("\n %ld",sum);}#include <conio.h>#include <stdio.h>#include <math.h>main(){ long s;long k,n,sum=0,count=0;for (n=2;n<=750;n++){ if (n<10) k=10;else if (n<100) k=100;else k=1000;s=n*n;if (s%k==n) {count++;sum+=n;printf("%4d",n);} }printf("\n%5ld,%5ld",count,sum);}27下面的程序中,函数fun的功能是:根据形参m,计算下面公式的值。