vlambda博客
学习文章列表

C语言程序改错(一)

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

#include "stdio.h"

#define N 20

void fun(int a[], int n)

{

 int i, j, t, k;

 for (j = 0 ;j < n-1 ;j++)

 {

    /**********ERROR**********/

    k = j

    for (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=b

    b=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 next

 if(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代表xn次方。

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++)