程序改错

题号:12101

题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

#include "stdio.h"

main()
{
    char c;
    int letters = 0, space = 0, digit = 0, others = 0;
    printf("please input some characters\n");
    while((c = getchar()) == '\n')  // Error 1
    {
        if(c >= 'a' && c <= 'z' && c >= 'A' && c <= 'Z')  // Error 2
            letters++;
        else if(c =! ' ')  // Error 3
            space++;
        else if(c >= '0' && c <= '9')
            digit++;
        else
            others++;
    }
    printf("all in all:char=%d space=%d digit=%d others=%d\n",
           letters, space, digit, others);
}

答案:

  • 位置 1: while((c = getchar()) != '\n')
  • 位置 2: if(c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
  • 位置 3: else if(c == ' ')

题号:8384

功能:用起泡法对10个整数从小到大排序。

#include "stdio.h"

void sort(int x, int n)  // Error 1
{
    int i, j, k, t;
    for(i = 0; i < n - 1; i++)
        for(j = 0; j < n - i; j++)  // Error 2
            if(x[i] > x[i + 1])  // Error 3
            {
                t = x[j];
                x[j] = x[j + 1];
                x[j + 1] = t;
            }
}

main()
{
    int i, n, a[100];
    printf("please input the length of the array:\n");
    scanf("%d", &n);
    for(i = 0; i < n; i++) scanf("%d", &a[i]);
    sort(n, a);  // Error 4
    printf("output the sorted array:\n");
    for(i = 0; i <= n - 1; i++) printf("%5d", a[i]);
    printf("\n");
}

答案:

  • 位置 1: void sort(int *x, int n)void sort(int x[], int n)
  • 位置 2: for(j = 0; j < n - 1 - i; j++)
  • 位置 3: if(x[j] > x[j + 1])
  • 位置 4: sort(a, n);

题号:9441

题目: 找出一个大于给定整数m且紧随m的素数,并作为函数值返回。

#include<conio.h>
#include<stdio.h>
int fun(int m)
{
    int i;k;  /* 错误1 */
    for(i=m+1;;i++)
    {
        for(k=2;k<i;k++)
            if(i%k!=0)  /* 错误2 */
                break;
        if(k=i)  /* 错误3 */
            return(i);
    }
}
main()
{
    int n;
    clrscr();
    printf("\nPlease enter n:");
    scanf("%d",&n);
    printf("%d\n",fun(n));
    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)

题号:8576

题目: 给定程序中,函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。
例如,当s中的数为:7654321时,t中的数为:642。
请改正程序中的错误,使它能得出正确结果。

#include <stdio.h>
void fun(long s,long t)  /* 错误1 */
{ 
    long s1=10;
    s/=10;
    *t=s%10;
    while(s<0)  /* 错误2 */
    {
        s=s/100;
        *t=s%10*s1+*t;
        s1=s1*10;
    }
}
main()
{ 
    long s,t;
    printf("\nPlease enter s:");
    scanf("%ld",&s);
    fun(s,&t);
    printf("The result is:%ld\n",t);
}

答案:

  • 错误1: void fun(long s,long *t)
  • 错误2: while(s>0)while(s!=0)

题号:7182

题目: 给定程序中函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。
例如,在调用fun函数之前给a输入字符串:ABCDEFGHIJK,调用函数之后,字符数组b中的内容则为:ABC DEF GHI JK。
请改正程序中的错误,使它能得出正确结果。

#include <stdio.h>
void fun(char *p, char *b)
{
    int i, k=0;
    while(*p)
    {
        i=1;
        while(i<=3 && *p)
        {
            b[k] = *p;  /* 错误1 */
            k++;
            p++;
            i++;
        }
        if(*p)
        {
            b[k++] = ' ';  /* 错误2 */
        }
    }
    b[k] = '\0';
}

main()
{
    char a[80], b[80];
    printf("Enter a string: ");
    gets(a);
    printf("The original string: ");
    puts(a);
    fun(a, b);
    printf("\nThe string after insert space: ");
    puts(b);
    printf("\n\n");
}

答案:

  • 错误1: b[k] = *p;
  • 错误2: b[k++] = ' ';

题号:10239

题目: 求一个3行4列矩阵的外框的元素值之和。
注意:矩阵四个角上的元素不能重复加。
例如:矩阵元素为1,2,3,4,5,6,7,8,9,10,11,12时,四框元素值之和应为65。

#include "stdio.h"
int fun(int a[3][4], int m, int n)
{
    int i, j, s, s1=0, s2=0, s3=0, s4=0;  /* 错误1 */
    for(j=0; j<n; j++)
    {
        s1 = s1 + a[0][j];
        s2 = s2 + a[m-1][j];  /* 错误2 */
    }
    for(i=1; i<m-1; i++)  /* 错误3 */
    {
        s3 = s3 + a[i][0];
        s4 = s4 + a[i][n-1];
    }
    s = s1 + s2 + s3 + s4;  /* 错误4 */
    return s;
}

void main()
{
    int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
    printf("total=%d\n", fun(a, 3, 4));
}

答案:

  • 错误1: int i, j, s, s1=0, s2=0, s3=0, s4=0;
  • 错误2: s2 = s2 + a[m-1][j];s2 += a[m-1][j];s2 = a[m-1][j] + s2;
  • 错误3: for(i=1; i<m-1; i++)for(i=1; i<-1+m; i++)for(i=1; m-1>i; i++)for(i=1; -1+m>i; i++)for(i=1; i<=m-2; i++)for(i=1; m-2>=i; i++)
  • 错误4: s = s1 + s2 + s3 + s4;

题号:11864

题目: 用下面的和式求圆周率的近似值。直到最后一项的绝对值小于等于 0.0001。

$$
\frac{\pi}{4} = 1 - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} + \dots
$$

#include "stdio.h"
#include "math.h"  /* 错误1 */
void fun()
{
    int i = 1;
    float s = 0, t, p = 1;
    t = 1;  /* 错误2 */
    while (fabs(t) > 1e-4)  /* 错误3 */
    {
        s = s + t;
        p = -p;
        i = i + 2;
        t = p / i;
    }
    printf("pi=%f\n", s * 4);  /* 错误4 */
}
void main()
{
    fun();
}

答案:

  • 错误1: #include "math.h"#include <math.h>
  • 错误2: t = 1;
  • 错误3: while (fabs(t) > 1e-4)while (0.0001 < fabs(t))while (1e-4 < fabs(t))while (fabs(t) > 0.0001)
  • 错误4: printf("pi=%f\n", s * 4);printf("pi=%f\n", 4 * s);

题号:1920

题目: 一个偶数总能表示为两个素数之和。

#include "stdio.h"
#include "math.h"
main()
{
    int a, b, c, d;
    scanf("%d", &a);  /* 错误1 */
    for (b = 3; b <= a / 2; b += 2)
    {
        for (c = 2; c <= sqrt(b); c++)
            if (b % c == 0)
                break;
        if (c > sqrt(b))
            d = a - b;  /* 错误2 */
        else
            break;
        for (c = 2; c <= sqrt(d); c++)
            if (d % c == 0)  /* 错误3 */
                break;
        if (c > sqrt(d))
            printf("%d=%d+%d\n", a, b, d);
    }
}

答案:

  • 错误1: scanf("%d", &a);
  • 错误2: d = a - b;
  • 错误3: if (d % c == 0)

题号:9037

题目: 编写函数 fun 生成一个周边元素为 5,其它元素为 1 的 3×3 的二维数组。

#include "stdio.h"
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");
    }
    getch();
}

fun(int arr[][3])
{
    int i, j;  /* 错误1 */
    for (i = 0; i < 3; i++)  /* 错误2 */
        for (j = 0; j < 3; j++)
            if (i == 0 || j == 0 || i == 2 || j == 2)
                arr[i][j] = 5;
            else if (i + j == 1 || i + j == 3)  /* 错误3 */
                arr[i][j] = 5;
            else
                arr[i][j] = 1;
}

答案:

  • 错误1: int i, j;
  • 错误2: for (i = 0; i < 3; i++)
  • 错误3: else if (i + j == 1 || i + j == 3)

题号:12176

题目: 请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

#include <stdio.h>
void main()
{
    char letter;
    printf("please input the first letter of someday\n");
    while ((letter = getch()) != 'Y')  /* 错误1 */
    {
        switch (letter)
        {
            case 'S':
                printf("please input second letter\n");
                if ((letter = getch()) == 'a')
                    printf("saturday\n");
                else if ((letter = getch()) == 'u')
                    printf("sunday\n");
                else
                    printf("data error\n");
                break;
            case 'F':
                printf("friday\n");
                break;
            case 'M':
                printf("monday\n");
                break;
            case 'T':
                printf("please input second letter\n");
                if ((letter = getch()) == 'u')  /* 错误2 */
                    printf("tuesday\n");
                else if ((letter = getch()) == 'h')
                    printf("thursday\n");
                else
                    printf("data error\n");
                break;  /* 错误3 */
            case 'W':
                printf("wednesday\n");
                break;
            default:
                printf("data error\n");
        }
    }
    getch();
}

答案:

  • 错误1: while ((letter = getch()) != 'Y')
  • 错误2: if ((letter = getch()) == 'u')
  • 错误3: break;

题号:10318

题目: 定义一个 3×3 的二维数组 b,数组元素的值由键盘输入,输出其中的最小值及所在的行下标。

#include "stdio.h"
int hang;
int fun(int b[3][3]);

main()
{
    int b[3][3], i, j, min;
    printf("给数组元素赋值:\n");
    for (i = 0; i < 3; i++)
        for (j = 0; j < 3; j++)
            scanf("%d", &b[i][j]);
    printf("输出3×3的矩阵:\n");
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
            printf("%4d", b[i][j]);
        printf("\n");
    }
    min = fun(b);
    printf("min=%d,hang=%d\n", min, hang);
}

int fun(int b[3][3])
{
    int i, j, min = b[0][0];  /* 错误1 */
    hang = 0;
    for (i = 0; i < 3; i++)
        for (j = 0; j < 3; j++)
            if (min > b[i][j])  /* 错误2 */
            {
                min = b[i][j];
                hang = i;  /* 错误3 */
            }
    return min;  /* 错误4 */
}

答案:

  • 错误1: int i, j, min = b[0][0];
  • 错误2: if (min > b[i][j])if (min >= b[i][j])if (b[i][j] < min)if (b[i][j] <= min)
  • 错误3: hang = i;
  • 错误4: return min;return (min);

题号:8513

题目: 输出 Fibonacci 数列的前 20 项,要求变量类型定义成浮点型,输出时只输出整数部分,输出项数不得多于或少于 20。

#include "stdio.h"
void fun()
{
    int i;
    float f1 = 1, f2 = 1, f3;
    printf("%8.0f", f1);  /* 错误1 */
    printf("%8.0f", f2);
    i = 2;  /* 错误2 */
    while (i <= 20)
    {
        f3 = f1 + f2;
        f1 = f2;  /* 错误3 */
        f2 = f3;  /* 错误4 */
        i++;
        printf("%8.0f", f3);
    }
    printf("\n");
}
void main()
{
    fun();
}

答案:

  • 错误1: printf("%8.0f", f1);printf("%f", f1);printf("%8f", f1);
  • 错误2: i = 2;
  • 错误3: f1 = f2;
  • 错误4: f2 = f3;

题号:10309

题目: 调用 fun 函数。从键盘上输入一个整数给变量 n,求 1-n 之间的奇数和。如 n 输入 8,和为 16。

#include <stdio.h>
int fun(int k)  /* 错误1 */
{
    int m = 0;
    while (k >= 1)
    {
        if (k % 2 == 1)  /* 错误2 */
            m = m + k;
        k--;
    }
    return m;
}
main()
{
    int n;
    scanf("%d", &n);  /* 错误3 */
    printf("%d\n", fun(n));
}

答案:

  • 错误1: int fun(int k)
  • 错误2: if (k % 2 == 1)if (k % 2)if (k % 2 != 0)
  • 错误3: scanf("%d", &n);scanf("%d",&n);

题号:7203

题目: 给定程序中函数 fun 的功能是:从低位开始取出长整型变量 s 中奇数位上的数,依次构成一个新数放在 t 中。高位仍在高位,低位仍在低位。
例如,当 s 中的数为:7654321 时,t 中的数为:7531。
请改正程序中的错误,使它能得出正确的结果。

#include <stdio.h>
void fun(long s, long *t)  /* 错误1 */
{
    long sl = 10;
    *t = s % 10;
    while (s > 0)
    {
        s = s / 100;
        *t = s % 10 * sl + *t;
        sl = sl * 10;  /* 错误2 */
    }
}
main()
{
    long s, t;
    printf("\nPlease enter s:");
    scanf("%ld", &s);
    fun(s, &t);
    printf("The result is: %ld\n", t);
}

答案:

  • 错误1: void fun(long s, long *t)
  • 错误2: sl = sl * 10;

题号:10550

程序改错:

只允许修改错误代码,其他代码不允许修改!
功能:将一个字符串中的大写字母转换成小写字母。
例如:输入aSdFG输出为asdfg。

#include<stdio.h>
/*=======ERROR=======*/
bool fun(char *c)
{
  if(*c<='Z'&&*c>='A')*c-='A'-'a';
  /*=======ERROR=======*/
  fun= c;
}
void main()
{
  /*=======ERROR=======*/
  char s[81],p=s;
  gets(s);
  while(*p)
  {
    *p=fun(p);
    /*=======ERROR=======*/
    puts(*p);
    p++;
  }
  putchar('\n');
}

答案:
位置1: char fun(char *c)
位置2: return *c;return (*c);return(*c);
位置3: char s[81],*p=s;
位置4: putchar(*p);printf("%c",*p);


题号:8333

程序改错:

题目:809*??=800*??+9*??+1 其中??代表的两位数,
8*??的结果为两位数,9*??的结果为3位数。
求??代表的两位数,及809*??后的结果。

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

#include "stdio.h"
output(long b,long i)
{ printf("\n%ld=800*%ld+9*%ld+1\n",b,i,i);
  printf("??代表的两位数: %d",i);
  printf("\n809*??后的结果:%d",b);
  getch();
}
main()
/*=======Error=======*/
{long int a;b;i;
  a=809;
  /*=======Error=======*/
  for(i=10;i<100,i++)
  {
    /*=======Error=======*/
    b=i/a+1;
    if(b>=1000&&b<=10000&&8*i<100&&9*i>=100)
      output(b,i);
  }
}

答案:
位置1: {long int a,b,i;
位置2: for(i=10;i<100;i++)for(i=10;i<=99;i++)
位置3: b=i*a+1;b=a*i+1;


题号:10431

程序改错:

题目:函数fun的功能是:根据整型形参m的值,计算如下公式的值。

$$
t=1-\frac{1}{2\times2}-\frac{1}{3\times{3}}-\dots-\frac{1}{m\times m}
$$

例如,若m=5,则应输出:0.536389

请改正程序中的错误,使它能得出正确的结果。

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

double fun(int m)
{
  /*=======ERROR=======*/
  int y=1;
  int i;
  /*=======ERROR=======*/
  for(i=2;i<m;i--)
  /*=======ERROR=======*/
    y-=1/(i*i);
  /*=======ERROR=======*/
  return m;
}

main()
{
  int n=5;
  printf("\nthe result is %lf\n",fun(n));
}

答案:
位置1: double y=1.0;
位置2: for(i=2;i<=m;i++)for(i=2;m>=i;i++)for(i=2;i<m+1;i++)for(i=2;i<1+m;i++)for(i=2;m+1>i;i++)for(i=2;1+m>i;i++)
位置3: y-=1.0/(i*i);y=y-1.0/(i*i);y-=1.0/(float)(i*i);y=y-1.0/(float)(i*i);y=y-1.0/i/i;y=y-1.0/(float)i/(float)i;
位置4: return y;return (y);return(y);


题号:10977

程序改错:

功能:请编写函数fun,对长度为8个字符的字符串,将8个字符按降序排列。

例如:原来的字符串为CEAedcab,排序后输出为edcbaECA。

#include "stdio.h"
#include "ctype.h"
#include "conio.h"
int fun(char *s,int num)
{
  /*=======ERROR=======*/
  int i;j;
  char t;
  for(i=0;i<num;i++)
    /*=======ERROR=======*/
    for(j=i;j<num;j++)
      /*=======ERROR=======*/
      if(s[i]>s[j])
      {
        t=s[i];
        s[i]=s[j];
        s[j]=t;
      }
}

main()
{
  char s[10];
  printf("输入8个字符的字符串:");
  gets(s);
  fun(s,8);
  printf("\n%s",s);
}

答案:
位置1: int i,j;
位置2: for(j=i+1;j<num;j++)
位置3: if(s[i]<s[j])


题号:8697

程序改错:

题目:用起泡法对10个整数从小到大排序。程序中共有4条错误语句,请改正错误。

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

/*=======Error=======*/
void sort(int x,int n)
{
  int i,j,k,t;
  for(i=0;i<n-1;i++)
    /*=======Error=======*/
    for(j=0;j<n-i;j++)
      /*=======Error=======*/
      if(x[i]>x[i+1])
        { t=x[j];x[j]=x[j+1];x[j+1]=t;}
}

main()
{
  int i,n,a[100];
  printf("please input the length of the array:\n");
  scanf("%d",&n);
  for(i=0;i<n;i++)
    scanf("%d",&a[i]);
  /*=======Error=======*/
  sort(n,a);
  printf("output the sorted array:\n");
  for(i=0;i<=n-1;i++)
    printf("%5d",a[i]);
  printf("\n");
}

答案:
位置1: void sort(int *x,int n)
位置2: for(j=0;j<n-1-i;j++)for(j=0;n-1-i>j;j++)for(j=0;j<n-(1+i);j++)for(j=0;n-(1+i)>j;j++)
位置3: if(x[j]>x[j+1])if(x[j+1]<x[j])
位置4: sort(a,n);


题号:9313

程序改错:

题目:从键盘输入二维数组a[4][5]的值,求每列元素的最小值,并存入一维数组b[5]中。

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

#include <stdio.h>
void fun(int a[4][5],int b[])
{
  int i,j,min;
  for(j=0;j<5;j++)
  {
    /*=======ERROR=======*/
    min=a[j][0];
    for(i=0;i<4;i++)
      /*=======ERROR=======*/
      if(min<a[i][j])
        min=a[i][j];
    /*=======ERROR=======*/
    b[i]=min;
  }
}

main()
{
  int a[4][5],b[5],i,j;
  for(i=0;i<4;i++)
    for(j=0;j<5;j++)
      /*=======ERROR=======*/
      scanf("%d",a[i][j]);
  for(i=0;i<4;i++)
  {
    for(j=0;j<5;j++)
      printf("%5d",a[i][j]);
    printf("\n");
  }
  fun(a,b);
  for(i=0;i<5;i++)
    printf("%5d",b[i]);
}

答案:
位置1: min=a[0][j];
位置2: if(min>a[i][j])if(min>=a[i][j])if(a[i][j]<min)if(a[i][j]<=min)
位置3: b[j]=min;
位置4: scanf("%d",&a[i][j]);


题号:10425

程序改错:

功能:读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。例如:若输入整数:2310,则应输出:2、3、5、7、11。

请改正程序中的语法错误,使程序能得出正确的结果。

#include "conio.h"
#include "stdio.h"
/*=======ERROR=======*/
int IsPrime(integer n )
{
  int i, m;
  m = 1;
  for ( i = 2; i < n; i++ )
    /*=======ERROR=======*/
    if ( n%i )
    {
      m = 0;
      break;
    }
  /*=======ERROR=======*/
  return ( n );
}

main( )
{
  int j, k;
  printf( "\nPlease enter an integer number between 2 and 10000: " );
  scanf( "%d", &k );
  printf( "\n\nThe 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");
}

答案:
位置1: IsPrime(int n)
位置2: if(!(n%i))if(n%i==0)if((n%i)==0)
位置3: return ( m );


题号:8708

程序改错:

功能:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如:当s中的数为:87653142时,t中的数为: 7531。

#include <conio.h>
#include <stdio.h>
void fun (long s, long *t)
{
  int d;
  long sl=1;
  /*=======ERROR=======*/
  t = 0;
  while ( s > 0)
  {
    d = s%10;
    /*=======ERROR=======*/
    if (d%2 == 0)
    {
      *t = d * sl + *t;
      sl *= 10;
    }
    /*=======ERROR=======*/
    s \= 10;
  }
}

void main()
{
  long s, t;
  printf("\nPlease enter s:"); scanf("%ld", &s);
  fun(s, &t);
  printf("The result is: %ld\n", t);
}

答案:
位置1: *t = 0;
位置2: if(d%2)if(d%2!=0)if((d%2)!=0)if((d%2)==1)if(d%2==1)
位置3: s /= 10;s=s/10


题号:10800

功能: 将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。
例如:若输入字符串"-1234",则函数把它转换为整数值 -1234。

#include"stdio.h"
long fun ( char *p)
{
int i=1;
long n=0;
/**********ERROR**********/
if(p=='-')
{
p++; i=-1;
}
else if(*p=='+')
p++;
while(*p>='0' && *p<='9')
n=10*n + *p++ - '0';
/**********ERROR**********/
return n+i;
}
void main()
{
char s[6];
long n;
printf("Enter a string:\n") ;
gets(s);
/**********ERROR**********/
n == fun(s);
printf("%ld\n",n);
}

答案:
位置 1: if(*p=='-')
位置 2: return n*i;
位置 3: n = fun(s);


题号:8722

功能: 输入n,计算s=1+1+2+1+2+3+1+2+3+4+…+1+2+3+4+…+n

#include<stdio.h>
void main()
{
/**********ERROR**********/
int i,s;p,n;
printf("Enter n:\n");
/**********ERROR**********/
scanf("%d",n);
/**********ERROR**********/
for(s=p=0,i=1;i<n;i++)
s+=p+=i;
printf("S= %d\n",s);
}

答案:
位置 1: int i,s,p,n;
位置 2: scanf("%d",&n);
位置 3: for(s=p=0,i=1;i<=n;i++)for(s=p=0,i=1;i<n+1;i++)


题号:11686

题目: 给定程序MODI1.C中函数 fun 的功能是:从m个学生的成绩中统计出高于和等于平均分的学生人数,此人数由函数值返回。平均分通过形参传回,输入学生成绩时,用-1结束输入,由程序自动统计学生人数。
例如,若输入 8 名学生的成绩,输入形式如下:

80.5 60 72 90.5 98 51.5 88 64 -1

结果为:

The number of students :4
Ave = 75.56

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

#include <conio.h>
#include <stdio.h>
#define N 20
int fun ( float *s, int n, float *aver )
{ float av, t ; int count , i;
count = 0; t=0.0;
for ( i = 0; i < n; i++ ) t += s [ i ];
av = t / n; printf( "ave =%f\n",av );
for ( i = 0; i < n; i++ )
/**********Error**********/
if ( s[ i ] < av ) count++;
/**********Error**********/
aver = av;
/**********Error**********/
return count
}
main()
{ float a, s[30], aver;
int m = 0, i;
clrscr();
printf ( "\nPlease enter marks ( -1 to end):\n " );
scanf("%f",&a );
while( a>0 ) { s[m] = a; m++; scanf ( "%f", &a );}
printf( "\nThe number of students : %d\n" , fun ( s, m, &aver ));
printf( "Ave = %6.2f\n",aver );
}

答案:
位置 1: if ( s[ i ] >= av ) count++;
位置 2: *aver = av;
位置 3: return count;


题号:8535

题目: 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

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

#include"stdio.h"
main()
{
/**********Error**********/
float sn=100.0;hn=sn/2;
int n;
/**********Error**********/
for(n=2;n<10;n++)
{
sn=sn+2*hn;
/**********Error**********/
hn=hn%2;
}
printf("the total of road is %f\n",sn);
printf("the tenth is %f meter\n",hn);
}

答案:
位置 1: float sn=100.0,hn=sn/2;
位置 2: for(n=2;n<=10;n++)for(n=2;n<11;n++)
位置 3: hn=hn/2;


题号:12146

题目: 函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。例如,若给num1num2分别输入4921,则输出的最大公约数为7
请改正程序中的错误,使它能得出正确的结果。
注意:不可以增加或删除程序行,也不可以更改程序的结构。

int fun(int a,int b)
{
  int r,t;
  if(a<b)
  {
    t=a;
    /**********Error**********/
    b=a;
    /**********Error**********/
    a=t;
  }
  r=a%b;
  while(r!=0)
  {
    a=b;
    b=r;
    /**********Error**********/
    r=a/b;}
  /**********Error**********/
  return a;
}
main()
{
  int num1,num2,a;
  scanf("%d%d",&num1,&num2);
  a=fun(num1,num2);
  printf("the maximum common divisor is %d\n\n",a);
}

答案:
位置 1: a=b;
位置 2: b=t;
位置 3: r=a%b;}
位置 4: return b;return (b);


题号:8716

题目: 给定程序MODI1.C中函数fun的功能是:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,当s中的数为:87653142时,t中的数为:8642
注意:不可以增加或删除程序行,也不可以更改程序的结构。

#include <conio.h>
#include <stdio.h>
void fun (long s, long *t)
{ int d;
  long sl=1;
  *t = 0;
  while ( s > 0)
  { d = s%10;
    /**********Error**********/
    if(d%2=0)
    /**********Error**********/
    { *t=d* sl+ t;
      sl *= 10;
    }
    /**********Error**********/
    s\=10;
  }
}
main()
{ long s, t;
  clrscr();
  printf("\nPlease enter s:"); scanf("%ld", &s);
  fun(s, &t);
  printf("The result is: %ld\n", t);
  getch();
}

答案:
位置 1: if(d%2==0)
位置 2: { *t=d* sl+ *t;
位置 3: s/=10;s=s/10;


题号:10005

题目: 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
注意:不可以增加或删除程序行,也不可以更改程序的结构。

#include"stdio.h"
main()
{
  int i=5;
  void palin(int n);
  printf("\40:");
  palin(i);
  printf("\n");
}
void palin(n)
int n;
{
  /**********Error**********/
  int next;
  if(n<=1)
  {
    /**********Error**********/
    next!=getchar();
    printf("\n\0:");
    putchar(next);
  }
  else
  {
    next=getchar();
    /**********Error**********/
    palin(n);
    putchar(next);
  }
}

答案:
位置 1: char next;
位置 2: next=getchar();
位置 3: palin(n-1);


题号:9811

题目: 根据整型形参m,计算如下公式的值:
$$y = 1 + \frac{1}{3} + \frac{1}{5} + \frac{1}{7} + \cdots + \frac{1}{2m-3}$$
注意:不可以增加或删除程序行,也不可以更改程序的结构。

#include "stdio.h"
double fun(int m)
{
  /**********ERROR**********/
  double y=1
  int i;
  /**********ERROR**********/
  for(i=1; i<m; i++)
    /**********ERROR**********/
    y+=1.0/(2i-3);
  return(y);
}
main()
{
  int n;
  printf("Enter n: ");
  scanf("%d", &n);
  printf("\nThe result is %1f\n", fun(n));
}

答案:
位置 1: double y=1;
位置 2: for(i=1; i<=m; i++)
位置 3: y+=1.0/(2*i-3);


题号:1512

功能: 求广义菲玻那契级数的第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;
  clrscr( );
  printf( "The value is: %ld\n", fun ( n ) );
}

答案:
位置 1: for (k=4; k<=n; k++)
位置 2: a=b;
位置 3: return d;