C语言题库【程序改错】

提示:错误在 “ FOUND ” 之下

请改正程序中的错误,使它能得出正确的结果。 注意;不要改动main 函数,不得增行或删行,也不得更改程序的结构.

C语言题库【程序改错】

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28


1

题目:下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和。和值通过函数值返回。 例如:若n=5,则应输出8.391667。分数序列为:s=2/1+3/2+5/3+8/5+11/8 …。

#include 

/***********FOUND***********/
void fun (  int  n )
{   
        int  a, b, c, k; 
        double  s;
        s = 0.0;  a = 2;  b = 1;
        for ( k = 1; k <= n; k++ ) 
        {
        /***********FOUND***********/
                s = s + (int)a / b;
                c = a;  a = a + b; b = c;
        }
        return s;
}
main( )
{   
        int   n = 5;
        printf( "\nThe value of  function is: %lf\n",  fun (  n ) );
}

void fun ( int n ) 的 void 改 double
s = s + (int)a / b 的(int)改(double)

2

下列给定程序中函数fun的功能是:用下面的公式求π的近似值,直到最后一项的绝对值小于指定的数为止,π/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)
        {
                pi = pi + t ;
                n = n + 2 ;
                s = -s ;
/***********FOUND***********/
                t = s % n ;
        }
        pi = pi * 4 ;
        return pi ;
}

main( )
{   
        float n1, n2 ;

        printf("Enter a float number: ") ;
        scanf("%f", &n1) ;
        n2 = fun(n1) ;
        printf("%6.4f\n", n2) ;
}

while(t >= num) 改成 while(fabs(t) >= num)
t=s%n; 的 % 改成 /

3

题目:下列给定程序中函数fun和funx的功能是:用二分法求方程 的一个根,并要求绝对误差不超过0.001。例如:若给m输入-100,n输入90,则函数求得的一个根为2.000。

#include 
#include 

double funx(double  x)
{   
        return(2*x*x*x-4*x*x+3*x-6);  
}
double fun( double  m, double  n)
{
/***********FOUND***********/
        int  r;
        r=(m+n)/2;
/***********FOUND***********/
        while(fabs(n-m)<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.3f\n",root);
}

int r; 的 int 改成 double
while(fabs(n-m)<0.001) 的 < 改成 >

4

题目:下列给定程序中函数fun的功能是:根据以下公式求π值,并作为函数值返回。
例如:当给指定精度的变量eps输入0.0005时,应输出Pi=3.140578。
π/2=1+1/3+1/3×2/5+1/3×2/5×3/7+1/3×2/5×3/7×4/9+……

#include 
#include 

double fun(double  eps)
{  
        double  s,t;  
        int  n=1;
        s=0.0;
/***********FOUND***********/
        t=0;
        while( t>eps)
        {  
                s+=t;
                t=t * n/(2*n+1);
                n++;
        }
/***********FOUND***********/
        return(s);
}
main()
{  
        double  x;
        printf("\nPlease enter a precision: "); 
        scanf("%lf",&x);
        printf("\neps=%lf, Pi=%lf\n\n",x,fun(x));
}

t=0; 改成 t=1
return(s); 的 s 改成 2 * s

5

题目:下列给定程序中函数fun的功能是:计算n!。
例如:给n输入5,则输出120.000000。

#include 

double fun ( int n )
{ 
        double result = 1.0 ;
/***********FOUND***********/
        if n = = 0
                return 1.0 ;
        while( n >1 && n < 170 )
/***********FOUND***********/
                result = n--;    
        return result ;
}

main ( )
{ 
        int n ;
        printf("Input N:") ;
        scanf("%d", &n) ;
        printf("\n\n%d! =%lf\n\n", n, fun(n)) ;
}

if n = = 0 改成 if(n == 0)
result = n–; 改成 result *= n–;

6

题目:下列给定程序中函数fun的功能是:计算并输出下列级数的前N项和SN,直到SN+1的值大于q为止,q的值通过形参传入。SN=2/1+3/2+4/3+(N+1)/N 。 例如:若q的值为50.0,则函数值应为49.394948。

#include 
#include 

double fun(double q)
{
        int  n;
        double  s,t;
        n=2;
        s=2.0;
        while (s <= q)
        {
                t=s;
/***********FOUND***********/
                s=s+ (n+1)/n;    
                n++;
        }
        printf("n=%d\n",n);
/***********FOUND***********/
        return s;
}
main ( )
{
        printf("%f\n",fun(50));
}

s=s+ (n+1)/n; 改成 s=s+1.0* (n+1)/n; 或者 s=s+(double)(n+1)/n;
return s; 改成 return t;

7

题目:下列给定程序中,fun函数的功能是:根据形参m,计算下列公式的值。
t=1+1/2+1/3+1/4+…+1/m
例如:若输入5,则应输出2.283333。

#include 
#include 
#include 

double fun(int m)
{
        double t=1.0;
        int i;
        for(i=2;i<=m;i++)
/***********FOUND***********/
                t+=1.0/k;             /*只修改错误的地方其他不要改写否则不得分*/
/***********FOUND***********/
        return i;
}
void main()
{
        int m;
        system("CLS");
        printf("\nPlease enter 1integer number: ");
        scanf("%d",&m);
        printf("\nThe result is %1f\n", fun(m));
}

t+=1.0/k; 的 k 改成 i
return i; 改成 return t;(即 i 改 t)

8

题目:下列给定程序中,函数fun的功能是:找出100~n(不大于1000)之间三个位上的数字都相等的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。

#include  

#define  N  100

int  fun(int *s, int  n)
{ 
        int i,j,k,a,b,c;
        j=0;
        for(i=100; i<n; i++) 
        {
/***********FOUND***********/
                k=n;  
                a=k%10;  
                k/=10;   
/***********FOUND***********/
                b=k/10;  
                c=k/10;  
                if(a==b && a==c) 
                        s[j++]=i;
        }
        return  j;
}
void main()
{  
        int  a[N], n,num=0, i;
        do
        {
                printf("\nEnter  n(<=1000) :");  
                scanf("%d",&n); 
        } 
        while(n > 1000);
        num= fun(a,n);
        printf("\n\nThe result :\n");
        for(i=0; i<num; i++) 
                printf("%5d",a[i]);
        printf("\n\n");
}

k = n; 改成 k = i;
b=k/10; 的 / 改成 %

9

题目:数列中,第一项为3,后一项都比前一项的值增5。下列给定程序中,函数fun的功能是:计算前n(4≤n≤50)项的累计和。在累加过程中把那些被4除后余2的当前累加值放入数组中,符合此条件的累加值的个数作为函数值返回。

例如:当n的值为20时,该数列为3、8、13、18、23、28、…、93、98,
符合此条件的累加值应为42、126、366、570、1010。

#include 

#define    N    20

int  fun(int  n,int  *a)
{  
/***********FOUND***********/
        int  i,j,k,sum;
        sum=0;
        for(k=3,i=0;i<n;i++,k+=5)
        {  
                sum=sum+k;
/***********FOUND***********/
                if(sum%4=2)
                        a[j++]=sum;
        }

        return  j;
}
main()
{  
        int  a[N],d,n,i;
        printf("\nEnter  n (4<=n<=50):  ");
        scanf("%d",&n);
        d=fun(n,a);
        printf("\n\nThe result :\n");
        for(i=0; i<d; i++)printf("%6d",a[i]);
        printf("\n\n");
}

int i,j,k,sum; 改成 int i,j=0,k,sum;
if(sum%4=2) 改成 if(sum%4 == 2)
return j; 改成 return j++;

10

题目:下列给定程序中,函数fun的功能是:传入一个整数m,计算如下公式的值。
t=1/2-1/3-…-1/m

例如:若输入5,则应输出-0.283333。

#include  
#include  
#include  

double fun(int m)
{
        double t=1.0;
        int i;
        for(i=2;i<=m;i++)
/***********FOUND***********/
                t=1.0-1/i;
/***********FOUND***********/
        return;
}
void main()
{
        int m;
        system("CLS");
        printf("\nPlease enter 1 integer numbers:\n");
        scanf("%d",&m);
        printf("\n\nThe result is %1f\n",
        fun(m));
}

t=1.0-1/i; 改成 t-=1.0-1/i;(即=变-=)
return; 改成 return t;

11

题目:下列给定程序中,函数fun的功能是:根据整形参m的值,计算如下公式的值。
如图。 例如:若m中的值为5,则应输出0.536389。
C语言题库【程序改错】_第1张图片

#include 

double fun ( int m )
{  
        double   y = 1.0 ;
        int  i ;
        /***********FOUND***********/
        for(i = 2 ; i < m ; i++)          /*只修改错误的地方其他不要改写否则不得分*/
        /***********FOUND***********/
                y -= 1 /(i * i) ;
        return( y ) ;
}

main( )
{  
        int n = 5 ;

        printf( "\nThe result is %lf\n", fun ( n ) ) ;
}

for(i = 2 ; i < m ; i++) 的 i
y -= 1 /(i * i); 改成 y -= 1.0 /(i * i) ;

12

题目:fun函数的功能是:删除b所指数组中小于10的数据。主函数中输出删除后数组中余下的数据。

#include  
#include  

#define   N  20

int  fun( int *b )
{
/***********FOUND***********/
        int  t[N] ,i, num
        for(i=0; i<N; i++)
                if(b[i]>=10)
                /***********FOUND***********/
                        t[++num]=b[i];
/***********FOUND***********/
        for(i=0; i<nun; i++)      /*只修改错误的地方其他不要改写否则不得分*/
                b[i]=t[i];
        return( num );
}
main()
{  
        int  a[N],i,num;
        printf("a数组中的数据 :\n");
        for(i=0;i<N ;i++)
        {
                a[i]=rand()%21; 
                printf("%4d",a[i]);
        }
        printf("\n");
        num=fun(a);
        for(i=0;i<num ;i++) 
                printf("%4d",a[i]);
        printf("\n");
}

int t[N] ,i, num 改成 int t[N] ,i, num=0;(别忘记分号哦)
t[++num]=b[i]; 改成 t[num++]=b[i];
for(i=0; i

13

功能:计算正整数num的各位上的数字之积。
例如:若输入:252,则输出应该是:20。
若输入:202,则输出应该是:0。


#include 
#include  

long fun (long num)
{
/**********FOUND**********/
  long k=1
  do
  { 
    k*=num%10 ;
    /**********FOUND**********/
    num\=10;
    /**********FOUND**********/
  }while(!num) ;
  return (k) ;
}

main( )
{ 
  long n ;
  printf("Please enter a number:") ; scanf("%ld",&n) ;
  printf("\n%ld\n",fun(n)) ;
}

long k=1 后面加一个英文状态下的分号
num=10; 的 \ 改成 /
while(!num); 改成while(num); 或者 while(num!=0);

14

功能:求出以下分数序列的前n项之和。和值通过函数值返回main
函数。
2/1+3/2+5/3+8/5+13/8+21/13 ……
例如:若n = 5,则应输出:8.391667。


#include 
#include  

/**********FOUND**********/
fun ( int n )
{
  int a, b, c, k; double s;
  s = 0.0; a = 2; b = 1;
  for ( k = 1; k <= n; k++ ) 
  {
    /**********FOUND**********/
    s = (double)a / b;
    c = a; 
    a = a + b; 
    b = c;
  }
  /**********FOUND**********/
  return c;
}

main( )
{
  int n = 5;
  printf( "\nThe value of function is: %lf\n", fun ( n ) );
}

fun ( int n ) 改成 double fun ( int n )
s = (double)a / b; 改成 s += (double)a / b; 或者 s += a / (double)b; 或者 s =s+ a / (double)b; 或者s +=(double) a / b;
return c; 的 c 改成 s

15

功能:根据整型形参 n,计算某一数据项的值。
A[1]=1, A[2]=1/(1 + A[1]), A[3]=1/(1 + A[2]), …,
A[n]=1/(1 + A[n-1])
例如:若 n=10,则应输出:a10=0.617977。


#include 
#include 
/**********FOUND**********/
int fun ( int n )
{
  double A=1; int i;
  /**********FOUND**********/
  for (i=2; i<n; i++)             /*只修改错误的地方其他不要修改否则不得分*/
  /**********FOUND**********/
  A =(float) 1.0\(1+A);            /*只修改错误的地方其他不要修改否则不得分*/
  return A ;
}
 
main( )
{
  int n ;
  printf("\nPlease enter n: ") ;
  scanf("%d", &n ) ;
  printf("A%d=%f\n", n, fun(n) ) ;
}

int fun ( int n ) 改成 float fun ( int n )
for (i=2; i
A =(float) 1.0(1+A); 的 \ 改成 /

16

功能:求广义菲玻那契级数的第n项。广义菲玻那契级数的前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<n; k++)          /*只修改错误的地方其他不要修改否则不得分*/
  {
    d = a+b+c;
    /**********FOUND**********/
    a=b
    b=c;
    c=d;
  }
  /**********FOUND**********/
  return k;
}
 
main( )
{
  int n = 15;
  printf( "The value is: %ld\n", fun ( n ) );
}

for (k=4; k
a=b 后面加一个英文状态下的分号
return k; 的 k 改成 d

17

功能:输入两个双精度数,函数返回它们的平方和的平方根值。
例如:输入: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 ( )
{
  double a, b, y;
  printf ( "Enter a, b : ");
  scanf ("%lf%lf", &a, &b );
  y = fun (&a, &b);
  printf ("y = %f \n", y );
}

double fun (double *a, *b) 改成 double fun (double *a,double *b)
c = sqr(a *a + b *b); 改成 c = sqr(*a * *a + *b * *b);
return *c; 改成 return c;

18

功能:编写一个程序,从键盘接收一个字符串,然后按照字符顺
序从小到大进行排序,并删除重复的字符。


#include 
#include 
void main()
{
  char str[100],*p,*q,*r,c;
  printf("输入字符串:");
  gets(str);
  /**********FOUND**********/
  for(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("结果字符串:%s\n\n",str);
}

for(p=str;p;p++) 改成 for(p=str;*p;p++)
if(r == p) 改成 if(r!=p)
c=r; 改成 c=*r;

19

功能:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,
当输入n为奇数时,调用函数1/1+1/3+…+1/n(利用指针函数)


#include 
main()
{
  float peven(),podd(),dcall();
  float sum;
  int n;
  while (1)
  {
    /**********FOUND**********/
    scanf("%d",n);
    if(n>1)
      break;
  }
  if(n%2==0)
  {
    printf("Even=");
    sum=dcall(peven,n);
  }
  else
  {
    printf("Odd=");
    sum=dcall(podd,n);
  }
  printf("%f",sum);
}
float peven(int n)
{
  float s;
  int i;
  s=0;
  for(i=2;i<=n;i+=2)
    /**********FOUND**********/
    s+=1%(float)i;
  return(s);
}

float podd(n)
int n;
{
  float s;
  int i;
  /**********FOUND**********/
  s=1;
  for(i=1;i<=n;i+=2)
    s+=1/(float)i;
  return(s);
}

float dcall(fp,n)
float (*fp)();
int n;
{
  float s;
  s=(*fp)(n);
  return(s);
}

scanf(“%d”,n); 改成 scanf(“%d”,&n);
s+=1%(float)i; 的 % 改成 /
s=1; 改成 s=0;

20

下列给定程序中,函数fun()的功能是根据整型形参m,
计算如下公式的值。
y=1-1/(2×2)+1/(3×3)-1/(4×4)+…+(-1)(m+1)/(m×m)

例如:m中的值为5,则应输出0.838611。

请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,
也不得更改程序的结构。

#include  
#include  
#include  
double fun(int  m)
{ 
    double  y=1.0;
/***********FOUND***********/
    int j=1;
    int i;
    for(i=2; i<=m; i++)
    {
        j=-1*j;
/***********FOUND***********/
        y+=1/(i * i);
    }
    return(y);
}
void main()
{ 
    int  n=5;
    system("CLS");
    printf("\nThe result is %lf\n" ,fun(n));
}

int j=1; 改成 double j=1.0;
y+=1/(i * i); 改成 y+=j/(i * i);

21

主函数main()首先从键盘接收N个整数,依次存放在数组a中;
其次,调用fun函数在N个整数中找出第一个奇数,并返回该数的下标值。
如果数组中无奇数,则返回-1;

#include
#define N 8
int fun(int [], int );
int main()
{
        int a[N], i;
        for (i=0; i<N; i++)
        /***********FOUND***********/
                scanf("%d",&(a+i));
        i = fun(a,N);
        if(i>=0)
        printf("第一个奇数是%d\n ",a[i]);
        return 0;
}
int fun(int a[], int n)
{
        int i;
        for (i=0; i<n; i++) 
        /***********FOUND***********/
                if (a[i]/2!=0)
                        break;
        /***********FOUND***********/
        if (i<n)  return 1;
        else  return -1;
}

scanf(“%d”,&(a+i)); 改成 scanf(“%d”,a+i);
if (a[i]/2!=0) 的 / 改成 %
return 1; 改成 return i;

22

主函数main()统计字符串中英文字符(区分大小写)、数字字符、空格、
以及其他字符的个数。

#include 
int main()
{
        int upper=0,lower=0,digit=0,space=0,other=0;
        char *p,s[80]={"This is C program dsign , Edit 4!"};
        p=&s[0];
/***********FOUND***********/
        while (*p!=="\0")
        {
                if (('A'<=*p) && (*p<='Z'))
                        ++upper;
                else if (('a'<=*p) && (*p<='z'))
                        ++lower;
        /***********FOUND***********/
                else if (*p=' ')
                        ++space;
                /***********FOUND***********/
                else if ((*p<='9') || (*p>='0'))
                        ++digit;
                else
                        ++other;
                p++;
        }
        printf("大写:%d\t小写:%d\n",upper,lower);
        printf("空格:%d\t数字:%d\t其它:%d\n",space,digit,other);
        return 0;
}

while (*p! == “\0”) 改成 while (*p!=‘\0’)
else if (*p=’ ') 改成 else if (*p == ’ ')
else if ((*p<=‘9’) || (*p>=‘0’)) 的 || 改成 &&

23

题目:reverse()函数将一维数组a中元素逆序。


#include
#define N 10
/***********FOUND***********/
void reverse(int a,int n){
    int i;
/***********FOUND***********/
    for(i=0;i<n;i++){                /*只修改错误的地方其他不要修改否则不得分*/
        a[n-1-i]=a[n-1-i]+a[i];
/***********FOUND***********/
        a[i]=a[i]-a[n-1-i];
        a[n-1-i]=a[n-1-i]-a[i];
    }
    return ;
}
int main(){
    int i;
    int a[N]={23,0,-4,8,9,13,6,-21,17,5}; 
    for(i=0;i<N;i++)
        printf("%d\t",a[i]);
    printf("\n");
    reverse(a,N);
    for(i=0;i<N;i++)
        printf("%d\t",a[i]);
    printf("\n");
    return 0;
}

void reverse(int a,int n) 改成 void reverse(int a[],int n)
for(i=0;i
a[i]=a[i]-a[n-1-i]; 改成 a[i]=a[n-1-i]-a[i];

24

题目:check()函数判断数组a中的n个元素经排序后,是否构成一
个等差数列。
例如数组元素4,7,9,5,6,8,10经升序排序后构成一个等差
数列,而9,7,2,1,6经排序后不构成等差数列。
所谓等差数列是指数列中所有相邻两数的差都相等。


#include 
int check(int a[],int n){
    int i,j,k,flag;
    for(i=0;i<n-1;i++){
        flag=0;
        for(j=n-1;j>i;j--)
            if(a[j]<a[j-1]){
                k=a[j];a[j]=a[j-1];a[j-1]=k;
                flag=1;
            }
/***********FOUND***********/
            if(flag)break;
    }
    for(i=1;i<n-1;i++)
/***********FOUND***********/
        if(a[i]-a[i-1]==a[i+1]-a[i])
            break;
/***********FOUND***********/
    if(i<=n-1)return 0;
    return 1;
}
int main(){
    int a[]={4,7,9,5,6,8,10},b[]={9,7,2,1,6};
    int i,v;
    v=check(a,7);
    for(i=0;i<7;i++)
        printf("%d\t",a[i]);
    printf("%s等差级数\n",v==1? "是":"不是");
    v=check(b,5);
    for(i=0;i<5;i++)
        printf("%d\t",b[i]);
    printf("%s等差级数\n",v==1? "是":"不是");
    return 0;
}

if(flag)break; 改成 if(flag == 0)break;
if(a[i]-a[i-1] == a[i+1]-a[i]) 改成 if(a[i]-a[i-1]!=a[i+1]-a[i])
if(i<=n-1)return 0; 改成 if(i<=n-2)return 0;

25

题目:sort()函数将from数组中的元素逐个放入to数组中,使得
to数组中的元素按升序排列。

#include 
#define N 10
void sort(int from[],int to[]){
    int i,j,k;
/***********FOUND***********/
    for(i=0;i<N-1;i++){                  /*只修改错误的地方其他不要修改否则不得分*/
        k=0;
        for(j=0;j<N;j++)
            if(from[i]>from[j] || from[i]==from[j] && i>j)
                k++;
/***********FOUND***********/
            to[i]=from[k];
    }
}
int main(){
    int a[N]={12,5,-3,20,6,0,9,5,12,-7},b[N];
    int i;
    for(i=0;i<N;i++)
        printf("%d\t",a[i]);
/***********FOUND***********/
    sort(b[N],a[N]);
    for(i=0;i<N;i++)
        printf("%d\t",b[i]);
    return 0;
}

for(i=0;i
to[i]=from[k]; 改成 to[k]=from[i];
sort(b[N],a[N]); 改成 sort(a,b);

26

题目:下面程序中,函数fun的功能是:在任意给定的9个正整数中
找出按升序排列时处于中间的数,将原数据序列中比该中间
数小的数用该中间数替换,位置不变,在主函数中输出处理
后的数据序列,并将中间数作为函数值返回。
   例如,有9个正整数:1 5 7 23 87 5 8 21 45
   按升序排列时的中间数为:8
   处理后主函数中的输出为:8 8 8 23 87 8 8 21 45


#include 
#define  N  9
int find(int []);
void sort(int []);
void main()
{ 
    int i, x[N]={1,5,7,23,87,5,8,21,45};
    for(i=0; i<9;i++)
        printf("%5d",x[i]);
    printf("\n");
/***********FOUND***********/  
    printf("The mid number is:%5d\n",find(x[]));
    for(i=0; i<9;i++)
        printf("%5d",x[i]);
    printf("\n");
}
int find(int x[])
{  
    int i,mid,b[N];
    for(i=0;i<N;i++)
        b[i]=x[i];        
    sort(b);
    mid=b[N/2];
    for(i=0; i<N;i++)
/***********FOUND***********/
        if(x[i] < mid) mid=x[i];
    return  mid;
}

void sort(int b[])
{
    int i,j,k,t;
    for(i=0;i<N;i++)
    {  
        k=i;
        for(j=i+1;j<N;j++)
/***********FOUND***********/
            if(b[k]<b[j]) k=j;
        if(k != i )
        {  
            t=b[i]; b[i]=b[k]; b[k]=t;
        }
    }
}

printf(“The mid number is:%5d\n”,find(x[])); 改成 printf(“The mid number is:%5d\n”,find(x));
mid=x[i]; 改成 x[i]=mid;
if(b[k]

27

题目:下面的程序中,函数fun的功能是:从低位开始取出长整型
变量s中奇数位上的数,依次构成一个新数放在t中。高位
仍在高位,低位仍在低位。例如,当s中的数为:654321时,
t中的数为:531。


#include 
#include 
#include 
#include 

/***********FOUND***********/ 
void fun (long);
long getnumber();
void main()
{
    long s,t;
    srand((unsigned)time(NULL));    /*初始化随机数时间序列*/
    s=getnumber();                /*随机获取一个长整数*/
    t=fun(s);
    printf("The result is: %ld,%ld\n", s,t);
}
long fun (long s)
{
    long t=0;
/***********FOUND***********/ 
    long step=10;
    while (s > 0)
    {
        t=t+s%10*step;
        step=10*step;
/***********FOUND***********/ 
        s = s/10;
    }
    return t;
}
long getnumber()
{
    int i,k;
    long n=0;
    k=rand()%4+5;
    for(i=0;i<k;i++)
    {
        while(n==0)
            n=10*n+rand()%10;
        n=10*n+rand()%10;
    }
    return n;
}

void fun (long); 改成 long fun (long);
long step=10; 改成 long step=1;
s = s/10; 改成 s = s/100;

28

题目:有一数组内放10个整数,要求求出所有元素的平均值.

#include  
float average(float array[10])
{
    int i;
    float aver,sum=array[0];
    for(i=1;i<10;i++)
        sum=sum+array[i];
    aver=sum/10.0;
    return(aver);
}
main( )
{     
    float score[10],aver ;
    int i;
    printf("input 10 scores:\n");
    for(i=0;i<10;i++)
/***********FOUND***********/
       scanf("%f", score);
    printf("\n");
/***********FOUND***********/
    aver=average(score[10]);
    printf("average score is %5.2f",aver);
}

scanf(“%f”, score); 改成 scanf(“%f”, &score);
aver=average(score[10]); 改成 aver=average(score);

你可能感兴趣的:(c语言)