2011二级C语言程序改错题汇总.doc_第1页
2011二级C语言程序改错题汇总.doc_第2页
2011二级C语言程序改错题汇总.doc_第3页
2011二级C语言程序改错题汇总.doc_第4页
2011二级C语言程序改错题汇总.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

C题库改程题汇总索引循环4组合11二分法求根 多函数 精度 数据类型12多项式之和 迭带 循环终值13多项式之和 数据类型 循环终值36. 多项式之和23求多项式的和 包含 返回值25求PI 精度 正负号35级数和 终止值 t=s的妙用37PI 精度34.数列 前N项平方和20菲玻那契数列第N项24.分数序列 前N项和二维数组1. 二维数组 对角线积 赋初值 输入函数的正确使用(地址)一维数组26数组 找最大数次大数技巧 最小值赋值27数组 统计低于平均值人数 计数 多种传值办法28随机数 选择排序 多函数17.数组 选择排序5一维数组 按要求输出 似二维数组素数2求一个整数的所有质因子 判素数 函数定义 if条件9按指定条件找素数 判素数的关键环节33若干素数之和 技巧31.判素数指针3求两数的平方根之和 直接间接运算6.两数交换 函数定义形参必分别标注数据类型30传址 形参的声明字符串14统计各元音字母个数 字串 数组下标妙用 字串结束数操作7输出k以内最大的10个能被13或17整除的自然数之和 逻辑等于 计数器 大括号18由一个数构成另一个数的技巧(数的逐位取出 由小变大) 逻辑等于19求三个数的最小公倍数20菲玻那契数列第N项21字符串转成数 八进制22阶乘 由大向小 技巧29公约数32由一个数转成另一个数 隔位取数15.由一个数转成另一个数16.找含5的自然数 数组排序8数据交换 三个数的有序排放 10选择排序 内层循环的起始值 1.二维数组 对角线积 赋初值 输入函数的正确使用(地址)/*1.给定程序modi.c中,fun函数的功能是;先从键盘上输入一个3行3列的距阵的各个元素的值,然后输出主对角线元素之积。请改正程序中的错误,在横线处填上适当的内容并把横线删除,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。以下不再提示*/#include int fun() int a33,sum; int i,j;/*found*/_; sum=1; for (i=0;i3;i+) for (j=0;j3;j+)/*found*/scanf(%d aij); scanf(%d,ai+j);#scanf(%d,&aij);#scanf(%d,*(a+i)+j); for (i=0;i3;i+) sum=sum*aii; printf(Sum=%dn,sum);main() fun(); 2求一个整数的所有质因子 判素数/*2给定程序modi.c的功能是:读入一个整数k(2=K=10000),打印它的所有质因子(即所有为素数的因子)。例如,若输入整数2310,则应输出:2、3、5、7、11。*/#include conio.h#include stdio.h/*found*/Isprime(int n); Isprime(int n) int i,m; m=1; for(i=2;in;i+)/*found*/if !(n%i) if(!(n%i)#if(n%i=0) m=0;break; return(m);main()int j,k; clrscr(); printf(nPlease enter an integer number between 2 and 10000:);scanf(%d,&k); printf(nnThe prime factor(s) of %d is (are):,k); for(j=2;j=k;j+) if (!(k%j)&(Isprime(j) printf(n %4d,j); printf(n);3求两数的平方根之和 地址与地址中的内容/*3.输入二个双精度数,函数返回它们的平方根之和.例如:输入22.993612和84.57629872,则输出:y=13.991703.*/#include #include #include /*found*/double fun(double *a, *b) doublefun(double*a,double*b)#doublefun(double*b,double*a) double c;/*found*/c = sqrt( a ) + sqrt( b ); c=sqrt(*b)+sqrt(*a);#c=sqrt(*a)+sqrt(*b); return c;main ( ) double a, b, y; clrscr( ); printf ( Enter a, b : ); scanf (%lf%lf, &a, &b ); y = fun (&a, &b); printf (y = %f n, y );4组合/*4给定程序modi.c中函数fun的功能是:从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是15。程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数。*/#include int fun() int i,j,k,sum=0; printf(nThe result :nn);/*found*/for(i=0; i=3; i+) for(i=1;i=3;i+) for(j=1; j=1 & k=0&k=6) sum=sum+1; printf(red:%4d white:%4d black:%4dn,i,j,k); return sum;main() int sum; sum=fun(); printf(sum =%4dnn,sum);5一维数组 按要求输出 似二维数组/*5给定程序modi.c中函数fun的功能是:给一维数组a输入任意4个整数,并按下例的规律输出。例如输入1、2、3、4,程序运行后将输出以下方阵。 4 1 2 3 3 4 1 2 2 3 4 1 1 2 3 4 */#include #define M 4/*found*/void fun(int a) voidfun(int*a) int i,j,k,m; printf(Enter 4 number : ); for(i=0; i0;i-) k=aM-1; for(j=M-1;j0;j-)/*found*/aj=aj+1; aj=aj-1; a0=k; for(m=0; mM; m+) printf(%d ,am); printf(n); main() int aM; fun(a); printf(nn);6.两数交换 传址 形参必分别标注数据类型/*6给定程序modi.c中,函数fun的功能是:实现两个整数的交换。例如给a和b分别输入:60和65,输出为: a=65 b=60*/#include #include /*found*/void fun(int a,b) voidfun(int*a,int*b)#voidfun(int*b,int*a)int t;/*found*/t=b;b=a;a=t; t=*b;*b=*a;*a=t;#t=*a;*a=*b;*b=t;main()int a,b; clrscr(); printf(Enter a,b:);scanf(%d%d,&a,&b); fun(&a,&b); printf(a=%d b=%dn,a,b);7逻辑等于 计数器 输出k以内最大的10个能被13或17整除的自然数之和/*7给定程序modi.c中,函数fun的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数值为4622。*/#include #include int fun(int k)int m=0,mc=0,j; while (k=2)&(mc10) /*found*/ if (k%13=0)|(k%17=0) if(k%17=0|k%13=0)#if(k%13=0|k%17=0) m=m+k;mc+; k-; return m;/*found*/_ main()clrscr(); printf(%dn,fun(500);8数据交换 三个数的有序排放/*8.把主函数中输入的3个数,最大的放入a中,最小的放入c中,若输入:55 12 34.则输出:a=55.0,b=34.0,c=12.0.*/#include void fun(float *p,float *q,float *s) /*found*/ float *k; floatk; if (*p*q) k=*p;*p=*q;*q=k;/*found*/if (*s*p) if(*p*p)#if(0*p-*s)#if(*p-*s0) k=*s;*s=*p;*p=k; if (*q*s) k=*q;*q=*s;*s=k;main() float a,b,c; printf(Input a b c: ); scanf(%f%f%f,&a,&b,&c); printf(a=%4.1f,b=%4.1f,c=%4.1fnn,a,b,c); fun(&a,&b,&c); printf(a=%4.1f,b=%4.1f,c=%4.1fnn,a,b,c);9按指定条件找素数 判素数的关键环节/*9.给定程序modi.c中,函数fun的功能是:找出一个大于给定整数m且紧随m的素数,并作为函数值返回。*/#include #include int fun(int m) int i,k; for (i=m+1;i+) for (k=2;ki;k+)/*found*/if (i%k!=0) if(i%k=0) break;/*found*/if (k=i)#if(i=k)#if(i=k) return(i); main()int n; clrscr(); printf(nPlease enter n:); scanf(%d,&n); printf(%dn,fun(n);10内层循环的起始终止值 选择排序/*10.给定程序modi.c中,函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。*/#include #define N 20void fun(int a,int n)int i,j,t,p; for (j=0;jn-1;j+) /*found*/p=j;for (i=0;in;i+) for(i=j;in;i+)#for(i=j+1;in;i+) if(aiap)/*found*/p=j; p=i; t=ap;ap=aj;aj=t; main() int aN=9,6,8,3,-1,i,m=5; printf(排序前的数据:); for(i=0;im;i+) printf(%d,ai);printf(n); fun(a,m); printf(排序后的数据:); for (i=0;im;i+) printf(%d,ai);printf(n);11二分法求根 多函数 精度/*11给定程序modi.c,函数fun和funx的功能是:用二分法求方程2x3-4x2+3x-6=0的一个根,并要求绝对误差不超过0.001。 例如,若给m输入-100,给n输入90,则函数求得的一个根值为2.000。*/#include stdio.h#include math.hdouble funx(double x) return(2*x*x*x-4*x*x+3*x-6); double fun(double m,double n)/*found*/int r; doubler; r=(m+n)/2;/*found*/ while (fabs(n-m)0.001)#while(fabs(m-n)0.001) if(funx(r)*funx(n)0) m=r; else n=r; r=(m+n)/2; return r;main()double m,n,root; printf(Enter m n: n);scanf(%lf%lf,&m,&n); root=fun(m,n); printf(root=%6.3fn,root);12多项式之和 迭带/*12.给定程序modi.c中,函数fun的功能是:根据整型形参n,计算如下公式的值。A1=1,A2=1/(1+A1),A3=1/(1+A2)。An=1/1+A(n-1)例如:若n=10,则应输出:0.617977。*/#include #include /*found*/int fun(int n) floatfun(intn) float A=1;int i;/*found*/for (i=2;in;i+) for(i=2;i=n;i+) A=1.0/(1+A); return A;main() int n; clrscr(); printf(nPlease enter n:); scanf(%d,&n); printf(A%d=%fn,n,fun(n);13多项式之和 数据类型/*13给定程序modi.c中,函数fun的功能是:根据整型形参m的值,计算如下公式的值。t=1-1/(2*2)-1/(3*3).-1/(m*m)例如:若m中的值为:5,则应输出:0.536389。*/#include #include double fun(int m)double y=1.0; int i;/*found*/ for (i=2;im;i+) for(i=2;i=m;i+)/*found*/ y-=1/(i*i); y-=1./(i*i);#y-=1.0/(i*i);#y-=(double)1/(i*i); return(y);main()int n=5; clrscr(); printf(nThe result is %lfn,fun(n);14字串 数组下标妙用 字串结束 /*14函数fun的功能是:统计字符串中各元音字母(即:A 、E、I、O、U)的个数。注意:字母不分大小写。 例如:若输入:THIs is a boot,则输出应该是:1、0、2、2、0。*/#include #include fun(char *s,int num5) int k,i=5; for (k=0;k=0) numi+; 15.由一个数转成另一个数/*15.将长整型数中的每一位上为奇数的数依次取出,构成一个新数放在t中,高位仍为高位,低位仍为低位,例如:s中的数为:87653142,t中的数为7531.*/#include #include void fun(long s,long *t) int d; long s1=1;/*found*/t=0; *t=0; while (s0) d=s%10;/*found*/if (d%2=0) if(d%2!=0)#if(d%2) #if(d%2=1) *t=d*s1+*t; s1*=10; s/=10; main() long s,t; clrscr(); printf(nPlease enter s:);scanf(%ld,&s); fun(s,&t); printf(The result is:%ldn,t);16.找含5的自然数 数组/*16.从整数10到55之间,选出能被3整除且至少有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回.规定:函数中的a1中放个位数,a2中放十位数.*/#include fun (int *b) int k,a1,a2,i=0; for (k=10;k=55;k+) a2=k/10;/*found*/ a1=_; a1=k%10; if(k%3=0 & a2=5)| (k%3=0 & a1=5) bi=k;i+; /*found*/return k; return(i);#returni; main() int a100,k,m; m=fun(a); printf(The result is:n); for (k=0;km;k+) printf(%4d,ak); printf(n);17.数组 选择排序/*17.把n个数按由大到小排序.*/#include #include #include #define N 20/*found*/void fun(int a,int n) voidfun(int*a,intn)#voidfun(inta,intn)#voidfun(intaN,intn) int i,j,k,t; for(j=0;jn-1;j+) k=j; for(i=j+1;in;i+)/*found*/if(aiak)k=i; t=aj;aj=ak;ak=t; main() int aN,i; clrscr(); for(i=0;iN;i+) ai=rand()%100; printf(# before sort #nn); for (i=0;iN;i+) printf(i+1)%10 ? %6d:%6dn,ai); fun(a,N); printf(* after sort *nn); for (i=0;iN;i+) printf(i+1)%10 ? %6d:%6dn,ai); printf(n);18由一个数构成另一个数的技巧(数的逐位取出 由小变大) 逻辑等于 /*18fun函数功能是 :将长整形数中每一位上为偶数的数依次取出,构成一个新数放在t 中,高位仍在高位,低位仍在地位。如:当s中的数为:87653142时,t中的数为:8642。*/#include #include void fun(long s,long *t)int d; long s1=1; *t=0; while (s0) d=s%10;/*found*/if (d%2=0) if(d%2=0)#if(!(d%2) *t=d*s1+*t; s1*=10; /*found*/s=10; if(d%2=0)#if(!(d%2) main()long s,t; clrscr(); printf(nPlease enter s:);scanf(%ld,&s); fun(s,&t); printf(The result is:%ldn,t);19求三个数的最小公倍数/*19.函数fun的功能是:求三个数的最小公倍数。如:变量x1,x2,x3分别输入15 11 2,则输出结果应当是:330。*/#include fun(int x,int y,int z) int j,t,n,m; j=1; t=j%x;/*found*/m=t%y; m=j%y; n=j%z; while(t!=0|m!=0|n!=0) j=j+1; t=j%x; m=j%y;/*found*/n=t%z; n=j%z; return j;main() int x1,x2,x3,j; printf(Input x1 x2 x3: );scanf(%d%d%d,&x1,&x2,&x3);printf(x1=%d,x2=%d,x3=%dn,x1,x2,x3);j=fun(x1,x2,x3);printf(The minimal common multiple is :%dn,j);20菲玻那契数列第N项/*20函数fun的功能是:求广义菲玻那契级数的第n项。广义菲玻那契级数的前n项为:1,1,1,3,5,9,17,31,.项值通过函数值返回main()函数。 例如:若n=15,则应输出:2209。*/#include #include long fun(int n) long a=1,b=1,c=1,d=1,k;/*found*/For(k=4;k=n;k+) for(k=4;k=n;k+) d=a+b+c;/*found*/a=b;b=c;c=a; a=b;b=c;c=d; return d;main()int n=15; clrscr(); printf(The value is:%ldn,fun(n);21字符串转成数 八进制/*21函数fun功能是:将一个由八进制数字组成的字符串换成与其相等的十进制整数。输入的字符串最多只能包含5位8进制数字。若输入77777,则输出将是32767。*/#include int fun(char *p)int n;/*found*/ n=*p-o; n=*p-0; p+; while (*p!=0) /*found*/ n=n*7+*p-o; n=n*8+*p-0;#n=*p-0+n*8; p+; return n;main()char s6;int i;int n; printf(Enter a string(0catal digits): );gets(s);if(strlen(s)5)printf(Error:String too longer !nn);exit(0);for (i=0;si;i+) if(si7) printf(Error:%c not is ocatal digits!nn,si);exit(0);printf(The original string:);puts(s);n=fun(s);printf(n%s is convered to integer number: %dnn,s,n);22阶乘 由大向小/*22.函数fun的功能是:计算n!,如:给n输入5,则输出120.00000。*/#include #include double fun(int n)double result=1.0;/*found*/ if n=0 if(!n)#if(n=0)#if(0=n) return 1.0; while(n1 & n170)/*found*/result*=n; result*=n-; return result;main()int n; printf(Input N:); scanf(%d,&n); printf(nn%d!=%lfnn,n,fun(n);23求多项式的和 包含 返回值/*23根据整形参数m,计算如下公式的值:y=1+1/ +1/+.+1/,若m的值为5,则应输出:3.231671*/#include /*found*/_ #includemath.h#includedouble fun(int m) int i;double t,y=0; for (i=1;i=m;i+) t=1/sqrt(i); y=y+t; /*found*/_ returny;main() int m;double y; printf(Enter m: );scanf(%d,&m); printf(ny=%fn,fun(m); 24.分数序列 前N项和/*24.求出以下分数序列的前n项和: 2/1,3/2,5/3,8/5,13/8,21/13. 和值通过函数值返回main函数.例如:若n值为5,应输出:8.391667.*/#include #include /*found*/fun(int n) doublefun(intn) int a,b,c,k;double s; s=0.0;a=2;b=1; for(k=1;k=n;k+) /*found*/s=s+(Double)a/b; s=s+(double)a/b; c=a;a=a+b;b=c; return s;main() int n=5; clrscr();printf(nThe value of function is:%lfn,fun(n);25求PI 精度 正负号/*25用下面的公式求pi的值直到最后一项的绝对值小于指定的数(参数num)为止:pi/4=1-1/3+1/5-1/7+.如:程序运行后输入0.0001,则程序输出3.1414*/#include #include float fun(float num) int s; float n,t,pi; t=1;pi=0;n=1;s=1;/*found*/while(t=num) while(fabs(t)=num) pi=pi+t; n=n+2; s=-s;/*found*/t=s%n; t=s/n; pi=pi*4; return pi;main()float n1,n2; clrscr(); printf(Enter a float number:); scanf(%f,&n1); n2=fun(n1); printf(%6.4fn,n2);26数组 找最大数次大数技巧 最小值赋值/* 26求出a所指数组中最大数和次最大数(规定最大数和次最大数不在a0和a1中),依次和a0和a1中的数对调。例如:原有数组为:7,10,12,0,3,6,9,11,5,8 结果数组为:12,11,7,0,3,6,9,10,5,8*/#include #include #define N 20int fun(int *a,int n)int k,m1,m2,max1,max2,t; max1=max2=-32768;m1=m2=0; for (k=0;kmax1) max2=max1;m2=m1; max1=ak;m1=k; else if (akmax2) max2=ak;m2=k;/*found*/t=a0;am1=a0;am1=t; t=a0;a0=am1;am1=t;#t=am1;am1=a0;a0=t;/*found*/t=a1;am2=a1;am2=t; t=a1;a1=am2;am2=t;#t=am2;am2=a1;a1=t; main() int x,bN=7,10,12,0,3,6,9,11,5,8,n=10,i; clrscr(); for (i=0;in;i+) printf(%d ,bi);printf(n); fun(b,n); for(i=0;in;i+) printf(%d ,bi);printf(n);27数组 统计低于平均值人数 计数 多种传值办法/*27从n个学生的成绩中统计出低于平均值的学生人数,人数由函数返回,平均成绩放在形参aver所指的存储单元中, 例如:学生人数为8成绩如下:80.5 60 72 90.5 98 51.5 88 64 低于平均分的人数为4人,平均分为 75.5625。*/#include #include #define N 20int fun(float *s,int n ,float *aver)float ave,t=0.0; int count=0,k,i; for (k=0;kn;k+)/*found*/t=sk; t+=sk;#t=t+sk;#t=sk+t; ave=t/n; for (i=0;in;i+) if(siave) count+;/*found*/*aver=&ave; *aver=ave; return count;main()float s30,aver; int m,i; clrscr(); printf(nPlease enter m:);scanf(%d,&m); printf(nPlease enter %d mark :n,m); for(i=0;im;i+) scanf(%f,s+i); printf(nThe number of strudents : %d n,fun(s,m,&aver); printf(Ave=%fn,aver);28随机数 选择排序 多函数/*28读入一个整数m(5=m=20),函数getarr调用函数rnd获得m个随机整数,函数sortpb将这m个随机整数从小到大排序。若输入整数为7,则输出:3,10,17,28,32,36,47*/#include conio.h#include stdio.hsortpb(int n,int *a)/*found*/int i,j,p,t inti,j,p,t; for(j=0;jn-1;j+) p=j; for(i=j+1;iai) p=i; if(apai)p=i;#if(aiap)p=i; if (p!=j) t=aj;aj=ap;ap=t; double rnd() static t=29,c=217,m=1024,r=0; r=(r*t+c)%m; return(double)r/m);getarr(int n,int *x) int i; for(i=1;i=n;i+,x+) *x=(int)(50*rnd();putarr(int n,int *z) int i; for(i=1;i=n;i+,z+) printf(%4d,*z); if(!(i%10) printf(n); printf(n);main() int aa20,n; clrscr(); printf(nPlease enter an integer number between 5 and 20:); scanf(%d,&n); getarr(n,aa); printf(nnBefore sorting %d numbers:n,n);putarr(n,aa); sortpb(n,aa); printf(nAfter sorting Td numbers:n,n);putarr(n,aa);29公约数/* 29.求出两个非零正整数的最大公约数,并作为函数值返回。例如:将num1和num2分别输入49和21,则输出的最大公约数为7。*/#include int fun(int a,int b)int r,t; if(ab) t=a;a=b;a=t; r=a%b;/*found*/while(r=0) while(r)#while(r!=0) a=b;b=r;r=a%b;/*found

温馨提示

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

评论

0/150

提交评论