当前位置:文档之家› 程序改错完整版---C语言

程序改错完整版---C语言

(一)功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。

#include "stdio.h"#define N 20void fun(int a[], int n){int i, j, t, k;for (j = 0 ;j < n-1 ;j++){/**********ERROR**********/k = jfor (i = j+1;i < n; i++)/**********ERROR**********/if(a[i] >a[k])/**********ERROR**********/k=j;t = a[k] ;a[k] = a[j] ;a[j] = t;}}main(){int a[N]={9,6,8,3,-1},i, m = 5;printf("排序前的数据:") ;for(i = 0;i < m;i++)printf("%d ",a[i]);printf("\n");fun(a,m);printf("排序后的数据:") ;for(i = 0;i < m;i++)printf("%d ",a[i]);printf("\n");}【参考答案】k = j;【参考答案】if(a[i] < a[k])if(a[k] > a[i])【参考答案】k = i;(二)功能:求广义菲玻那契级数的第n项。

广义菲玻那契级数的前n 项为: 1,1,1,3,5,9,17,31,……项值通过函数值返回 main ( )函数。

例如:若 n = 15,则应输出:The value is: 2209。

#include "conio.h"#include "stdio.h"long fun ( int n ){long a=1, b=1, c=1, d=1, k;/**********ERROR**********/for (k=4; k<n; k++){d = a+b+c;/**********ERROR**********/a=bb=c;c=d;}/**********ERROR**********/return k;}main( ){int n = 15;printf( "The value is: %ld\n", fun ( n ) );}【参考答案】for (k=4; k<=n; k++)【参考答案】a=b;【参考答案】return d;(三)功能:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

#include"stdio.h"main(){int i=5;void palin(int n);printf("\40:");palin(i);printf("\n");}void palin(n)int n;{/**********ERROR**********/char nextif(n<=1){/**********ERROR**********/next!=getchar();printf("\n\0:");putchar(next);}else{next=getchar();/**********ERROR**********/palin(n);putchar(next);}}【参考答案】char next;【参考答案】next=getchar();【参考答案】palin(n-1);(四)功能:计算级数 ex=1+x+x2/2!+x3/3!+ ...+xn/n! 的值。

其中xn代表x的n次方。

include "stdio.h"main(){int m,n;float x,term,ex1,ex2;printf("x,m=");scanf("%f %d",&x,&m);/**********ERROR**********/ex1==ex2=1;term=1;for(n=1;n<=m;n++){/**********ERROR**********/term*=x%n;ex1+=term;}ex2=term;/**********ERROR**********/for (n=m;n>1; n--){term*=n/x;ex2+=term;}printf("exforward=%f exbackrard=%f\n",ex1,ex2);}【参考答案】ex1=ex2=1;【参考答案】term*=x/n;【参考答案】for (n=m;n>=1; n--)(五)功能:用"冒泡法"对连续输入的十个字符排序后按从小到大的次序输出.define N 10#include "stdio.h"#include "string.h"void sort(char str[N]);main( ){int i;char str[N];/***********ERROR***********/for(i=0;i<N;i++)scanf("%c",str[i]);/***********ERROR***********/sort(str[N]);for(i=0;i<N;i++)printf("%c",str[i]);printf("\n");}void sort(char str[N]){int i,j; char t;for(j=1;j<N;j++)/***********ERROR***********/for(i=0;i<N-j;i--)/***********ERROR***********/if(str[i]<str[i+1]){t=str[i];str[i]=str[i+1];str[i+1]=t;}}【参考答案】for(i=0;i<N;i++)scanf("%c",&str[i]);【参考答案】sort(str);【参考答案】for(i=0;i<N-j;i++)【参考答案】if(str[i]>str[i+1])if(str[i+1]<str[i])(六)【功能:读取7个数(1-50)的整数值,每读取一个值,程序打印出该值个数的*。

#include "stdio.h"main(){int i,a,n=1;/**********ERROR**********/while(n<7){do{scanf("%d",&a);}/**********ERROR**********/while(a<1&&a>50);/**********ERROR**********/for(i=0;i<=a;i++)printf("*");printf("\n");n++;}}【参考答案】while(n<=7)【参考答案】while(a<1||a>50);【参考答案】for(i=1;i<=a;i++)(六)功能:生成一个周边元素为5,其它元素为1的3*3的二维数组。

#include "stdio.h"void fun(int arr[][3]){/**********ERROR**********/int i,j/**********ERROR**********/for(i=1;i<3;i++)for(j=0;j<3;j++)/**********ERROR**********/if(i==0&&j==0||i==2||j==2)arr[i][j]=5;elsearr[i][j]=1;}main(){int a[3][3],i,j;fun(a);for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%d ",a[i][j]);printf("\n");}}【参考答案】int i,j;【参考答案】for(i=0;i<3;i++)【参考答案】if(i==0||j==0||i==2||j==2)(七)功能:根据整型形参m,计算如下公式的值:y=1/2+1/8+1/18+...+1/2m*m#include "stdio.h"double fun(int m){/**********ERROR**********/double y=0.0int i;/**********ERROR**********/for(i=1; i<m; i++){/**********ERROR**********/y=+1.0/(2*i*i);}return(y);}main(){int n;printf("Enter n: ");scanf("%d", &n);printf("\nThe result is %1f\n", fun(n));}【参考答案】double y=0.0;【参考答案】for(i=1; i<=m; i++)【参考答案】y+=1.0/(2*i*i);(八)题目:求两个整数的最小公倍数。

注意:不可以增加或删除程序行,也不可以更改程序的结构。

#include "stdio.h"main(){int a,b,i,j,t;scanf("%d,%d",&a,&b);if(a>b) t=a;else t=b;/**********ERROR**********/for(i=t;i<=a;i++){if(i%a==0&&i%b==0)/**********ERROR**********/j=i;break;}printf("最小公倍数为:%d\n",j);}【参考答案】for(i=t;;i++)for(i=t;i<=a*b;i++)【参考答案】{j=i;break;}(九)功能:一个偶数总能表示为两个素数之和。

相关主题