程序改错 好好好

上传人:bao****ty 文档编号:117155221 上传时间:2019-11-18 格式:DOC 页数:134 大小:173KB
返回 下载 相关 举报
程序改错 好好好_第1页
第1页 / 共134页
程序改错 好好好_第2页
第2页 / 共134页
程序改错 好好好_第3页
第3页 / 共134页
程序改错 好好好_第4页
第4页 / 共134页
程序改错 好好好_第5页
第5页 / 共134页
点击查看更多>>
资源描述

《程序改错 好好好》由会员分享,可在线阅读,更多相关《程序改错 好好好(134页珍藏版)》请在金锄头文库上搜索。

1、程序改错 好好好 试卷编号:10194 所属语言:Turbo C 试卷方案:cxgc 试卷总分:1380分 共有题型:1种 一、程序改错 共138题 (共计1380分) 第1题 (10.0分) /*- 【程序改错】 - 功能:根据整型形参m,计算如下公式的值: y=11/31/51/7.1/(2m-3) -*/ #include double fun(int m) /*FOUND*/ double y=1 int i; /*FOUND*/ for(i=3; i/*FOUND*/ y+=1.0/(2i-3); return(y); void main(void) int n; clrscr();

2、 printf( scanf( printf(result is n getch(); 答案: 1). double y=1; 2). for(i=3; i第2题 (10.0分) /*- 【程序改错】 - 功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。 -*/ #include #define N 20 void fun(int a, int n) int i, j, t, p; for (j = 0 ;j /*FOUND*/ p = j for (i = j;i /*FOUND*/ if(ai ap) /*FOUND*/ p=j; t = ap ; ap = aj ; aj =

3、t; main() int aN=9,6,8,3,-1,i, m = 5; printf(排序前的数据: for(i = 0;i printf(排序后的数据: for(i = 0;i 答案: 1). p = j; 2). if(ai ai) 3). p = i; 第3题 (10.0分) /*- 【程序改错】 - 功能:编写一个程序,从键盘接收一个字符串,然后按照字符顺 序从小到大进行排序,并删除重复的字符。 -*/ #include #include void main() char str100,*p,*q,*r,c; printf(输入字符串: gets(str); /*FOUND*/ f

4、or(p=str;p;p+) for(q=r=p;*q;q+) if(*r*q) r=q; /*FOUND*/ if(r=p) /*FOUND*/ c=r; *r=*p; *p=c; for(p=str;*p;p+) for(q=p;*p=*q;q+); strcpy(p+1,q); printf(结果字符串:%snn getch(); 答案: 1). for(p=str;*p;p+) 2). if(r!=p) 3). c=*r; 第4题 (10.0分) /*- 【程序改错】 - 功能:编写程序, 求矩阵(3行3列)与5的乘积 例如:输入下面的矩阵: 100 200 300 400 500 6

5、00 700 800 900 程序输出: 500 1000 1500 2000 2500 3000 3500 4000 4500 -*/ #include int fun(int array33) /*FOUND*/ int i;j; /*FOUND*/ for(i=1; i /*FOUND*/ arrayij=arrayij/5; main() int i,j; int array33=100,200,300, 400,500,600, 700,800,900; clrscr() ; for (i=0; i for (j=0; j printf( printf( fun(array); pr

6、intf(array:n for (i=0; i for (j=0; j printf( printf( getch(); 答案: 1). int i,j; 2). for(i=0; i arrayij=arrayij*5; 第5题 (10.0分) /*- 【程序改错】 - 功能:用起泡法对连续输入的十个字符排序后按从小到大的次序 输出. -*/ #define N 10 #include #include main( ) int i; char strN; /*FOUND*/ for(i=0;i/*FOUND*/ sort(strN); for(i=0;isort(char strN) in

7、t i,j; char t; for(j=1;j/*FOUND*/ for(i=0;i/*FOUND*/ if(stri t=stri; stri=stri+1; stri+1=t; 答案: 1). for(i=0;i 2). sort(str); 3). for(i=0;i 4). if(stristri+1) 或 if(stri+1 第6题 (10.0分) /*- 【程序改错】 - 功能:读入一行英文文本,将其中每个单词的最后一个字母改成 大写,然后输出此文本行 (这里的“单词”是指由空格 隔开的字符串)。 例如:若输入“I am a student to take the examina

8、tion.”, 则应输出“I aM A studenT tO takE thE examination.”。 -*/ #include #include #include #include up1st ( char *p ) /*FOUND*/ integer k = 0; for ( ; *p; p+ ) if ( k ) /*FOUND*/ if ( *p = ) k = 0; /*FOUND*/ *(p -1 ) = toupper( *( p - 1 ); else if ( *p != ) k = 1; *( p-1 ) = toupper( *(p-1) ); main( ) ch

9、ar chrstr81; clrscr(); printf( enter a string: gets ( chrstr ); printf( changing:n %s up1st( chrstr ); printf( changing:n %s 答案: 1). int k=0; 2). if ( *p = ) 3). *(p -1 ) = toupper( *( p - 1 ); 第7题 (10.0分) /*- 【程序改错】 - 功能:在一个一维整型数组中找出其中最大的数及其下标。 -*/ #define N 10 /*FOUND*/ float fun(int *a,int *b,int

10、 n) int *c,max=*a; for(c=a+1;cmax) max=*c; /*FOUND*/ b=c-a; return max; void main(void) int aN,i,max,p=0; printf(enter 10 integers:n for(i=0;i/*FOUND*/ get( /*FOUND*/ m=fun(a,p,N); printf( 答案: 1). int fun(int *a,int *b,int n) 2). *b=c-a; 3). scanf(或scanf( 4). max=fun(a,&p,N); 第8题 (10.0分) /*- 【程序改错】

11、- 功能:为一维数组输入10个整数;将其中最小的数与第一个数 对换,将最大的数与最后一个数对换,输出数组元素。 -*/ void main(void) int a10; void input(); void output(); void max_min(); input(a,10); max_min(a,10); output(a,10); void input(int *arr,int n) int *p,i; p=arr; printf(enter 10 integers:n for(i=0;i /*FOUND*/ scanf( void max_min(int *arr,int n) i

12、nt *min,*max,*p,t; min=max=arr; for(p=arr+1;p/*FOUND*/ if(*p else if(*pt=*arr;*arr=*min;*min=t; /*FOUND*/ if(max=arr) max=min; t=*(arr+n-1); *(arr+n-1)=*max; *max=t; void output(int *arr,int n) int *p,i; p=arr; printf(changed array is:n /*FOUND*/ while(i=0;i答案: 1). scanf(+); 或scanf(或scanf(或scanf( 2)

13、. if(*p*max) 或if(*max 3). if( max = arr ) 4). for(i=0;ii;i+) 或for(p=arr;p=i;i+) 或for(p=arr;p=p;) 第9题 (10.0分) /*- 【程序改错】 - 功能:求两个形参的乘积和商数,并通过形参返回调用程序。 例如:输入:61.82 和 12.65,输出为:c = 782.023000 d = 4.886957 -*/ #include #include /*FOUND*/ void fun ( double a, b, double *x, double *y ) /*FOUND*/ x = a * b

14、; /*FOUND*/ y = a / b; main ( ) double a, b, c, d; clrscr( ); printf ( scanf ( fun ( a , b, &c, &d ) ; printf (c, d ); getch(); 答案: 1). void fun ( double a, double b, double *x, double *y ) 2). *x = a * b; 3). *y = a / b; 第10题 (10.0分) /*- 【程序改错】 - 功能:写计算级数 ex=1+x+x2/2!+x3/3!+ .+xn/n! 的值。 -*/ #includ

15、emain() int m,n; float x,term,ex1,ex2; printf( scanf( /*FOUND*/ ex1=ex2=1; term=1; for(n=1;n/*FOUND*/ term*=x%n; ex1+=term; ex2=term; /*FOUND*/ for (n=m;n1; n-) 百度搜索“就爱阅读”,专业资料、生活学习,尽在就爱阅读网,您的在线图书馆! term*=n/x; ex2+=term; printf(exbackrard=%fn getch(); 答案: 1). ex1=ex2=1; 2). term*=x/n; 3). for (n=m;n

16、=1; n-) 第11题 (10.0分) /*- 【程序改错】 - 功能:编制统计营业员一天的营业额的程序,设程序采用一个循环 实现,每次循环输入一笔交易金额并累计营业额。由于营 业员一天完成的交易次数是不确定的,为此以最后附加输 入一笔0或负数交易额作为交易金额已全部输入结束的标志。 有以下统计营业员一天营业额的算法: 统计营业员一天营业额 营业额清0; 输入第一笔交易额; while(交易额0.0) 累计营业额; 输入下一笔交易额; 输出营业额; 记一笔交易额为变量sale,营业额为sigma。 -*/ #include void main() /*FOUND*/ float sale,s

17、igma sigma=0.0; printf(sale data.n /*FOUND*/ scanf( while(sale0.0) /*FOUND*/ sigma+=sale; printf(next sale data( printf(of sale is %.2fn getch(); 答案: 1). float sale,sigma; 2). scanf( 3). sigma+=sale; 或sigma=sigma+sale; 第12题 (10.0分) /*- 【程序改错】 - 功能:根据整型形参 n,计算某一数据项的值。 A1=1, A2=1/(1 + A*1+), A*3+=1/(1

18、 + A*2+), , An=1/(1 + An-1) 例如:若 n=10,则应输出:a10=0.617977。 -*/ #include #include /*FOUND*/ int fun ( int n ) float A=1; int i; /*FOUND*/ for (i=2; i/*FOUND*/ A = 1.0(1+A); return A ; main( ) int n ; clrscr( ) ; printf(enter n: scanf( printf(n, fun(n) ) ; 答案: 1). float fun(int n) 2). for (i=2; i第13题 (1

19、0.0分) /*- 【程序改错】 - 功能:求0-7这8个数字所能组成的奇数个数。 -*/ #include main() /*FOUND*/ long sum=4;s=4; int j; for(j=2;j/*FOUND*/ printf( /*FOUND*/ if(j sum+=s; printf( getch(); 答案: 1). long sum=4,s=4; 2). printf( 3). if(j第14题 (10.0分) /*- 【程序改错】 - 功能:将a所指字符串中的字符和b所指字符串中的字符, 按排 列的顺序交叉合并到c所指数组中,过长的剩余字符接在 c所指数组的尾部。 例如

20、:当a所指字符串中的内容为“abcdefg”,b所指字符串中 的内容为“1234”时,c所指数组中的内容应该为“a1b2 c3d4efg”;而当a所指字符串中的内容为“1234”,b所 指字符串中的内容为“abcdefg”时,c所指数组中的内 容应该为“1a2b3c4defg”。 -*/ #include #include #include /*FOUND*/ fun( char a, char b, char c ) while ( *a & *b ) *c = *a; c+; a+; *c = *b; c+; b+; if( *a = 0 ) /*FOUND*/ while( *b ) *

21、c = *b; c+; b+; else /*FOUND*/ while( *a ) *c = *a; c+; a+; *c = 0; main() char s1100, s2100, t200; clrscr(); printf(s1 string : printf(s2 string : fun( s1, s2, t ); printf(result is : %sn 答案: 1). void fun( char *a, char *b, char *c ) 或 fun( char *a, char *b, char *c ) 2). while( *b ) *c = *b; c+; b

22、+; 3). while( *a ) *c = *a; c+; a+; 第15题 (10.0分) /*- 【程序改错】 - 功能:以下程序能求出1*1+2*2+.+n*n 最大的n。 -*/ #include main() int n,s; /*FOUND*/ s=n=0; /*FOUND*/ while(s1000) +n; s+=n*n; /*FOUND*/ printf( getch(); 答案: 1). s=n=0; 2). while(s 3). printf( 第16题 (10.0分) /*- 【程序改错】 - 功能:以下程序把两个数按由大到小的顺序输出来. -*/ #includ

23、e /*FOUND*/ swap( int *p1,*p2) int p; p=*p1; *p1=*p2; *p2=p; void main(void) int a,b, *p,*q; printf( /*FOUND*/ scanf( p=&a; q=&b; if(a swap(p,q); printf( /*FOUND*/ printf(p,q); 答案: 1). swap( int *p1,int *p2) 或 void swap( int *p1,int *p2) 2). scanf( 3). printf(*p,*q); 或printf(a,b); 第17题 (10.0分) /*- 【

24、程序改错】 - 功能:读取7个数(1-50)的整数值,每读取一个值,程序打印 出该值个数的。 -*/ #include main() int i,a,n=1; /*FOUND* */ while(n scanf( /*FOUND*/ while(a50); /*FOUND*/ for(i=0;i答案: 1). while(n 2). while(a50); 或 while(a50|a第18题 (10.0分) /*- 【程序改错】 - 功能:将6个数按输入时顺序的逆序进行排列. -*/ sort(char *p,int m) int i; char change,*p1,*p2; for(i=0

25、;i/*FOUND*/ *p1=p+i; *p2=p+(m-1-i); change=*p1; *p1=*p2; *p2=change; main( ) int i; /*FOUND*/ char p,num6; for(i=0;i/*FOUND*/ scanf( p=&num0; /*FOUND*/ sort(*p,6); for(i=0;i答案: 1). p1=p+i; p2=p+(m-1-i); 2). char *p,num6; 3). scanf( 4). sort(p,6); 第19题 (10.0分) /*- 【程序改错】 - 功能:求广义菲玻那契级数的第n项。广义菲玻那契级数的前

26、n 项为: 1,1,1,3,5,9,17,31,? 项值通过函数值返回 main ( )函数。 例如:若 n = 15,则应输出:The value is: 2209。 -*/ #include #include long fun ( int n ) long a=1, b=1, c=1, d=1, k; /*FOUND*/ for (k=4; k d = a+b+c; /*FOUND*/ a=b b=c; c=d; /*FOUND*/ return k; main( ) int n = 15; clrscr( ); printf( value is: %ldn 答案: 1). for (k=

27、4; k第20题 (10.0分) /*- 【程序改错】 - 功能:将长整型数中每一位上为奇数的数依次取出,构成一个新 数放在t中。高位仍在高位,低位仍在低位。 例如:当s中的数为:87653142时,t中的数为: 7531。 -*/ #include #include void fun (long s, long *t) int d; long sl=1; /*FOUND*/ t = 0; while ( s 0) d = s; /*FOUND*/ if (d%2 = 0) *t = d * sl + *t; sl *= 10; /*FOUND*/ s = 10; main() long s,

28、 t; clrscr(); printf(scanf( fun(s, &t); printf(result is: %ldn getch(); 答案: 1). *t = 0; 2). if(d%2) 或 if(d%2!=0) 或 if(d%2)!=0) 3). s /= 10; 或 s=s/10 第21题 (10.0分) /*- 【程序改错】 - 功能:将一个正整数分解质因数。 例如:输入90,打印出90=2*3*3*5 -*/ #include main() int n,i; printf(input a number:n scanf( printf( for(i=2;i /*FOUND*/

29、 while(n=i) /*FOUND*/ if(n%i=1) printf( /*FOUND*/ n=n%i; else break; printf( 答案: 1). while(n!=i) 2). if(n%i=0) 或 if (!(n%i) 3). n=n/i; 百度搜索“就爱阅读”,专业资料、生活学习,尽在就爱阅读网,您的在线图书馆! 第22题 (10.0分) /*- 【程序改错】 - 功能:删除字符串s中的所有空白字符(包括Tab字符、回车符及 换行符)。输入字符串时用#结束输入。 -*/ #include #include #include fun ( char *p) int i

30、,t; char c80; /*FOUND*/ for (i = 1,t = 0; pi ; i+) /*FOUND*/ if(!isspace(p+i) ct+=pi; /*FOUND*/ ct= strcpy(p,c); main( ) char c,s80; int i=0; printf( c=getchar(); while(c!=#) si=c;i+;c=getchar(); si=0; fun(s); puts(s); 答案: 1). for (i = 0,t = 0; pi ; i+) 2). if(!isspace(*(p+i) ct+=pi; 3). ct=0; 第23题

31、(10.0分) /*- 【程序改错】 - 功能:有n个人围成一圈,顺序排号。从第一个人开始报数(从1 到3报数),凡报到3的人退出圈子,问最后留下的是原来 第几号的那位。 -*/ #include#define nmax 50 main() int i,k,m,n,numnmax,*p; printf(input the total of numbers: scanf( /*FOUND*/ p=num; for(i=0;i/*FOUND*/ while(mn-1) if(*(p+i)!=0) k+; /*FOUND*/ if(k!=3) *(p+i)=0; k=0; m+; i+; if(i=

32、n) i=0; while(*p=0) p+; printf( getch(); 答案: 1). p=num; 2). while(m第24题 (10.0分) /*- 【程序改错】 - 功能:输入两个双精度数,函数返回它们的平方和的平方根值。 例如:输入:22.936 和 14.121,输出为:y = 26.934415。 -*/ #include #include #include /*FOUND*/ double fun (double *a, *b) double c; /*FOUND*/ c = sqr(a*a + b*b); /*FOUND*/ return *c; main ( )

33、 double a, b, y; clrscr( ); printf ( scanf ( y = fun (&a, &b); printf ( 答案: 1). double fun (double *a, double *b) 2). c = sqrt(*a * *a + *b * *b); 3). return c; 第25题 (10.0分) /*- 【程序改错】 - 功能:利用条件运算符的嵌套来完成此题:学习成绩=90分的同 学用A表示,60-89分之间的用B表示,60分以下的用C表示。 -*/ #include main() int score; /*FOUND*/ char *grad

34、e; printf(input a scoren /*FOUND*/ scanf( /*FOUND*/ grade=score=90?A;(score=60?B:C); printf(belongs to %c 答案: 1). char grade; 2). scanf( 3). grade=score=90?A:(score=60?B:C); 第26题 (10.0分) /*- 【程序改错】 - 功能:将八进制转数的字符串换为十进制数。如输入“127”,结果为87 -*/ #include void main(void) /*FOUND*/ char p,s6; int n; p=s; get

35、s(p); /*FOUND*/ n=0; /*FOUND*/ while(*p=0) n=n*8+*p-0; p+; printf( getch(); 答案: 1). char *p,s6; 2). n=0; 3). while(*p!=0) 或while(*p) 或 while(*p!=0) 第27题 (10.0分) /*- 【程序改错】 - 功能:下题是一段有关结构体变量传递的程序. -*/ #include struct student int x; char c; a; main() a.x=3; /*FOUND*/ a.c=a f(a); /*FOUND*/ printf( getc

36、h(); f(struct student b) b.x=20; /*FOUND*/ b.c=y; 答案: 1). a.c=a; 2). printf( 3). b.c=y; 第28题 (10.0分) /*- 【程序改错】 - 功能:编写函数fun计算下列分段函数的值: x*20 x f(x)= sin(x) 0x -*/ #include #include float fun(float x) /*FOUND*/ float y /*FOUND*/ if (x else if(x=0 & x/*FOUND*/ return x; void main(void) float x,f; prin

37、tf( scanf( f=fun(x); printf( getch(); 答案: 1). float y; 2). if (x 第29题 (10.0分) /*- 【程序改错】 - 功能:编写一个函数,该函数可以统计一个长度为3的字符串在另 一个字符串中出现的次数。 例如:假定输入的字符串为:asdasasdfgasdaszx67asdmklo,字符 串为:asd,则应输出n=4。 -*/ #include #include #include int fun(char *str,char *substr) /*FOUND*/ int i,n=0 /*FOUND*/ for(i=0;iif(st

38、ri=substr0)&(stri+1=substr1)&(stri+2=substr2) /*FOUND*/ +i; return n; main() char str81,substr4; int n; clrscr(); printf(输入主字符串: gets(str); printf(输入子字符串: gets(substr); puts(str); puts(substr); n=fun(str,substr); printf( getch(); 答案: 1). int i,n=0; 2). for(i=0;i第30题 (10.0分) /*- 【程序改错】 - 功能:输入一个字符串,过

39、滤此串,滤掉字母字符,并统计新生 成串中包含的字符个数。 例如:输入的字符串为ab234$df4,则输出为: The new string is 234$4 There are 5 char in the new string.。 -*/ #include #include #define N 80 main() char strN; int s; clrscr(); printf(a string: printf(original string is : s=fun(str); printf(new string is : printf(are %d char in the new stri

40、ng. getch(); fun(char *ptr) int i,j; /*FOUND*/ for(i=0,j=0;*(ptr+i)!=+) /*FOUND*/ if(*(ptr+i)z| *(ptr+i)Z | *(ptr+i)/*FOUND*/ (ptr+j)=(ptr+i); j+; *(ptr+j)=0; return(j); 答案: 1). for(i=0,j=0;*(ptr+i)!=0;i+) 2). if( *(ptr+i)z | *(ptr+i)Z | *(ptr+i)第31题 (10.0分) /*- 【程序改错】 - 功能:输入一行字符,分别统计出其中英文字母、空格、数字和

41、 其它字符的个数。 -*/ #include main() char c; int letters=0,space=0,digit=0,others=0; printf(input some charactersn /*FOUND*/ while(c=getchar()=n) /*FOUND*/ if(c=a&c=A&c letters+; /*FOUND*/ else if(c=! ) space+; else if(c=0&c others+; printf(in all:char=%d space=%d digit=%d others=%dn space,digit,others); 答

42、案: 1). while(c=getchar()!=n) 2). if( c=a&c=A&c=a | c=A&cif( c=a| 3). else if(c= ) 第32题 (10.0分) /*- 【程序改错】 - 功能:利用递归方法求5!。 -*/ #include#include main() int i; int fact(); printf( int fact(j) int j; int sum; /*FOUND*/ if(j=0) /*FOUND*/ sum=0; else sum=j*fact(j-1); /*FOUND*/ return j; 答案: 1). if(j=0) 2)

43、. sum=1; 3). return sum; 第33题 (10.0分) /*- 【程序改错】 - 功能:求100以内(包括100)的偶数之和. 百度搜索“就爱阅读”,专业资料、生活学习,尽在就爱阅读网,您的在线图书馆! -*/ #include main() /*FOUND*/ int i,sum=1; /*FOUND*/ for(i=2;i /*FOUND*/ printf( getch(); 答案: 1). int i,sum=0; 2). for(i=2;in 第34题 (10.0分) /*- 【程序改错】 - 功能:求出a所指数组中最大数和次最大数(规定最大数和次最大 数不在a0和

44、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 20 int fun ( int * a, int n ) int k,m1,m2,max1,max2,t; max1=max2= -32768; m1=m2=0; for ( k = 0; k max1 ) max2 = max1; m2 = m1; max1 = ak; m1 = k; /*FOUND*/ else if( akmax1 ) max2 = a

45、k; m2 = k; /*FOUND*/ t = a0; am1=a0; am1 = t; /*FOUND*/ t = a1; am2=a1; am2 = t; main( ) int x, bN=7,10,12,0,3,6,9,11,5,8, n=10, i; clrscr( ); for ( i = 0; i答案: 1). else if( akmax2 ) 2). t = a0; a0=am1; am1 = t; 3). t = a1; a1=am2; am2 = t; 第35题 (10.0分) /*- 【程序改错】 - 功能:用指针作函数参数,编程序求一维数组中的最大和最小的 元素值.

46、 -*/ #define N 10 /*FOUND*/ void maxmin(int arr ,int *pt1, *pt2, n) int i; /*FOUND*/ *pt1=*pt2=&arr0; for(i=1;i/*FOUND*/ if(arri int arrayN=10,7,19,29,4,0,7,35,-16,21,*p1,*p2,a,b; /*FOUND*/ *p1=&a;*p2=&b; maxmin(array,p1,p2,N); printf(b); 答案: 1). void maxmin(int arr ,int *pt1,int *pt2,int n) 或 maxmi

47、n(int arr ,int *pt1,int *pt2,int n) 或 void maxmin(int *arr,int *pt1,int *pt2,int n) 2). *pt1=*pt2=arr0; 或*pt1=*pt2=*(arr+0); 或*pt2=*pt1=arr0; 3). if(arri*pt1) *pt1=arri; 或 if(*(arr+i)*pt1) *pt1=arri; 或 if(*pt1或 if(*pt1第36题 (10.0分) /*- 【程序改错】 - 功能:编写input()和output()函数输入,输出5个学生的数据记录。 -*/ #include #def

48、ine N 5 struct student char num6; char name8; int score4; stuN; input(stu) struct student stu; /*FOUND*/ int i;j; for(i=0;i printf(please input %d of %dn printf( scanf( printf( scanf( for(j=0;j /*FOUND*/ printf( scanf( printf( print(stu) struct student stu; int i,j; printf(Name Sco1 Sco2 Sco3n /*FOU

49、ND*/ for(i=0;iprintf(m,stui.name); for(j=0;jprintf( printf( main() input(); print(); getch(); 答案: 1). int i , j ; 2). printf(1 ); 3). for(i=0;i 第37题 (10.0分) /*- 【程序改错】 - 功能:一个整数,它加上100后是一个完全平方数,再加上168又 是一个完全平方数,请问该数是多少? -*/ #include main() long int i,x,y,z; /*FOUND*/ for (i=1;i /*FOUND*/ x=sqrt(i+10

50、0) y=sqrt(i+268); /*FOUND*/ if(x*x=i+100|y*y=i+268) printf( 答案: 1). for (i=1;iif(x*x=i+100&y*y=i+268) 第38题 (10.0分) /*- 【程序改错】 - 功能:删除w所指数组中下标为k的元素中的值。程序中,调用了 getindex、arrout和arrdel三个函数,getindex用以输入 所删元素的下标,函数中对输入的下标进行检查,若越界, 则要求重新输入,直到正确为止。arrout用以输出数组中 的数据,arrdel进行所要求的删除操作。 -*/ #include #include #d

51、efine NUM 10 /*FOUND*/ arrout ( int w, int m ) int k; /*FOUND*/ for (k = 1; k /*FOUND*/ printf ( printf ( arrdel ( int *w, int n, int k ) int i; for ( i = k; i return n; getindex( int n ) int i; do printf(the index 0 while( i n-1 ); return i; main( ) int n, d, aNUM=21,22,23,24,25,26,27,28,29,30; n =

52、 NUM; clrscr(); printf (primary data :nd = getindex( n ); n = arrdel ( a, n, d ); printf (the data after delete :narrout( a, n ); 答案: 1). arrout ( int *w, int m ) 2). for (k = 0; k 第39题 (10.0分) /*- 【程序改错】 - 功能:将s所指字符串中的字母转换为按字母序列的后续字母(但 Z转换为A, z转换为a),其它字符不变。 -*/ #include #include #include void fun (

53、char *s) /*FOUND*/ while(*s!= if(*s=A & *s = a & *s if(*s=Z) *s=A; else if(*s=z) *s=a; else /*FOUND*/ s += 1; /*FOUND*/ s+ void main() char s80; printf(Enter a string with length printf( puts(s); fun ( s ); printf (The Cords :nn puts(s); 答案: 1). while(*s!=0) 2). else *s += 1; 3). s+; 第40题 (10.0分) /*

54、- 【程序改错】 - 功能:利用二维数组输出如图所示的图形。 * * * * * * * -*/ #include /*FOUND*/ #define N= 7 main() char aNN; int i,j,z; clrscr(); for(i=0;i/*FOUND*/ aij=; z=0; for(i=0;i for(j=z;j /*FOUND*/ z=0; for(i=(N+1)/2;i for(j=z;j for(i=0;i for(j=0;j/*FOUND*/ printf( printf( 答案: 1). #define N 7 2). aij= ; 3). z=z-1; 或 z

55、-; 或 z=-1+z; 或 z=(n+1)/2-1; 或 z=(1+n)/2-1 4). printf( 第41题 (10.0分) /*- 【程序改错】 - 功能:计算数组元素中值为正数的平均值(不包括0,0为数据结束的标志)。 例如:数组中元素的值依次为39,-47,21,2,-8,15,0, 则程序的运行结果为19.250000。 -*/ #include double fun(int s) double sum=0.0; int c=0,i=0; /*FOUND*/ while(si =0) if (si0) sum+=si; c+; i+; /*FOUND*/ sum=c; /*FO

56、UND*/ return c; void main(void) int x1000;int i=0; do scanf( while(xi+!=0); printf( 答案: 1). while( si != 0 ) 或while(!si=0) 或while(!0=si) 或while(si) 2). sum/=c; 或sum=sum/c; 3). return sum; 或return (sum); 第42题 (10.0分) /*- 【程序改错】 - 功能:写一个函数,求一个字符串的长度,在main函数中输入字 符串,并输出其长度。 -*/ #include #include main()

57、int len; /*FOUND*/ char *str20; printf(input a string:n scanf( /*FOUND*/ len=length(str); printf(string has %d characters. getch(); int length(p) char *p; int n; n=0; /*FOUND*/ while(*p=0) n+; p+; 百度搜索“就爱阅读”,专业资料、生活学习,尽在就爱阅读网,您的在线图书馆! return n; 答案: 1). char str20; 2). len=length(str); 3). while(*p!=

58、0) 或 while(*p) 或 while(*p!=0) 或 while(*p!=NULL) 第43题 (10.0分) /*- 【程序改错】 - 功能:分别统计字符串中大写字母和小写字母的个数。 例如:给字符串 s 输入:AAaaBBb123CCccccd, 则应输出结果:upper = 6, lower = 8。 -*/ #include #include /*FOUND*/ void fun ( char *s, int a, int b ) while ( *s ) if ( *s = A & *s /*FOUND*/ a+ ; if ( *s = a & *s /*FOUND*/ b

59、+; s+; main( ) char s100; int upper = 0, lower = 0 ; printf( a string : fun ( s, & upper, &lower ); printf( %upper = %d lower = %dn%upper, lower ); 答案: 1). void fun ( char *s, int *a, int *b ) 2). (*a)+ ; 3). (*b)+; 第44题 (10.0分) /*- 【程序改错】 - 功能:首先把b所指字符串中的字符按逆序存放, 然后将a所指字 符串中的字符和b所指字符串中的字符,按排列的顺序交叉

60、合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。 例如:当a所指字符串中的内容为“abcdefg”,b所指字符串中的 内容为“1234”时,c所指数组中的内容应该为“a4b3c2d1 efg”;而当a所指字符串中的内容为“1234”,b所指字符 串中的内容为“abcdefg”时,c所指数组中的内容应该为 “1g2f3e4dcba”。 -*/ #include #include #include void fun( char *a, char *b, char *c ) int i , j; char ch; i = 0; j = strlen(b)-1; /*FOUND*/ while

61、 ( i j ) ch = bi; bi = bj; bj = ch; i+; j-; /*FOUND*/ while ( *a &*b ) if ( *a ) *c = *a; c+; /*FOUND*/ a+; if ( *b ) *c = *b; c+; b+; *c = 0; main() char s1100,s2100,t200; clrscr(); printf(s1 string : scanf( printf(s2 string : scanf( fun( s1, s2, t ); printf(result is : %sn 答案: 1). while(i 2). whil

62、e ( *a | *b ) 3). a+; 第45题 (10.0分) /*- 【程序改错】 - 功能:读入一个整数k(2k10000),打印它的所有质因子(即 所有为素数的因子)。 例如:若输入整数:2310,则应输出:2、3、5、7、11。 请改正程序中的语法错误,使程序能得出正确的结果。 -*/ #include #include /*FOUND*/ IsPrime(integer n ) int i, m; m = 1; for ( i = 2; i /*FOUND*/ if ( n%i ) m = 0; break; /*FOUND*/ return ( n ); main( ) in

63、t j, k; clrscr(); printf( integer number between 2 and 10000: scanf( printf( prime factor(s) of %d is( are ): for( j = 2; j 答案: 1). IsPrime(int n) 2). if(!(n%i) 3). return ( m ); 第46题 (10.0分) /*- 【程序改错】 - 功能:求出在字符串中最后一次出现的子字符串的地址,通过函 数值返回,在主函数中输出从此地址开始的字符串;若未 找到,则函数值为NULL。 例如:当字符串中的内容为:,t中的内容为: 时,输出

64、结果应是:abcdx。当字符串中的内容为: ,t中的内容为:时,则程序输出 未找到信息:not found!。 -*/ #include #include #include char * fun (char *s, char *t ) char *p , *r, *a; /*FOUND*/ a = NULL; while ( *s ) p = s; r = t; while ( *r ) /*FOUND*/ if ( r = p ) r+; p+; else break; /*FOUND*/ if ( *r =0 ) a = s; s+; return a ; main() char s100

65、, t100, *p; clrscr(); printf(enter string S : printf(enter substring t :scanf(t ); p = fun( s, t ); if ( p ) printf(result is : %sn else printf(found !n 答案: 1). a = NULL; 2). if ( *r = *p ) r+; p+; 3). if ( *r = 0 ) a = s; 第47题 (10.0分) /*- 【程序改错】 - 功能:求出数组中最大数和次最大数,并把最大数和a0中的数 对调、次最大数和a1中的数对调。 -*/ #

66、include #include #define N 20 int fun ( int * a, int n ) int i, m, t, k ; for(i=0;i/*FOUND*/ m=0; /*FOUND*/ for(k=1;k/*FOUND*/ if(akam) k=m; t=ai;ai=am;am=t; main( ) int x, bN=11,5,12,0,3,6,9,7,10,8, n=10, i; clrscr( ); for ( i=0; i 1). m=i; 2). for(k=i;kam) m=k; 第48题 (10.0分) /*- 【程序改错】 - 功能:从键盘输入十个

67、学生的成绩,统计最高分,最低分和平均分。 max代表最高分,min代表最低分,avg代表平均分。 -*/ #include void main( void) int i; float a10,min,max,avg; printf( for(i=0;i printf(a score of student: /*FOUND*/ scanf( /*FOUND*/ max=min=avg=a1; for(i=1;i/*FOUND*/ if(min avg=avg/10; printf(g:%fn 答案: 1). scanf(或 scanf( 2). max=min=avg=a0; 3). if (m

68、inai) 或 if (ai=ai) 或 if (ai第49题 (10.0分) /*- 【程序改错】 - 功能:将长整型数中每一位上为偶数的数依次取出,构成一个新 数放在t中。高位仍在高位,低位仍在低位。 例如:当s中的数为:87654时,t中的数为:864。 -*/ #include #include void fun (long s, long *t) int d; long sl=1; *t = 0; while ( s 0) d = s; /*FOUND*/ if(d%2=0) /*FOUND*/ *t=d* sl+ t; sl *= 10; /*FOUND*/ s=10; main(

69、) long s, t; clrscr(); printf( scanf( fun(s, &t); printf(result is: %ldn getch(); 答案: 1). if( d%2 = 0 ) 或if(d%2!=1) 2). *t=d* sl+ *t; 或*t+=d*sl; 或 *t+=sl*d; 或*t=*t+d* sl; 或 *t=*t+sl*d; 3). s/=10; 或 s=s/10; 第50题 (10.0分) /*- 【程序改错】 - 功能:分别统计输入的字符串中各元音字母(即:A、E、I、O、U) 的个数。 注意:字母不分大、小写。 例如:若输入:THIs is a

70、boot,则输出应该是:1、0、2、2、0。 -*/ #include #include fun ( char *s, int num5 ) int k, i=5; for ( k = 0; k/*FOUND*/ numi=0; for (; *s; s+) i = -1; /*FOUND*/ switch ( s ) case a: case A: i=0; break; case e: case E: i=1; break; case i: case I: i=2; break; case o: case O: i=3; break; case u: case U: i=4; break;

71、 /*FOUND*/ if (i main( ) char s181; int num15, i; clrscr(); printf( enter a string: fun ( s1, num1 ); for ( i=0; i printf ( printf ( 答案: 1). numk=0; 2). switch(*s) 3). if (i = 0) 第51题 (10.0分) /*- 【程序改错】 - 功能:编写函数fun求1000以内所有8的倍数之和。 -*/ #include#define N 1000 main() int sum; sum=fun(8); printf(以内所有%d

72、的倍数之和为:%dn getch(); int fun(int m) /*FOUND*/ int s=0;i; /*FOUND*/ for(i=1;iN;i+) /*FOUND*/ if(i/m=0) s+=i; return s; 答案: 百度搜索“就爱阅读”,专业资料、生活学习,尽在就爱阅读网,您的在线图书馆! 1). int s=0 , i ; 2). for(i=1;i第52题 (10.0分) /*- 【程序改错】 - 功能:找出一个大于给定整数m且紧随m的素数,并作为函数值返回。 -*/ #include #include int fun(int m) /*FOUND*/ int i

73、;k; for(i=m+1;i+) for(k=2;k/*FOUND*/ if(i%k!=0) break; /*FOUND*/ if(k=i) return(i); main() int n; clrscr(); printf(enter n: scanf( printf( getch(); 答案: 1). int i,k; 或 int i; int k; 或 int k,i; 或 int k; int i; 2). if(i%k=0) 或 if(!(i%k) 3). if(k=i) 或 if(i=k) 第53题 (10.0分) /*- 【程序改错】 - 功能:在字符串str中找出ASCII

74、码值最小的字符,将其放在第一 个位置上,并将该字符前的原字符向后顺序移动。 例如:调用fun函数之前给字符串输入:eBCDAFGH,调用后字符串 中的内容为:AeBCDFGH。 -*/ #include #include fun(char *p) char min,*q=p;int i=0; min=pi; while(pi!=0) if(minpi) min=pi; /*FOUND*/ p=p+i; i+; /*FOUND*/ while(q/*FOUND*/ *q=(q-1); q-; p0=min; main() char str80; printf(a string: printf(o

75、riginal string: fun(str); printf(string after moving: 答案: 1). q=p+i; 2). while(qp) 3). *q=*(q-1); 或 q0=q-1; 第54题 (10.0分) /*- 【程序改错】 - 功能:编写函数fun求20以内所有5的倍数之积。 -*/ #define N 20 #include void main(void) int sum; sum=fun(5); printf(以内所有%d的倍数之积为: %dn getch(); int fun(int m) /*FOUND*/ int s=0,i; for(i=1;

76、i/*FOUND*/ if(i%m=0) /*FOUND*/ s=*i; return s; 答案: 1). int s=1,i; 2). if(i%m=0) 或 if(!(i%m) 3). s*=i; 或 s=s*i; 或 s=i*s; 第55题 (10.0分) /*- 【程序改错】 - 功能:将s所指字符串中最后一次出现的、t1所指子串替换成t2所 指子串,所形成的新串放在w所指的数组中。在此处,要求 t1和t2所指字符串的长度相同。 例如:当s所指字符串中的内容为:,t1所指子串中 的内容为:,t2所指子串中的内容为:时, 结果, 在 w 所指的数组中 的内容应为:。 -*/ #incl

77、ude #include #include int fun (char *s, char *t1, char *t2 , char *w) int i; char *p , *r, *a; strcpy( w, s ); /*FOUND*/ while ( w ) p = w; r = t1; while ( *r ) /*FOUND*/ if ( *r != *p ) r+; p+; else break; /*FOUND*/ if ( *r =0 ) a = w; w+; r = t2; while ( *r ) *a = *r; a+; r+; main() char s100, t11

78、00, t2100, w100; clrscr(); printf(enter string S: printf(enter substring t1:scanf(t1); printf(enter substring t2:scanf(t2); if ( strlen(t1)=strlen(t2) ) fun( s, t1, t2, w); printf(result is : %sn else printf(: strlen(t1) != strlen(t2)n 答案: 1). while (*w) 2). if(*r = *p) 3). if ( *r = 0 ) a = w; 第56题

79、 (10.0分) /*- 【程序改错】 - 功能:读入一个英文文本行,将其中每个单词的第一个字母改成 大写,然后输出此文本行 (这里的“单词”是指由空格 隔开的字符串)。 例如:若输入:“I am a student to take the examination.”, 则应输出:“I Am A Student To Take The Examination.”。 -*/ #include #include #include /*FOUND*/ upfst ( char p ) int k=0; /*FOUND*/ for ( ; p; p+ ) if ( k ) if ( *p = ) k

80、= 0; /*FOUND*/ else if ( *p = ) k = 1; *p = toupper( *p ); main( ) char chrstr81; clrscr(); printf( enter an English text line: gets( chrstr ); printf( changing:n %s upfst( chrstr ); printf( changing:n %sn 答案: 1). upfst(char *p) 2). for ( ; *p; p+ ) 3). else if ( *p != ) 第57题 (10.0分) /*- 【程序改错】 - 功能

81、:在字符串str中找出ASCII码值最大的字符,将其放在第一 个位置上,并将该字符的原字符向后顺序移动。例如:调用fun函数之前给字符串输入:ABCDeFGH,调用后字符串 中的内容为:eABCDFGH。 -*/ #include fun(char *p) char max,*q;int i=0; max=pi; while(pi!=0) if(max max=pi; /*FOUND*/ p=q+i; i+; 结果 /*FOUND*/ while(q /*FOUND*/ q=*(q-1); q-; p0=max; main() char str80; printf(a string: prin

82、tf(original string: fun(str); printf(string after moving: getch(); 答案: 1). q=p+i; 2). while(qp) 或while(q=p) 3). *q=*(q-1); 第58题 (10.0分) /*- 【程序改错】 - 功能:809*?=800*?+9*?+1 其中?代表的两位数,8*?的 为两位数,9*?的结果为3位数。求?代表的两位数,及809*? 后的结果。 -*/ #include output(long b,long i) printf(d+1n printf(代表的两位数: %d printf(后的结果:

83、%d getch(); main() /*FOUND*/ long int a;b;i; a=809; /*FOUND*/ for(i=10;i/*FOUND*/ b=i/a+1; if(b=1000&b=100) output(b,i); 答案: 1). long int a , b , i ; 2). for(i=10;i 3). b= i*a + 1 ; 或 b= a*i + 1 ; 第59题 (10.0分) /*- 【程序改错】 - 功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的 字符按正序连接到t串的后面。 例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:

84、 “EDCBAABCDE”。 -*/ #include #include #include void fun (char *s, char *t) /*FOUND*/ int i; sl = strlen(s); for (i=0; i/*FOUND*/ ti = ssl-i; for (i=0; i/*FOUND*/ t2*sl = main() char s100, t100; clrscr(); printf(enter string s: fun(s, t); printf(t); getch(); 答案: 1). int i,sl; 2). ti = ssl-i-1; 3). t2*

85、sl = 0; 或 t2*sl = 0; 第60题 (10.0分) /*- 【程序改错】 - 功能:在一个已按升序排列的数组中插入一个数,插入后,数 组元素仍按升序排列。 -*/ #define N 11 main() int i,j,t,number,aN=1,2,4,6,8,9,12,15,149,156; printf(enter an integer to insert in the array:n /*FOUND*/ scanf( printf(original array:n for(i=0;i/*FOUND*/ for(i=N-1;i=0;i-) if(number/*FOUND

86、*/ ai=ai-1; else ai+1=number; /*FOUND*/ exit; if(numberarray:n for(i=0;i 1). scanf( 2). for(i=N-2;i=0;i-) 或 for(i=N-2;0 第61题 (10.0分) /*- 【程序改错】 - 功能:请输入星期几的第一个字母来判断一下是星期几,如果第一 个字母一样,则继续判断第二个字母。 -*/ #include void main() char letter; printf(input the first letter of somedayn /*FOUND*百度搜索“就爱阅读”,专业资料、生活

87、学习,尽在就爱阅读网,您的在线图书馆! */ while (letter=getch()=Y) switch (letter) case S: printf(input second lettern if(letter=getch()=a) printf( else if (letter=getch()=u) printf( else printf( break; case F: printf( break; case M: printf( break; case T: printf(input second lettern /*FOUND*/ if(letter=getch()!=u) pr

88、intf( else if (letter=getch()=h) printf( else printf( /*FOUND*/ break case W: printf( break; default: printf( getch(); 答案: 1). while (letter=getch()!=Y) 2). if(letter=getch()=u) 3). break; 第62题 (10.0分) /*- 【程序改错】 - 功能: 移动一维数组中的内容; 若数组中有n个整数, 要求把下 标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。 例如: 一维数组中的原始内容为:“1,2

89、,3,4,5,6,7,8,9,10” p的 值为3。移动后,一维数组中的内容应为“ 5,6,7,8,9,10,1,2,3,4” -*/ #include #define N 80 void fun(int *w, int p, int n) /*FOUND*/ int i,k=0;bN; /*FOUND*/ for(i=1; i /*FOUND*/ for(i=0; i for(i=0; i int aN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15; int i,p,n=15; printf(original data:n printf(p: fun(a,p,n);

90、 printf(data after moving:n for(i=0; i 答案: 1). int i,k=0,bN; 2). for(i=p+1; i 3). for(i=0; i 第63题 (10.0分) /*- 【程序改错】 - 功能:先将在字符串s中的字符按正序存放到t串中,然后把s中的 字符按逆序连接到t串的后面。 例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为: “ABCDEEDCBA”。 -*/ #include #include #include void fun(char *s,char *t) int i,sl; sl=strlen(s); /*FOUND*

91、/ for(i=0;i/*FOUND*/ tsl+i=ssl-i; /*FOUND*/ tsl=0; main() char s100,t100; clrscr(); printf(enter string s: fun(s,t); printf(result is:%sn getch(); 答案: 1). for(i=0;i第64题 (10.0分) /*- 【程序改错】 - 功能:有5个人坐在一起,问第五个人多少岁?他说比第4个人 大2岁。问第4个人岁数,他说比第3个人大2岁。问第三 个人,又说比第2人大两岁。问第2个人,说比第一个人 大两岁。最后问第一个人,他说是10岁。请问第五个人 多大

92、? -*/ #include age(n) int n; int c; /*FOUND*/ if(n=1) c=10; else /*FOUND*/ c=age(n)+2; return(c); main() /*FOUND*/ printf( 答案: 1). if(n=1) 2). c=age(n-1)+2; 3). printf( 第65题 (10.0分) /*- 【程序改错】 - 功能:统计出若干个学生的平均成绩,最低分以及得最低分的人数。 例如:输入10名学生的成绩分别为92,87,68,56,92,84,67, 75,92,66,则输出平均成绩为77.9,最低高分为56,得最 低分的

93、人数为1人。 -*/ #include float Min=0; int J=0; float fun(float array,int n) int i;float sum=0,ave; Min=array0; for(i=0;i if(Minarray i) Min=array i; /*FOUND*/ sum=+array i; /*FOUND*/ ave=sumn; for(i=0;i/*FOUND*/ if(array i=Min) J+; return(ave); main( ) float a10,ave; int i=0; for(i=0;i 答案: 1). sum+=array

94、i; 或sum=sum+array i; 2). ave=sum/n; 3). if(array i=Min) J+; 第66题 (10.0分) /*- 【程序改错】 - 功能:求两数平方根之和,作为函数值返回。 例如:输入12和20,输出结果是:y = 7.936238。 -*/ #include #include /*FOUND*/ double fun (double *a, *b) double c; /*FOUND*/ c = sqr(a)+sqr(b) ; return c; void main (void) double a, b, y; printf ( a & b : sca

95、nf ( /*FOUND*/ y = fun (a, b); printf ( getch(); 答案: 1). double fun (double *a, double *b) 2). c = sqrt(*a)+sqrt(*b) ; 或 c = sqrt(*b)+sqrt(*a) ; 3). y=fun(&a,&b); 第67题 (10.0分) /*- 【程序改错】 - 功能:成一个周边元素为5,其它元素为1的3*3的二维数组。 -*/ #include main() int a33,i,j; fun(a); for(i=0;i for(j=0;j fun(int arr3) /*FOUN

96、D*/ int i,j /*FOUND*/ for(i=1;iif(i=0|j=0|i=2|j=2) arrij=5; /*FOUND*/ else if(i+j=1&i+j=3) arrij=5; else arrij=1; 答案: 1). int i,j; 2). for(i=0;i 3). else if(i+j=1|i+j=3) 第68题 (10.0分) /*- 【程序改错】 - 功能:编写一个程序计算某年某月有几天。(注意要区分闰年) -*/ #include void main() int yy,mm,len; printf( scanf( /*FOUND*/ switch(yy)

97、 case 1: case 3: case 5: case 7: case 8: case 10: case 12: len=31; /*FOUND*/ break case 4: case 6: case 9: case 11: len=30; break; case 2: if (yy%4=0 & yy0!=0 | yy0=0) len=29; else len=28; break; /*FOUND*/ default printf(error!n break; printf(length of %d %d id %dn getch(); 答案: 1). switch(mm) 2). br

98、eak; 3). default : 第69题 (10.0分) /*- 【程序改错】 - 功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数 返回二分之一的圆面积。 例如:输入圆的半径值:19.527 输出为:s = 598.950017。 -*/ #include #include /*FOUND*/ double fun( r) double s; /*FOUND*/ s=1/2*3.14159* r * r; /*FOUND*/ return r; void main(void) float x; printf ( scanf ( printf (s = %fn fun ( x )

99、 ); 答案: 1). double fun(float r) 2). s=1.0/2*3.14159* r * r; 3). return s; 第70题 (10.0分) /*- 【程序改错】 - 功能:读入一个整数m( 5m20 ),函数getarr调用函数rnd获 得m个随机整数,函数sortpb将这m个随机整数从小到大排序。 例如:若输入整数7,则应输出:3 10 17 28 32 36 47。 -*/ #include #include sortpb ( int n, int *a ) /*FOUND*/ int i, j, p, t for ( j = 0; j p = j; fo

100、r ( i = j + 1; i /*FOUND*/ if ( ap aj ) p = i; /*FOUND*/ 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 putarr( int n, int *z ) int i; for( i = 1; i printf( if ( !(

101、i ) ) printf( printf( main() int aa20, n; clrscr(); printf( enter an integer number between 5 and 20: scanf( getarr( n, aa ); printf( sorting %d numbers:nputarr( n, aa ); sortpb( n, aa ); printf( numbers:nn ); putarr( n, aa ); 百度搜索“就爱阅读”,专业资料、生活学习,尽在就爱阅读网,您的在线图书馆! getch(); 答案: 1). int i, j, p, t; 2)

102、. if ( ap ai ) p = i; 3). if ( p != j ) 第71题 (10.0分) /*- 【程序改错】 - 功能:求一个3行4列矩阵的外框的元素值之和。 注意:矩阵四个角上的元素不能重复加。 例如:矩阵元素为1,2,3,4,5,6,7,8,9,10,11,12时, 四框元素值之和应为65。 -*/ int fun(int a34,int m,int n) /*FOUND*/ int i,j,s,s1=s2=s3=s4=0; for(j=0;j s1=s1+a0j; /*FOUND*/ s2=s2+amj; /*FOUND*/ for(i=0;i s3=s3+ai0; s

103、4=s4+ain-1; /*FOUND*/ s=s1-s2-s3-s4; return s; main() int a34=1,2,3,4,5,6,7,8,9,10,11,12; printf(); 答案: 1). int i,j,s,s1=0,s2=0,s3=0,s4=0; 2). s2= s2 + am-1j ; 或s2+=am-1j; 或s2=am-1j+s2; 3). for(i=1;ii;i+) 或for(i=1;-1+mi;i+) 或for(i=1;i=i;i+) 4). s= s1 + s2 + s3 + s4 ; 第72题 (10.0分) /*- 【程序改错】 - 功能:实现两

104、个字符串的连接。 例如:输入dfdfqe和12345时,则输出dfdfqe12345. -*/ #includevoid main(void) char s180,s280; void scat(char s1,char s2); gets(s1); gets(s2); scat(s1,s2); puts(s1); void scat (char s1,char s2) int i=0,j=0; /*FOUND*/ while(s1i= =0) i+; /*FOUND*/ while(s2j= =0) /*FOUND*/ s2j=s1i; i+; j+; s1i=0; 答案: 1). whil

105、e( s1i != 0 )i+; 或 while(s1i)i+; 或 while(s1i!=NULL)i+; 或 while( s1i != 0 )i+; 2). while( s2j != 0 ) 或 while(s2j) 或 while(s2j!=NULL) 或 while( s2j != 0 ) 3). s1i=s2j; 第73题 (10.0分) /*- 【程序改错】 - 功能:一个偶数总能表示为两个素数之和。 -*/ #include #include main() int a,b,c,d; /*FOUND*/ scanf( for(b=3;b for(c=2;csqrt(b) /*F

106、OUND*/ d=a+b; else break; for(c=2;c/*FOUND*/ if(d%c=0) break; if(csqrt(d) printf(; getch(); 答案: 1). scanf( 2). d=a-b; 3). if(d%c=0) 第74题 (10.0分) /*- 【程序改错】 - 功能:用起泡法对10个整数从小到大排序。 -*/ /*FOUND*/ void sort(int x,int n) int i,j,k,t; for(i=0;i/*FOUND*/ for(j=0;j/*FOUND*/ if(xixi+1) t=xj; xj=xj+1; xj+1=t;

107、 void main(void) int i,n,a100; printf(input the length of the array:n scanf( for(i=0;i scanf( /*FOUND*/ sort(n,a); printf(the sorted array:n for(i=0;i答案: 1). void sort(int *x,int n) 或 void sort(int x,int n) 2). for(j=0;jj;j+) 或for(j=0;jfor(j=0;n-( 1 + i )j;j+) 或 for(j=0;j 3). if(xjx j + 1 ) 或 if(x j

108、 + 1 第75题 (10.0分) /*- 【程序改错】 - 功能:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输 出主对角线上的元素之和sum。 -*/ #include int fun() int a33,sum; int i,j; /*FOUND*/ a=0; for(i=0;i/*FOUND*/ scanf( for(i=0;i /*FOUND*/ sum=sum+aij; /*FOUND*/ printf( main() fun(); 答案: 1). sum=0; 2). scanf( 3). sum= sum + aii ; 或 sum+=aii; 4). printf( 第

109、76题 (10.0分) /*- 【程序改错】 - 功能:利用递归函数调用方式,将所输入的5个字符,以相反顺序 打印出来。 -*/ #include main() int i=5; void palin(int n); printf( palin(i); printf( void palin(n) int n; /*FOUND*/ int next; if(n/*FOUND*/ next!=getchar(); printf( putchar(next); else next=getchar(); /*FOUND*/ palin(n); putchar(next); 答案: 1). char n

110、ext; 2). next=getchar(); 3). palin(n-1); 第77题 (10.0分) /*- 【程序改错】 - 功能:实现交换两个整数的值。 例如:给a和b分别输入3和6 ,输出为a=6 b=3 -*/ /*FOUND*/ void fun (int a, b) int t; /*FOUND*/ t=a; /*FOUND*/ a=b; /*FOUND*/ b=t; void main(void) int a,b; printf(a,b: fun(&a,&b); printf(b=%dn 答案: 1). void fun (int *a,int *b) 或 fun (int

111、 *a,int *b) 2). t=*a; 3). *a=*b; 4). *b=t; 第78题 (10.0分) /*- 【程序改错】 - 功能:一球从100米高度自由落下,每次落地后反跳回原高度的 一半;再落下,求它在第10次落地时,共经过多少米? 第10次反弹多高? -*/ #includemain() /*FOUND*/ float sn=100.0;hn=sn/2; int n; /*FOUND*/ for(n=2;n sn=sn+2*hn; /*FOUND*/ hn=hn%2; printf(total of road is %fn printf(tenth is %f metern

112、答案: 1). float sn=100.0,hn=sn/2; 2). for(n=2;n或 for(n=2;n第79题 (10.0分) /*- 【程序改错】 - 功能:求出两个非零正整数的最大公约数,并作为函数值返回。 例如:若给num1和num2分别输入49和21,则输出的最大公约数为7。 -*/ int fun(int a,int b) int r,t; if(a t=a; /*FOUND*/ b=a; /*FOUND*/ a=t; r=a%b; while(r!=0) a=b; b=r; /*FOUND*/ r=a/b; /*FOUND*/ return a; main() int n

113、um1,num2,a; scanf(2); a=fun(num1,num2); printf(maximum common divisor is %dnn 答案: 1). a=b; 2). b=t; 3). r=a%b; 4). return b; 或 return (b); 或 return(b); 第80题 (10.0分) /*- 【程序改错】 - 功能:判断字符ch是否与str所指串中的某个字符相同; 若相同, 什么也不做,若不同,则将其插在串的最后。 -*/ #include #include #include /*FOUND*/ void fun(char str, char ch

114、) while ( *str & *str != ch ) str+; /*FOUND*/ if ( *str = ch ) str 0 = ch; /*FOUND*/ str1 = 0; main( ) char s81, c ; clrscr(); printf( enter a string:n gets ( s ); printf (Please enter the character to search : c = getchar(); fun(s, c) ; printf( result is %sn 答案: 1). void fun(char *str, char ch ) 2)

115、. if ( *str = 0 ) 3). str1 = 0; 第81题 (10.0分) /*- 【程序改错】 - 功能:一个5位数,判断它是不是回文数。即12321是回文数,个 位与万位相同,十位与千位相同。 -*/ #includemain( ) /*FOUND*/ long ge,shi,qian;wan,x; scanf( /*FOUND*/ wan=x000; qian=x000/1000; shi=x0/10; ge=x; /*FOUND*/ if (ge=wan|shi=qian) printf(number is a huiwenn else printf(number is

116、not a huiwenn getch(); 答案: 百度搜索“就爱阅读”,专业资料、生活学习,尽在就爱阅读网,您的在线图书馆! 1). long ge,shi,qian,wan,x; 2). wan=x/10000; 3). if (ge=wan&shi=qian) 或 if (shi=qian&ge=wan) 第82题 (10.0分) /*- 【程序改错】 - 功能:根据整型形参m,计算如下公式的值: y=1/21/81/18.1/2m*m -*/ #include double fun(int m) /*FOUND*/ double y=0 int i; /*FOUND*/ for(i=

117、1; i /*FOUND*/ y=+1.0/(2*i*i); return(y); main() int n; clrscr(); printf( scanf( printf(result is n getch(); 答案: 1). double y=0; 2). for(i=1; i 第83题 (10.0分) /*- 【程序改错】 - 功能:将s所指字符串中出现的、t1所指子串全部替换成t2所指 子字符串,所形成的新串放在w所指的数组中。在此处, 要求t1和t2所指字符串的长度相同。 例如:当s所指字符串中的内容为:,t1所指子串中 的内容为:,t2所指子串中的内容为:时,结果 在w所指的数

118、组中的内容应为:。 -*/ #include #include #include int fun (char *s, char *t1, char *t2 , char *w) int i; char *p , *r, *a; strcpy( w, s ); while ( *w ) p = w; r = t1; /*FOUND*/ while ( r ) if ( *r = *p ) r+; p+; else break; /*FOUND*/ if ( *r = 0 ) a = w; r = t2; /*FOUND*/ while ( *a ) *a = *r; a+; r+; w += s

119、trlen(t2) ; else w+; main() char s100, t1100, t2100, w100; clrscr(); printf(enter string S: printf(enter substring t1:scanf(t1); printf(enter substring t2:scanf(t2); if ( strlen(t1)=strlen(t2) ) fun( s, t1, t2, w); printf(result is : %sn else printf(: strlen(t1) != strlen(t2)n 答案: 1). while(*r) 2).

120、if ( *r = 0 ) 3). while ( *r ) 第84题 (10.0分) /*- 【程序改错】 - 功能:判断整数x是否是同构数。若是同购数,函数返回1;否则返回0。 说明:所谓“同构数”是指这个数出现在它的平方数的右边。 例如:输入整数25,25的平方数是625,25是625中右侧的数, 所以25是同构数。 注意:x的值由主函数从键盘读入,要求不大于1000。 -*/ #include int fun(int x) /*FOUND*/ int k /*FOUND*/ k=x; /*FOUND*/ if(k=x)&(k0=x)&(k00=x) return 1; else ret

121、urn 0; main() int x,y; clrscr(); printf(enter a integer numbers: scanf( if(x100)printf(error!n y=fun(x); if(y) printf( else printf( getch(); 答案: 1). int k; 2). k=x*x; 3). if(k=x)|(k0=x)|(k00=x) 第85题 (10.0分) /*- 【程序改错】 - 功能:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半, 还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉 一半,又多吃了一个。以后每天早上都吃了前一天

122、剩下的一 半零一个。到第10天早上想再吃时,见只剩下一个桃子了。 求第一天共摘了多少。 -*/ #includemain() int day,x1,x2; day=9; /*FOUND*/ x2=1; while(day0) /*FOUND*/ x1=(x2+1)/2; x2=x1; /*FOUND*/ day+; printf(total is %dn 答案: 1). x2=1; 2). x1= ( x2 + 1 ) * 2 ; 3). day-; 或 day-=1; 或 day=day-1; 第86题 (10.0分) /*- 【程序改错】 - 功能:编写函数fun生成一个对角线元素为5,上

123、三角元素为0, 下三角元素为1的3*3的二维数组。 -*/ #include main() int a33,i,j; fun(a); for(i=0;i for(j=0;j printf( printf( getch(); fun(int arr3) /*FOUND*/ int i,j /*FOUND*/ for(i=1;i/*FOUND*/ if(i=j) arrij=5; else if(ji) arrij=0; else arrij=1; 答案: 1). int i,j; 2). for(i=0;i第87题 (10.0分) /*- 【程序改错】 - 功能:求1到20的阶乘的和。 -*/

124、fun() int n,j; float s=0.0,t=1.0; for(n=1;n /*FOUND*/ s=1; for(j=1;j/*FOUND*/ t=t*n; /*FOUND*/ s+t=s; /*FOUND*/ printf( main() fun(); 答案: 1). t=1; 或 t=1.0; 2). t= t * j ; 或 t*=j; 或 t=j*t; 3). s= s + t ; 或 s+=t; 或 s=t+s; 4). printf( 第88题 (10.0分) /*- 【程序改错】 - 功能:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+.+1/n, 当输入n

125、为奇数时,调用函数1/1+1/3+.+1/n(利用指针函数) -*/ #include main() float peven(),podd(),dcall(); float sum; int n; while (1) /*FOUND*/ scanf( if(n1) break; if(n%2=0) printf( sum=dcall(peven,n); else printf( sum=dcall(podd,n); printf( getch(); float peven(int n) float s; int i; s=0; for(i=2;i/*FOUND*/ s+=1%(float)i;

126、 return(s); float podd(n) int n; float s; int i; /*FOUND*/ s=1; for(i=1;ifloat dcall(fp,n) float (*fp)(); int n; float s; s=(*fp)(n); return(s); 答案: 1). scanf( 2). s+=1/(float)i; 3). s=0; 第89题 (10.0分) /*- 【程序改错】 - 功能:将一个字符串中的大写字母转换成小写字母。 例如:输入aSdFG输出为asdfg。 -*/ #include char fun(char *c) if(*c=A)*c+

127、=32; /*FOUND*/ fun= c; void main(void) /*FOUND*/ char s81,p=s; gets(s); while(*p) *p=fun(p); /*FOUND*/ puts(*p); p+; putchar(n); 答案: 1). return *c; 或 return (*c); 或 return(*c); 2). char s81,*p=s; 3). putchar(*p); 或 printf( 第90题 (10.0分) /*- 【程序改错】 - 功能:根据整型形参m的值,计算如下公式的值。 1 1 1 t = 1- - - . - 2x2 3x3

128、 mxm 例如:若m=5,则应输出:0.536389 -*/ double fun(int m) double y=1.0; int i; /*FOUND*/ for(i=2;i /*FOUND*/ y-=1/(i*i); /*FOUND*/ return m; main() int n=5; printf(result is %lfn 答案: 1). for(i=2;i=i;i+) 或for(i=2;ii;i+) 或 for(i=2;1+mi;i+) 2). y-=1.0/(i*i); 或y=y-1.0/(i*i); 或y-=1.0/(float)(i*i); 或 y=y-1.0/(floa

129、t)(i*i); 或y=y-1.0/i/i; 或y=y-1.0/(float)i/(float)i; 或y=y-1/(double)(i*i); 或y-=1/(double)(i*i); 3). return y; 或 return (y); 或 return(y); 第91题 (10.0分) /*- 【程序改错】 - 功能:用下面的和式求圆周率的近似值。直到最后一项的绝对值 小于等于0.0001。 1 1 1 = 1 - + - + . 4 3 5 7 -*/ /*FOUND*/ #include void fun() int i=1; /*FOUND*/ int s=0,t=1,p=1;

130、/*FOUND*/ while(fabs(t) s=s+t; p=-p; i=i+2; t=p/i; /*FOUND*/ printf( void main() 百度搜索“就爱阅读”,专业资料、生活学习,尽在就爱阅读网,您的在线图书馆! fun(); 答案: 1). #include 或 #include 2). float s=0,t=1,p=1; 或 float s=0,p=1,t=1; 或 float p=1,s=0,t=1; 或 float p=1,t=1,s=0; 或 float t=1,p=1,s=0; 或 float t=1,s=0,p=1; 3). while(fabs(t)1

131、e-4) 或 while(0.0001while(fabs(t)0.0001) 4). printf(s * 4 ); 第92题 (10.0分) /*- 【程序改错】 - 功能:将s所指字符串的反序和正序进行连接形成一个新串放在 t所指的数组中。 例如:当s所指的字符串的内容为时,t所指数组中 的内容为。 -*/ #include #include #include /*FOUND*/ void fun (char s, char t) int i, d; /*FOUND*/ d = len(s); /*FOUND*/ for (i = 1; i/*FOUND*/ t2*d = /0; mai

132、n() char s100, t100; clrscr(); printf(enter string S: scanf( fun(s, t); printf(result is: %sn 答案: 1). void fun (char s,char t) 或 void fun (char *s,char *t) 2). d = strlen(s); 3). for (i = 0; ii; i+) 或 for (i = 0; i=i; i+) 4). t 2 * d = 0; 或 t i + d = 0; 或 t i + d =NULL; 或 t 2 * d = NULL; 或 t 2 * d =

133、 0; 或 t i + d = 0; 第93题 (10.0分) /*- 【程序改错】 - 功能:将整型数组中所有小于0的元素放到所有大于0的元素的前 面(要求只能扫描数组一次)。 -*/ #include #define Max 100 void fun(int a,int n) /*FOUND*/ int i=5;j=n-1,temp; while(i while(ai while(aj=0) /*FOUND*/ j+; /*FOUND*/ if(ij) temp=ai; ai=aj; aj=temp; void main() static a=1,-3,-1,3,2,4,-4,5,-5,-

134、2,n=10,i; fun(a,n); for(i=0;i 答案: 1). int i=0 , j=n-1 , temp ; 2). j-; 3). if(i第94题 (10.0分) /*- 【程序改错】 - 功能:编写函数fun求20以内所有5的倍数之积。 -*/ #define N 20 #include main() int sum; sum=fun(5); printf(以内所有%d的倍数之积为: %dn getch(); int fun(int m) /*FOUND*/ int s=0,i; for(i=1;i/*FOUND*/ if(i%m=0) /*FOUND*/ s=*i; r

135、eturn s; 答案: 1). int s=1 , i ; 2). if(i%m=0) 3). s=s*i 或 s=i*s 或 s*=i 第95题 (10.0分) /*- 【程序改错】 - 功能:判断m是否为素数,若是返回1,否则返回0。 -*/ main() int m,k=0; for(m=1;m printf( if(k%5=0) printf( /*FOUND*/ void fun( int n) int i,k=1; if(m/*FOUND*/ for(i=1;i/*FOUND*/ if(m%i=0) k=0; /*FOUND*/ return m; 答案: 1). int fun

136、( int m) 或fun( int m) 2). for(i=2;ii;i+) 或for(i=2;ii;i+) 3). if( m%i = 0 ) k=0; 4). return k; 第96题 (10.0分) /*- 【程序改错】 - 功能:输出Fabonacci数列的前20项,要求变量类型定义成浮点型, 输出时只输出整数部分,输出项数不得多于或少于20。 -*/ fun() int i; float f1=1,f2=1,f3; /*FOUND*/ printf( /*FOUND*/ for(i=1;i f3=f1+f2; /*FOUND*/ f2=f1; /*FOUND*/ f3=f2;

137、 printf( printf( main() fun(); 答案: 1). printf(或 printf(或 printf( 2). for(i=1;ii;i+) 或 for(i=2;i=i;i+) 或 for(i=1;ifor(i=1;19=i;i+) 3). f1=f2; 4). f2=f3; 第97题 (10.0分) /*- 【程序改错】 - 功能:将字符串s中最后一次出现的子字符串t1替换成字符串t2, 所形成的新串放在w所指的数组中,在此处,要求t1和t2 所指字符串的长度相同。 例如:当s所指字符串中的内容为,t1中的内容 为,t2中的内容为时,结果w所指数组中的内容 应为。

138、-*/ #include #include #include int fun (char *s, char *t1, char *t2 , char *w) int i; char *p , *r, *a; strcpy( w, s ); /*FOUND*/ while ( w ) p = w; r = t1; while ( *r ) /*FOUND*/ if ( *r = *p ) r+; p+; else break; /*FOUND*/ if ( *r = /0 ) a = w; w+; r = t2; while ( *r ) /*FOUND*/ a = *r; a+; r+; ma

139、in() char s100, t1100, t2100, w100; clrscr(); printf(enter string S: printf(enter substring t1:scanf(t1); printf(enter substring t2:scanf(t2); if ( strlen(t1)=strlen(t2) ) fun( s, t1, t2, w); printf(result is : %sn else printf(: strlen(t1) != strlen(t2)n 答案: 1). while (*w) 或 while (*w!=0) 或 while (*

140、w!=0) 或 for (;*w;) 或 for (;*w!=0;) 2). if ( *r = *p ) r+; p+; 3). if ( *r = 0 ) a = w; 或 if ( *r =0 ) a = w; 4). *a=*r; 第98题 (10.0分) /*- 【程序改错】 - 功能:某个公司采用公用电话传递数据,数据是四位的整数,在 传递过程中是加密的,加密规则如下:每位数字都加上5, 然后除以10的余数代替该位数字。再将新生成数据的第一 位和第四位交换,第二位和第三位交换。 例如:输入一个四位整数1234,则结果为:9876。 -*/ #include main() int a

141、,i,aa4,t; printf(输入一个四位整数: /*FOUND*/ scanf( aa0=a; /*FOUND*/ aa1=a0; aa2=a00/100; aa3=a/1000; /*FOUND*/ for(i=0;i aai+=5; aai%=10; for(i=0;i t=aai; aai=aa3-i; aa3-i=t; for(i=3;i=0;i-) printf( getch(); 答案: 1). scanf( 2). aa1=a0/10; 3). for(i=0;i第99题 (10.0分) /*- 【程序改错】 - 功能:在键盘上输入一个3行3列矩阵的各个元素的值(值为整数)

142、, 后输出矩阵第一行与第三行元素之积,并在fun()函数中输出。 -*/ #include main() int i,j,s,a33; for(i=0;i for(j=0;j scanf( s=fun(a); printf( getch(); int fun(int a33) int i,j,sum; /*FOUND*/ sum=0; /*FOUND*/ for(i=0;i/*FOUND*/ sum=*aij; return sum; 答案: 1). sum=1; 2). for(i=0;i 第100题 (10.0分) /*- 【程序改错】 - 功能:编写函数fun,求两个整数的最小公倍数,然

143、后用主 函数main()调用这个函数并输出结果,两个整数由 键盘输入。 -*/ #include main() unsigned int m,n,q; printf( scanf( /*FOUND*/ q=fun(m,n); printf(); getch(); int fun(int m,int n) int i; /*FOUND*/ if (m=n) i=m; m=n; n=i; for(i=m;i/*FOUND*/ if(i%n=1) return(i); 答案: 1). q=fun(m,n); 2). if (m 第101题 (10.0分) /*- 【程序改错】 - 功能:给定n个实数,输出平均值,并统计在平均值以下(含平 均值)的实数个数。 例如:n=6时,输入23.5, 45.67, 12.1, 6.4,58.9, 98.4所得 平均值为40.828335,在平均值以下的实数个数应为3。 -*/ #include int fun(float x,int n) int j,c=0; /*FOUND*/ float j=0; /*FOUND*/ 百度搜索“就爱阅读”,专业资料、生活学习,尽在就爱阅读网,您的在线图书馆! 134

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号