《福建省计算机二级考试C语言上机题库改错填空编程(共20页).doc》由会员分享,可在线阅读,更多相关《福建省计算机二级考试C语言上机题库改错填空编程(共20页).doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上二、改错题Cmody191.c修改程序,用以计算1100之间所有的偶数之和。#include #include void main( ) int i=1;/*/ int sum=2 /*/; while(i+,i=100) if(/*/ i=(i/2)*2 /*/) continue; sum+=i; printf(Sum is %dn,sum); getch();Cmody192.c修改程序,将二维数组表示的方阵左下半三角(不含对角线)各元素加4,右上半三角(含对角线)各元素乘2。#include #define N 5void main() int aNN,i,j
2、; for(i=0;iN;i+) for(j=0;jN;j+) aij=i*5+j+11; printf(nArray a is:n); for(i=0;iN;i+) for(j=0;jN;j+) printf(%3d ,aij); printf(n); for(i=0;iN;i+) /*/ for(j=0;j=i;j+)/*/ aij+=4; for(i=0;iN;i+) /*/ for(j=i+1 ;jN;j+) /*/ aij*=2; printf(nArray a is turned:n); for(i=0;iN;i+) for(j=0;jN;j+) printf(%3d ,aij);
3、 printf(n); getch();Cmody201.c修改程序,计算满足以下条件的整数n的最大值。22+42+62+82+n21000#include #include void main() int n=0, sum=0; /*/ while(sum1000); /*/ /*/ sum+=n2 /*/; n+,n+; printf(n=%dn,n-2); getch();Cmody202.c修改程序,实现从键盘输入一串字符,并在字符串中从第m个字符串开始截取n个字符。例如:输入的字符串为”welcome”,m=2, n=3, 则截取的字串为”elc”#include #include
4、void main() char str100,sub100; int m,n,len,i; printf(Enter string:); gets(str); printf(nEnter m n:); scanf(%d%d,&m,&n); len=strlen(str); if( m-1+nlen ) printf(Cant run with %d and %d!n,m,n); else i=0;/*/ while(i=n) /*/ /*/ subi=strm+i; /*/ i+; /*/ subi=n; /*/ printf(sub string is:%sn,sub); getch();
5、Cmody211.c修改程序,实现输入一整型二维数组,计算其中数组元素的最大值与最小值的差。#include #include #define ROW 3#define COL 4void main() int aROWCOL,max,min,i,j,result; clrscr(); printf(Enter array a:n); for(i=0;iROW;i+) for(j=0;jCOL;j+) scanf(%d,&aij); /*/ max=min=0; /*/ for(i=0;iROW;i+) for(j=0;jCOL;j+) if(/*/ minmax) /*/ max=aij /
6、*/ printf(Result= %dn,max-min); getch();Cmody212.c修改程序cmody212.c,实现从键盘输入一串字符和一个字串,输出该子串在原字符串中出现的次数。#include #include void main() int i,j,k,count; char s1100,s2100; printf(Enter main String:); gets(s1); printf(Enter Sub String:); gets(s2); count=0;/*/ for(i=0;*s1!=0;i+) /*/ /*/ for(k=0; (s1j=s2k)&(s1
7、j!=0); j+,k+ ); /*/ if(s2k=0) count+; printf(nCount=%dn,count); getch();Cmody221.c修改程序,输出存储在结构体数组中8位学生成绩的平均分以及最高学生的姓名#include /*/ structure student /*/ char name10; float score;void main( ) struct student stu8=Mary,76,John,85,Tom,81,Susa,87,Wilu,79,Yili,65,Sonmu,73,Lichar,70; int i=0,mrk; float tota
8、l=0,aver,max; max=stu0.score; mrk=0; while(imax) max=stui.score; mrk=i; /*/ i+ /*/ aver=total/8; printf(naver=%.2f n Best is %sn,aver,stumrk.name); getch();Cmody222.c修改程序,完成其中n个字符串的升序排列#include #include #define ROW 5#define COL 30void fun(char sCOL,int n) char tempCOL; int i,j; for(i=0; in-1; i+)/*/
9、 for (j=i+1; j0) strcpy(temp,si); strcpy(si,sj); strcpy(sj,temp); void main() int i; char strCOL=DEF,BAEELCS,FHIAME,CBADF,APMAE;/*/ fun(str,COL); /*/ clrscr(); for(i=0;iROW;i+) printf(%sn,stri); getch();Cmody231.c修改程序cmody231.c,实现将输入的十进制正整数转换成十六进制数,且用字符串存放该十六进制数#include #include #include void main()
10、 int x,b,i,j; char s5; printf(Input a number(Dec): ); scanf(%d,&x); /*/ i=1; /*/ while(x0) b=x%16; if(b9) si=b-10+A; else /*/ si=b /*/; x=x/16; i+; printf(nHex number is: ); for(j=i-1;j=0;j-) putchar(/*/ si /*/); getch();Cmody232.c修改程序cmody232.c,输出下列9行数字金字塔 1 121 12321 #includevoid main() int i,j,k;
11、 for(k=1;k=9;k+) /*/ for(i=0;i=k;i+) /*/ printf( ); for(i=1;i1;j-) /*/ printf(%d,j); printf(n); getch( );三、填空题Ccon191.c程序ccon191.c,从键盘输入3个实型值,若它们能构成一个三角形(即任意两边之和大于第三边),则根据以下公式求该三角形面积;否则,提示相应信息。#include #include void main() float a,b,c,d,area; printf(Please input 3 numbers:n); scanf(%f,%f,%f,&a,&b,&c
12、); if( a+bc /*/ /*/) d = (a+b+c)/2; area = /*/ /*/; printf(area is %.2fn,area); else printf(Not Triangle!n); getch();Ccon192.c程序ccon192.c,计算:已知大货车限载8吨、中型货车限载3吨、微型货车限载1吨,需50辆车运输100吨货物时,应配备的大、中、微型车分别多少辆?共有多少种解决方案?#include #include int /*/ /*/( ) int big,median,small,n=0; printf( big median small n); f
13、or(big=0;big=13;/*/ /*/) for(median=0;median%2d %2d %2dn,n,big,median,small); return n;void main() int num; num = fun(); printf(n There are %d solutions.n,num); getch();Ccon201.c程序ccon201.c,按照以下袋装情况求一堆苹果的总数,总数在100300之间。若按每袋装8个苹果则多出5个,若按每袋装7个苹果,则多出4个,若按每袋装5个苹果,则多出2个。#include void main() int n; for( n
14、=300; /*/ /*/;n- ) if( n%8 = 5) if( !(n-4)%7) /*/ /*/) printf(n=%dn, n); getch();Ccon202.c程序ccon202.c中的swap函数,通过指针变量实现两个变量值的交换。#include void swap(/*/ /*/) int sum; sum = *p1+*p2; *p1 =/*/ /*/; *p2 = sum-*p1;void main() int x,y; printf(please input 2 numbers:n); scanf(%d,%d,&x,&y); printf(nOriginal:
15、x=%d y=%dn,x,y); swap(&x,&y); printf(nNow: x=%d y=%dn,x,y); getch();Ccon211.c程序ccon211.c,按每行最多5个数方式输出100400之间能同时被7和4整除的所有数及它们之和。#include void main() int i,n; int sum=0; /*/ /*/ for(i=101;i=399;i+) if(/*/ /*/ & !(i%4) ) printf(%d ,i); sum+=/*/ /*/; n+; if(n%5=0) printf(n); printf(n sum=%dn,sum); getc
16、h();Ccon212.c程序ccon212.c中的cmob函数用以输出等式a*b*c+a*c*c=560的所有a,b,c的组合(其中a,b,c只取19之间的一位整数)。如a=7, b=2, c=8时,7*2*8+7*8*8=560#include void comb(/*/ /*/)int a,b,c; for( a=1;a10;a+ ) for( b=1;b10;b+ ) for( c=1;c10;c+ ) if(/*/ /*/ =m) printf(a=%d,b=%d,c=%dn,a,b,c); void main() int result=560; comb(result); getc
17、h();Ccon221.c程序ccon221.c,输出如下图形% % % % % % %& & & & & &% % % % %& & & &% % %& &%#include #include void main() int row,col; for (row=1;row=7;row+) printf(t); for(col=1;col=/*/ /*/ ;col+) if(row%2) printf(%c,/*/ /*/); else printf(%c,/*/ /*/); printf(n); getch();Ccon222.c程序ccon222.c中的pnt函数,根据参数n(2n10),
18、输出类似如下所示的方针(n=5).1 2 3 4 510 9 8 7 6 11 12 13 14 15 20 19 18 17 16 21 22 23 24 25 #include #include #define M 10void pnt(int aMM,int n)int i,/*/ /*/; for(i=0;in;i+) for(j=0;jn;j+) if(i%2=0) aij=/*/ /*/; else aij=i*n+n-j; printf(array a(n=%d) is:n,n); for(i=0;in;i+) for(j=0;jn;j+) printf(%3d,aij); pr
19、intf(n); void main() int aMM; int n; printf(Input n(2=n And n=10):); scanf(%d,&n); pnt(/*/ /*/,n); getch();Ccon231.c程序ccon231.c, 计算以下分数序列的前18项之和#include void main() int i; float sum,a=2,b=1,t; /*/ /*/; for (i=1;i=18;i+) sum+=/*/ /*/; t=a; a=a+b; b=/*/ /*/; printf(sum=%fn,sum); getch();Ccon232.c程序cco
20、n232.c中的inv函数,通过指针变量将字符串str的内容”asdfjk”,调用inv函数后,变成:”kjfdsa”。#include #include void inv(char *str)int i,j,k; j=/*/ /*/; for(i=0;istrlen(str)/2;i+,j-) k=*(str+i); *(str+i)=*(str+j); *(str+j)=/*/ /*/; void main( ) char str=asdfjk; printf(n Original is: %sn,str); inv(str); printf(n Now is: %sn,str); get
21、ch();四、编程题cprog191.c打开程序cprog191.c,完成其中的fun函数:根据输入的汇款数额,求应交的汇费。设应交汇费的计算公式如下:#include #include double fun(float x) /*/ /*/void main() float x; double y; clrscr(); printf(Please input a number:n); scanf(%f,&x); y = fun(x); printf(f(%.2f)=%.2fn,x,y); getch();cprog192.c打开程序cprog192.c,完成其中的fun函数:对44矩阵从顶行
22、开始各行按从左到右顺序查找,找出各行中0元素之后的所有负数,并按元素出现的先后顺序存放到数组b中,并返回这些负数之和。如矩阵为:则调用函数fun( )后,数组b各元素依次为-3,-1,-4,-3,-12,-13,并返回-36.#include #include #define ROW 4#define COL 4#define LEN 12int fun(int aCOL,int b) /*/ /*/void main( ) int arraROWCOL=-2,0,-3,-1,-8,2,0,-4,0,3,-3,-12,21,0,-13,3; int arrbLEN,i,result; for(
23、i=0;iLEN;i+) arrbi=0; clrscr(); result=fun(arra,arrb); printf(array arrb is:n); for(i=0;iLEN;i+) if(arrbi=0) printf( ); else printf(%4d,arrbi); printf(nresult=%d,result); getch( );cprog201.c打开cprog201.c,完成其中的函数fun,该函数的数学表达式是#include #include double fun(float x) /*/ /*/void main( ) float x; double y;
24、 printf(Please input a number:n); scanf(%f,&x); y = fun(x); printf(f(%.3f)=%.3fn,x,y); getch();cprog202.c打开程序cprog202.c,完成其中的fun函数:函数fun(double x, int n),用以下公式近似计算cos(x)的值:#include void main() double x; int n; double fun(double x,int n); printf(Please enter x,n:); scanf(%lf%d,&x,&n); printf(cos(%lf)
25、=%lfn,x,fun(x,n); getch();double fun(double x,int n) /*/ /*/cprog211.c打开cprog211.c,完成其中的函数fun,该函数的数学表达式是#include #include double fun(float x) /*/ /*/void main( ) float x; double y; clrscr(); printf(Please input a number:n); scanf(%f,&x); y = fun(x); printf(f(%.2f)=%.2fn,x,y); getch( );cprog212.c打开程序
26、cprog212.c,完成其中的fun函数:对两个字符串中小写英文字母的个数进行比较,并返回比较的结果。(注:第1个字符串比第2个字符串的小写英文字母个数多,则返回正数,相等返回0,个数少则返回负数)例如:字符串str1为“abc123”,字符串str2为”abcd”,则函数fun的返回值应小于0。#include int fun(char *str1, char *str2) /*/ /*/void main( ) int rela; char *str1,*str2; clrscr(); printf(Please input string NO.1:); gets(str1); prin
27、tf(Please input string NO.2:); gets(str2); rela=fun(str1,str2); if(rela0) printf(Numbers of Lower char in %s Numbers of Lower char in %s,str1,str2); if(rela=0) printf(Numbers of Lower char in %s = Numbers of Lower char in %s,str1,str2); if(rela0) printf(Numbers of Lower char in %s Numbers of Lower c
28、har in %s,str1,str2); getch();cprog221.c打开程序cporg221.c,完成其中的fun函数:根据输入的x和y的值,按如下公式计算: 将计算结果的整数部分存入数组元素arr0,并将该计算结果的小数部分的前两位存入arr1中。#include #include void fun(int arr,double x,int y) /*/ /*/void main() int y; double x; int arra2; printf(Please enter x(1x2),y(0y1.0 &x0 & y=6) fun(arra,x,y); printf(npa
29、rt1=%d,part2=%d,arra0,arra1); else printf(x or y is out of range!); getch();cprog222.c打开程序cprog222.c,完成其中的fun函数:将一个升序数组a和一个降序数组b中的所有元素按降序存入数组c中。例如:数组a为5,10,15,27,46,数组b为50,45,42,29,15,8,5,2,则数组c就应为50,46,45,42,29,27,15,15,10,8,5,5,2。#include #define N 5#define M 8void fun(int a,int b,int c) /*/ /*/vo
30、id main() int arraN=5,10,15,27,46,arrbM=50,45,42,29,15,8,5,2; int arrcN+M,k; fun(arra,arrb,arrc); printf(array arra is:); for(k=0;kN;k+) printf(%d ,arrak); printf(narray arrb is:); for(k=0;kM;k+) printf(%d ,arrbk); printf(nresult arrc is:); for(k=0;kN+M;k+) printf(%d ,arrck); getch();cprog231.c打开程序c
31、prog231.c,完成其中的函数fun,该函数的递归公式是:#include #include void main() double x; int n; double fun(double x,int n); printf(Please enter x,n:n); scanf(%lf%d,&x,&n); printf(fun=%lfn,fun(x,n); getch();double fun(double x,int n) /*/ /*/cprog232.c打开程序cprog232.c,完成其中的fun函数:返回一维数组中的次大数(即仅小于最大数的数),设数组a中没有重复的元素。例如:数组元
32、素为45,58,33,24,40,20,30,28,31,函数fun的返回值为45.#include #define ROW 9int fun(int a ) /*/ /*/void main() int arraROW=45,58,33,24,40,20,30,28,31; int max_pre,i; max_pre=fun(arra); printf(array arra is:); for(i=0;iROW;i+) printf(%d ,arrai); printf(nmax_pre is %d,max_pre); getch(); 参考答案二、改错题cmody191.c/*/ int
33、 sum=2 /*/;int sum=0;/*/ int sum=2 /*/;if(i!=(i/2)*2)cmody192.c/*/ for(j=0;j=i;j+)/*/for(j=0; ji; j+)/*/ for(j=i+1 ;jN;j+) /*/for(j=i; jN; j+)cmody201.c/*/ while(sum1000); /*/while(sum1000)/*/ sum+=n2 /*/;/*/ sum+=n*ncmody202.c/*/ while(i=n) /*/while(in)/*/ subi=strm+i; /*/subi=strm-1+i;/*/ subi=n;
34、/*/subi= 0cmody211.c/*/ max=min=0; /*/max=min=a00;/*/ minaij/*/ max=aij /*/max=aij;cmody212.c/*/ for(i=0;*s1!=0;i+) /*/for(i=0;*(s1+i)!=0;i+)/*/ for(k=0; (s1j=s2k)&(s1j!=0); j+,k+ ); /*/for(k=0,j=i; (s1j=s2k&(s2k!=0); j+, k+);cmody221.c/*/ structure student /*/struct student/*/ total=total+stui; /*/total=total+stui.score