《C语言<程序改错题练习合集(1)>》

简介: 《C语言<程序改错题练习合集(1)>》

"海压竹枝低复举,风吹山角晦还明。”                   ——宋·陈与义《观雨》

目录

T1:

题目:

下面程序通过指针操作,将由八进制数字组成的字符串“77777”转换为对应的十进制形式。

T2:

题目:

把字符串s中所有数字字符按以下规律改写:

(1)0,1,2,3,4,5,6,7,8分别对应改写成1,2,3,4,5,6,7,8,9

(2)9改写成0

(3)其他字符保持不变

T3:

题目:若有车的车牌号和罚分记录数据,统计罚分达到或超过12分的车辆总数并输出这些车牌的信息(说明:id域代表车牌号,score域代表罚分)

T4:

题目:输出一维数组中的最小元素及其下标值

T5:

题目:在屏幕上输出以下图形(字符之间没有空格)。

T6:

题目:统计所有三位正整数中个数和十位之和与百位的积是28的个数。如:259,268,277,286......是满足条件的数。

T7:

题目:删除字符串中的所有空白字符

T8:

题目:输出大于2016的10个最小素数,如2017,2027,2029,2039,.......等。

T9:

题目: 下面程序通过指针操作,输出由二进制数字组成的字符串"0010110101000001"对应的无符号十进制整数。

T10:

题目:输入一个正整数,判断m是否是素数。

T11:

题目:输出一维数组中的最大元素及其下标值。

T12:

题目: 从主函数中输入一个正整数n,并通过调用fac()函数,求得n的阶乘,在主函数中输出n阶乘的值。

T13:

题目:已知数列,第一项和第二项都是1,从第三项开始每项都是其前两项之和。求第n项(n从键盘输入,用递归实现)。

T14:

题目:统计1000以内个位数是9并且能被9整除的所有正整数的个数。

T15:

题目:在屏幕上输出以下图形(星号之间没有空格)

T16:

题目:将字符串“987654”转换成其对应的十进制整数形式输出。

T17:

题目:输出个位数字为7的最小的10个素数,如7,17,37,47......等。

T18:

题目:在屏幕上输出以下图形(星号之间没有空格)

T19:

题目:从键盘输入一个不多于4位的十进制正整数,求出它是几位数。

T20:

题目:在屏幕上输出以下图形(星号之间没有空格)

T21:

题目:fun函数的功能是:计算s=1+1/2+1/3+1/4+...1/n的值。在主函数中输入一个正整数n,通过调用fun函数,求得计算结果。

T22:

题目:在屏幕上输出以下图形(字符之间没有空格)。

T23:

题目:把字符串s中所有小写字母改写成该字母的下一个字母,但是如果是字母'z',则改写成字母'a',大写字母和其他字符保持不变。

T24:

题目:统计100以内有多少个素数。

T25:

题目:在屏幕上输出以下图形(说明:星号之间无空格)。

T26:

题目:函数search(int a[ ],int n,int number)的功能:在a数组的前n个元素中查找number,若存在则返回第一次找到的元素下标,否则返回-1。

主函数功能:输入number,调用search函数查找number,最后输出查找结果。

后记:●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教!                                                                     ——By 作者:新晓·故知


T1:

题目:

下面程序通过指针操作,将由八进制数字组成的字符串“77777”转换为对应的十进制形式。

#include <stdio.h>
void main()
{
  char str[6]="77777",*p;
  int n,t;
  n=1;        /*$ERROR$*/
  p=str[0];   /*$ERROR$*/
  while(*p!=0)
  {
    t=*p-'0'; 
    n=n*8+t;
    p--;    /*$ERROR$*/
  }
  printf("\n%s is convered to integer number: %d\n",str,n);
}
image.gif

题解:

//可正确执行程序
#include <stdio.h>
void main()
{
    char str[6] = "77777", * p; // char str[6] = "76777", * p; 可使用此语句进行调试,观察程序语句执行过程
    int n, t;
    n = 0;       /*已改正*/
    p = str;     /*已改正*/
    while (*p != 0)
    {
        t = *p - '0';
        n = n * 8 + t;
        p++;    /*已改正*/
    }
    printf("\n%s is convered to integer number: %d\n", str, n);
}
image.gif

T2:

题目:

把字符串s中所有数字字符按以下规律改写:

(1)0,1,2,3,4,5,6,7,8分别对应改写成1,2,3,4,5,6,7,8,9

(2)9改写成0

(3)其他字符保持不变

#include <stdio.h>
#include <string.h>
void main()
{
    char s[80];
    int i;
    getc(s);              /*$ERROR$*/
    for (i = 0; s[i] != '\0'; i++)
    {
        if (s[i] = '9')   /*$ERROR$*/
            s[i] = '0';
        else if (s[i] >= '0' && s[i] <= '8')
            s[i] = s[i] + 1;
    }
    printf("%c\n", s);   /*$ERROR$*/
}
image.gif

题解:

#include <stdio.h>
#include <string.h>
void main()
{
    char s[80];
    int i;
    gets(s);                /*已改正*/  //scanf("%s", s);此语句和gets语句等价
    for (i = 0; s[i] != '\0'; i++)
    {
        if (s[i] == '9')    /*已改正*/
            s[i] = '0';
        else if (s[i] >= '0' && s[i] <= '8')
            s[i] = s[i] + 1;
    }
    printf("%s\n", s);     /*已改正*/
}
image.gif

T3:

题目:若有车的车牌号和罚分记录数据,统计罚分达到或超过12分的车辆总数并输出这些车牌的信息(说明:id域代表车牌号,score域代表罚分)

#include <stdio.h>
struct car
{
    char id[12];
    int score;
};
void main()
{
    int i, n = 0;
    car  c[6] = { {"A-QQ111",8},  /*$ERROR$*/   
                     {"A-TT222",12},
                     {"B-WJ333",12},
                     {"C-LC444",5},
                     {"F-PC555",6},
                     {"B-MY666",12} };
    printf("id\tscore\n");
    i = 0;
    while (i < 6)
    {
        if (score >= 12)        /*$ERROR$*/
        {
            printf("%s\t%d\n", c[i].id, c[i].score);
            n--;               /*$ERROR$*/
        }
        i++;
    }
    printf("n=%d\n", n);
}
image.gif

题解:

#include <stdio.h>
struct car
{
    char id[12];
    int score;
};
void main()
{
    int i, n = 0;
    struct car  c[6] = { {"A-QQ111",8},    /*已改正*/
                      {"A-TT222",12},
                      {"B-WJ333",12},
                      {"C-LC444",5},
                      {"F-PC555",6},
                      {"B-MY666",12} };
    printf("id\tscore\n");
    i = 0;
    while (i < 6)
    {
        if (c[i].score >= 12)            /*已改正*/
        {
            printf("%s\t%d\n", c[i].id, c[i].score);
            n++;                        /*已改正*/
        }      
        i++;
    }
    printf("n=%d\n", n);
}
image.gif

T4:

题目:输出一维数组中的最小元素及其下标值

#include <stdio.h>
int search(int a[],int n) 
{
 int i,min;
 min=1;              /*$ERROR$*/
 for(i=1;i<n;i++)
 {
  if(a[i]<a[min])
         min=i; 
 }
 return i;          /*$ERROR$*/
}
void main()
{
  int a[10]={13,1,-5,4,9,0,-8,7,-6,2};
  int min;
  min=search(a);   /*$ERROR$*/
  printf("min=%d,address=%d\n",a[min],min);
}
image.gif

题解:

#include <stdio.h>
int search(int a[], int n)
{
    int i, min; 
    min = 0;                /*已改正*/
    for (i = 1; i < n; i++)
    {
        if (a[i] < a[min])
            min = i;
    }
    return min;            /*已改正*/
} 
void main()
{
    int a[10] = { 13,1,-5,4,9,0,-8,7,-6,2 };
    int min;
    min = search(a,10);   /*已改正*/
    printf("min=%d,address=%d\n", a[min], min);
}
image.gif

T5:

题目:在屏幕上输出以下图形(字符之间没有空格)。

image.gif编辑

#include <stdio.h>
#include <string.h>
void main()
{
    char a[6] = "54321", temp;
    int i, k;
    for (i = 1; i <= 5; i++)
    {
        printf("%c\n", a);         /*$ERROR$*/
        temp = a[0];
        for (k = 0; k < 4; k++)
            a[k + 1] = a[k];      /*$ERROR$*/
        a[4] = a[0];              /*$ERROR$*/
    }
}
image.gif

题解:

#include <stdio.h>
#include <string.h>
void main()
{
    char a[6] = "54321", temp;
    int i, k;
    for (i = 1; i <= 5; i++)
    {
        printf("%s\n", a);        /*已改正*/
        temp = a[0];
        for (k = 0; k < 4; k++)
            a[k] = a[k + 1];     /*已改正*/
        a[4] = temp;             /*已改正*/
    }
}
image.gif

T6:

题目:统计所有三位正整数中个数和十位之和与百位的积是28的个数。如:259,268,277,286......是满足条件的数。

#include <stdio.h>
void main()
{
    int i, g, s, b, count;
    count = 1;                  /*$ERROR$*/
    for (i = 100; i <= 999; i++)
    {
        g = i % 10;
        s = i / 10 % 10;
        b = i % 100;           /*$ERROR$*/
        if ((g + s) * b == 28)
            count = i;         /*$ERROR$*/
    }
    printf("%d\n", count);
}
image.gif

题解:

#include <stdio.h>
void main()
{
    int i, g, s, b, count;
    count = 0;                      /*已改正*/
    for (i = 100; i <= 999; i++)
    {
        g = i % 10;
        s = i / 10 % 10;    
        b = i / 100;               /*已改正*/
        if ((g + s) * b == 28)
        {
            count++;              /*已改正*/
           //printf("%d ", i);    //此语句打印满足条件的数值
        }
    }
    printf("%d\n", count);
}
image.gif

T7:

题目:删除字符串中的所有空白字符

#include <stdio.h>
void main()
{
  char s[100] = "I love this program.";
  int i, j;
  j = 0;
  for (i = 0; s[i] != '\0'; i++)
  {
    if (s[i] != ' ')
    {
      s[j] = s[i];
      i++;          /*$ERROR$*/
    }
  }
  s[j] = "\0";         /*$ERROR$*/
  printf("%c\n", s);   /*$ERROR$*/
}
image.gif

题解:

#include <stdio.h>
void main()
{
  char s[100] = "I love this program.";
  int i, j;
  j = 0;
  for (i = 0; s[i] != '\0'; i++)
  {
    if (s[i] != ' ')
    {
      s[j] = s[i];
      j++;          /*已改正*/
    }
  }
  s[j] = '\0';          /*已改正*/
  printf("%s\n", s);    /*已改正*/
}
image.gif

T8:

题目:输出大于2016的10个最小素数,如2017,2027,2029,2039,.......等。

#include <stdio.h>
void main()
{
    int i, j, flag, n;
    n = 0;
    i = 2016;
    while (n <= 10)               /*$ERROR$*/
    {
        flag = 0;
        for (j = 2; j < i; j++)
            if (i / j == 0)       /*$ERROR$*/
            {
                flag = 1;
                break;
            }
        if (flag >= 0)           /*$ERROR$*/
        {
            n = n + 1;
            printf("%d\n", i);
        }
        i = i++; 
    }
}
image.gif

题解1:

#include <stdio.h>
void main()
{
    int i, j, flag, n;
    n = 0;
    i = 2016;
    while (n < 10)                 /*已改正*/
    {
        flag = 0;
        for (j = 2; j < i; j++)
            if (i % j == 0)       /*已改正*/
            {
                flag = 1;
                break;
            }
        if (flag == 0)            /*已改正*/
        {
            n = n + 1;
            printf("%d\n", i);
        }
        i = i++; 
    }
}
image.gif

题解2:

#include <stdio.h>
void main()
{
    int i, j, flag, n;
    n = 0;
    i = 2016;
    while (n < 10 && i--)           /*已改正*/
    {
        flag = 0;
        for (j = 2; j < i; j++)
            if (i % j == 0)         /*已改正*/
            {
                flag = 1;
                break;
            }
        if (flag == 0)             /*已改正*/
        {
            n = n + 1;
            printf("%d\n", i);
        }
        i = i + 2;   //此语句和原题(i=i++;)不同,但这种写法可编译 
    }
}
image.gif

T9:

题目: 下面程序通过指针操作,输出由二进制数字组成的字符串"0010110101000001"对应的无符号十进制整数。

#include <stdio.h>
void main()
{
    char v2[] = "0010110101000001", * p;
    unsigned int v10, t;
    v10 = 1;                /*$ERROR$*/
    p = v2[0];              /*$ERROR$*/
    while (*p != '\0')
    {
        t = *p - '0';
        v10 = v10 * 2 + t;
        p--;               /*$ERROR$*/
    }
    printf("\n%s is convered to integer number: %u\n", v2, v10);
}
image.gif

题解:

#include <stdio.h>
void main()
{
    char v2[] = "0010110101000001", * p;
    unsigned int v10, t;
    v10 = 0;                    /*已改正*/
    p = v2;                     /*已改正*/
    while (*p != '\0')
    {
        t = *p - '0';
        v10 = v10 * 2 + t;
        p++;                    /*已改正*/
    }
    printf("\n%s is convered to integer number: %u\n", v2, v10);
}
image.gif

T10:

题目:输入一个正整数,判断m是否是素数。

#include <stdio.h>
void main()
{
    int i, j, flag, m;
    scanf("%d", m);                /*$ERROR$*/
    flag = 0;
    for (i = 2; i < m; i++)
    {
        if (m / i == 0)           /*$ERROR$*/
        {
            flag = 1;
            break;
        }
    }
    if (flag >= 0)                /*$ERROR$*/
        printf("%d是素数\n", m);
    else
        printf("%d不是素数\n", m);
}
image.gif

题解:

#include <stdio.h>
void main()
{
    int i, j, flag, m;
    scanf("%d", &m);               /*已改正*/
    flag = 0;
    for (i = 2; i < m; i++)
    { 
        if (m % i == 0)           /*已改正*/
        {
            flag = 1;
            break;
        }
    }
    if (flag == 0)                /*已改正*/
        printf("%d是素数\n", m);
    else
        printf("%d不是素数\n", m);
}
image.gif

T11:

题目:输出一维数组中的最大元素及其下标值。

#include <stdio.h>
int search(int a[], int n)
{
    int i, max;
    max = 1;                              /*$ERROR$*/
    for (i = 1; i < n; i++)
    {
        if (a[i] > a[max])
            max = i;
    }
    return i;                            /*$ERROR$*/
}
void main()
{
    int a[10] = { 13,1,-5,4,9,0,-8,7,-6,2 };
    int max;
    max = search(a);                     /*$ERROR$*/
    printf("max=%d,address=%d\n", a[max], max);
}
image.gif

题解:

#include <stdio.h>
int search(int a[], int n)
{
    int i, max;
    max = 0;                     /*已改正*/
    for (i = 1; i < n; i++)
    {
        if (a[i] > a[max])
            max = i;
    }
    return max;                  /*已改正*/
}
void main()
{
    int a[10] = { 13,1,-5,4,9,0,-8,7,-6,2 };
    int max;
    max = search(a, 10);        /*已改正*/
    printf("max=%d,address=%d\n", a[max], max);
}
image.gif

T12:

题目: 从主函数中输入一个正整数n,并通过调用fac()函数,求得n的阶乘,在主函数中输出n阶乘的值。

#include <stdio.h>
long fac(int n)
{
    int i;
    long s;
    s = 1;
    i = 0;                    /*$ERROR$*/
    while (i < n)             /*$ERROR$*/
    {
        s = s * i;
        i++;
    }
    return s;
}
void main()
{
    int n;
    long result;
    printf("Enter n:");
    scanf("%d", n);          /*$ERROR$*/
    result = fac(n);
    printf("n! =%ld\n", result);
}
image.gif

题解:

#include <stdio.h>
long fac(int n)
{
    int i;
    long s;
    s = 1;
    i = 1;                      /*已改正*/
    while (i <= n)              /*已改正*/
    {
        s = s * i;
        i++;
    }
    return s;
}
void main()
{
    int n;
    long result;
    printf("Enter n:");
    scanf("%d", &n);            /*已改正*/
    result = fac(n);
    printf("n! =%ld\n", result);
}
image.gif

T13:

题目:已知数列,第一项和第二项都是1,从第三项开始每项都是其前两项之和。求第n项(n从键盘输入,用递归实现)。

#include <stdio.h>
long  f(int n)
{
    if (n = 1 || n = 2)                     /*$ERROR$*/
        return 1;
    else
        return f(n - 1) - f(n - 2);         /*$ERROR$*/
}
void main()
{
    long m;
    int n;
    printf("\nPlease input n:\n");
    scanf("%d", n);                         /*$ERROR$*/
    if (n > 0)
    {
        m = f(n);
        printf("%ld\n", m);
    }
    else printf("Data error\n");
}
image.gif

题解:

//求第n项的斐波那契数列的值
#include <stdio.h>
long  f(int n)
{
    if (n == 1 || n == 2)                /*已改正*/
        return 1;
    else
        return f(n - 1) + f(n - 2);      /*已改正*/
}
void main()
{
    long m;
    int n;
    printf("\nPlease input n:\n");
    scanf("%d", &n);                    /*已改正*/
    if (n > 0)
    {
        m = f(n);
        printf("%ld\n", m);
    }
    else printf("Data error\n");
}
image.gif

T14:

题目:统计1000以内个位数是9并且能被9整除的所有正整数的个数。

#include <stdio.h>
void main()
{
    int i, c;
    c = 1;                          /*$ERROR$*/
    for (i = 1; i < 1000; i++)
        if (i % 9 == 0)
            if (i % 10 == 9)
            {
                c = i;              /*$ERROR$*/
            }
    print("%d\n", c);               /*$ERROR$*/
}
image.gif

题解:

#include <stdio.h>
void main()
{
    int i, c;
    c = 0;                          /*已改正*/
    for (i = 1; i < 1000; i++)
        if (i % 9 == 0)
            if (i % 10 == 9)
            {
                c++;                /*已改正*/
                //printf("%d ", i);    
            }
    printf("\n");
    printf("%d\n", c);              /*已改正*/
}
image.gif

T15:

题目:在屏幕上输出以下图形(星号之间没有空格)

image.gif编辑

#include <stdio.h>
void main()
{
    int i, j;
    i = 1;                               /*$ERROR$*/
    while (i < 5)
    {
        j = 0;
        while (j <= i)
        {
            printf("*");
            j++;
        }
        printf("\n");
        i++;
    }
    i = 4;
    while (i > 0)
    {
        j = 0;
        while (j <= 4 - i)
        {
            printf(" ");/*输出一个空格*/
            j++;
        }
        j = 0;
        while (j < 4 - i)               /*$ERROR$*/
        {
            printf("*");
            j++;
        }
        printf("\n");
        i++;                           /*$ERROR$*/
    }
}
image.gif

题解:

//左上右下
#include <stdio.h>
void main()
{
    int i, j;
    i = 0;                                /*已改正*/
    while (i < 5)
    {
        j = 0;
        while (j <= i)
        {
            printf("*");
            j++;
        }
        printf("\n");
        i++;
    }
    i = 4;
    while (i > 0)
    {
        j = 0;
        while (j <= 4 - i)
        {
            printf(" ");/*输出一个空格*/
            j++;
        }
        j = 0;
        while (j <= i - 1)               /*已改正*/
        {
            printf("*");
            j++;
        }
        printf("\n");
        i--;                             /*已改正*/
    }
}
image.gif

T16:

题目:将字符串“987654”转换成其对应的十进制整数形式输出。

#include <stdio.h>
void main()
{
    char str[20] = "987654", * p;
    int n, t;
    n = 1;                  /*$ERROR$*/
    p = str[0];             /*$ERROR$*/
    while (*p != 0)
    {
        t = *p - '0';
        n = n * 10 + t;
        p--;               /*$ERROR$*/
    }
    printf("\n%s is convered to integer number: %d\n", str, n);
}
image.gif

题解:

#include <stdio.h>
void main()
{
    char str[20] = "987654", * p;
    int n, t;
    n = 0;                  /*已改正*/
    p = str;                /*已改正*/
    while (*p != 0)
    {
        t = *p - '0';
        n = n * 10 + t;
        p++;                /*已改正*/
    }
    printf("\n%s is convered to integer number: %d\n", str, n);
}
image.gif

T17:

题目:输出个位数字为7的最小的10个素数,如7,17,37,47......等。

#include <stdio.h>
void main()
{
    int i, j, flag, n;
    n = 0;
    i = 7;
    while (n <= 10)      /*$ERROR$*/
    {
        flag = 0;
        for (j = 2; j < i; j++)
            if (i / j == 0)       /*$ERROR$*/
            {
                flag = 1;
                break;
            }
        if (flag >= 0)      /*$ERROR$*/
        {
            n = n + 1;
            printf("%d\n", i);
        }
        i = i + 10;
    }
}
image.gif

题解:

#include <stdio.h>
void main()
{
    int i, j, flag, n;
    n = 0;
    i = 7;
    while (n < 10)                   /*已改正*/
    {
        flag = 0;
        for (j = 2; j < i; j++)
            if (i % j == 0)          /*已改正*/
            {
                flag = 1;
                break;
            }
        if (flag == 0)               /*已改正*/
        {
            n = n + 1;
            printf("%d\n", i);
        }
        i = i + 10;
    }
}
image.gif

T18:

题目:在屏幕上输出以下图形(星号之间没有空格)

image.gif编辑

#include <stdio.h>
void main()
{
    int i, j;
    i = 1;                          /*$ERROR$*/
    while (i < 5)
    {
        j = 0;
        while (j < 4 - i)
        {
            printf(" ");/*输出一个空格*/
            j++;
        }
        j = 0;
        while (j <= i)
        {
            printf("*");
            j++;
        }
        printf("\n");
        i++;
    }
    i = 4;
    while (i > 0)
    {
        j = 0;
        while (j < 4 - i)            /*$ERROR$*/
        {
            printf("*");
            j++;
        }
        printf("\n");
        i++;                        /*$ERROR$*/
    }
}
image.gif

题解:

//左下右上
#include <stdio.h>
void main()
{
    int i, j;
    i = 0;                     /*已改正*/
    while (i < 5)
    {
        j = 0;
        while (j < 4 - i)
        {
            printf(" ");/*输出一个空格*/
            j++;
        }
        j = 0;
        while (j <= i)
        {
            printf("*");
            j++;
        }
        printf("\n");
        i++;
    }
    i = 4;
    while (i > 0)
    {
        j = 0;
        while (j < i - 1)     /*已改正*/
        {
            printf("*");
            j++;
        }
        printf("\n");
        i--;                  /*已改正*/
    }
}
image.gif

T19:

题目:从键盘输入一个不多于4位的十进制正整数,求出它是几位数。

例如:输入528,则结果为n=3。

#include <stdio.h>
void main()
{
    int x, n;
    scanf("%d", x);                        /*$ERROR$*/
    if (x <= 0 || x >= 10000)
        printf("Data Error!\n");
    else
    {
        if (x <= 10) n = 1;                /*$ERROR$*/
        else if (x < 100) n = 2;
        else if (x < 1000) n = 3;
        n = 4;                             /*$ERROR$*/
        printf("n=%d\n", n);
    }
}
image.gif

题解:

#include <stdio.h>
void main()
{
    int x, n;
    scanf("%d", &x);                     /*已改正*/
    if (x <= 0 || x >= 10000)
        printf("Data Error!\n");
    else
    {
        if (x < 10) n = 1;               /*已改正*/
        else if (x < 100) n = 2;
        else if (x < 1000) n = 3;
        else n = 4;                      /*已改正*/
        printf("n=%d\n", n);
    }
}
image.gif

T20:

题目:在屏幕上输出以下图形(星号之间没有空格)

image.gif编辑

#include <stdio.h>
void main()
{
    int i, j, k, n = 0;
    char ch = '*';
    for (i = 1; i <= 5; i++)
    {
        j = 1;
        while (j <= 5 - i)
        {
            printf(" ");
            j++;
        }
        j = 0;                   /*$ERROR$*/
        while (j <= 2 * i - 1)
        {
            printf("%d", ch);   /*$ERROR$*/
            j++;
        }
        printf("/n");          /*$ERROR$*/
    }
}
image.gif

题解:

#include <stdio.h>
void main()
{
    int i, j, k, n = 0;
    char ch = '*';
    for (i = 1; i <= 5; i++)
    {
        j = 1;
        while (j <= 5 - i)
        {
            printf(" ");
            j++;
        }
        j = 1;                    /*已改正*/
        while (j <= 2 * i - 1)
        {
            printf("%c", ch);    /*已改正*/
            j++;
        }
        printf("\n");            /*已改正*/
    }
}
image.gif

T21:

题目:fun函数的功能是:计算s=1+1/2+1/3+1/4+...1/n的值。在主函数中输入一个正整数n,通过调用fun函数,求得计算结果。

#include <stdio.h>
double fun(int n)
{
    double s;
    if (n > 1)
        s = 1.0 / n + fun(n - 1);
    else
        s = 1.0;
    return;                                  /*$ERROR$*/
}
void main()
{
    int n;
    double result;
    printf("\nPlease input n:\n");
    scanf("%d", n);                          /*$ERROR$*/
    if (n <= 0)
        printf("\nData error\n);
    else
    {
        result = fun(&n);                   /*$ERROR$*/
        printf("\nThe result is %lf\n", result);
    }
}
image.gif

题解:

#include <stdio.h>
double fun(int n)
{
    double s;
    if (n > 1)
        s = 1.0 / n + fun(n - 1);
    else
        s = 1.0;
    return s;                                 /*已改正*/
}
void main()
{
    int n;
    double result;
    printf("\nPlease input n:\n");
    scanf("%d", &n);                          /*已改正*/
    if (n <= 0) 
        printf("\nData error\n");
    else
    {
        result = fun(n);                      /*已改正*/
        printf("\nThe result is %lf\n", result);
    }
}
image.gif

T22:

题目:在屏幕上输出以下图形(字符之间没有空格)。

image.gif编辑

#include <stdio.h>
#include <string.h>
void main()
{
    char a[6] = "ABCDE", temp;
    int i, k;
    for (i = 1; i <= 5; i++)
    {
        printf("%c\n", a);              /*$ERROR$*/
        temp = a[0];
        for (k = 0; k < 4; k++)
            a[k + 1] = a[k];            /*$ERROR$*/
        a[4] = a[0];                    /*$ERROR$*/
    }
}
image.gif

题解:

#include <stdio.h>
#include <string.h>
void main()
{
    char a[6] = "ABCDE", temp;
    int i, k;
    for (i = 1; i <= 5; i++)
    {
        printf("%s\n", a);            /*已改正*/
        temp = a[0];
        for (k = 0; k < 4; k++)
            a[k] = a[k + 1];          /*已改正*/
        a[4] = temp;                  /*已改正*/
    }
}
image.gif

T23:

题目:把字符串s中所有小写字母改写成该字母的下一个字母,但是如果是字母'z',则改写成字母'a',大写字母和其他字符保持不变。

#include <stdio.h>
void main()
{
    char s[80];
    int i;  
    getc(s);                          /*$ERROR$*/
    for (i = 0; s[i] != '\0'; i++)
    {
        if (s[i] = 'z')               /*$ERROR$*/
            s[i] = 'a';
        else if (s[i] >= 'a' && s[i] <= 'y')
            s[i] = s[i] + 1;
    }
    printf("%c\n", s);               /*$ERROR$*/
}
image.gif

题解:

#include <stdio.h>
void main()
{
    char s[80];
    int i;
    gets(s);   //scanf("%s", s);       /*已改正*/
    for (i = 0; s[i] != '\0'; i++)
    {
        if (s[i] == 'z')               /*已改正*/
            s[i] == 'a';
        else if (s[i] >= 'a' && s[i] <= 'y')
            s[i] = s[i] + 1;
    }
    printf("%s\n", s);                 /*已改正*/
}
image.gif

T24:

题目:统计100以内有多少个素数。

#include <stdio.h>
void main()
{
    int i, j, flag, count;
    count = 1;                       /*$ERROR$*/
    for (i = 2; i <= 100; i++)
    {
        flag = 0;
        for (j = 2; j < i; j++)
            if (i / j == 0)         /*$ERROR$*/
            {
                flag = 1;
                break;
            }
        if (flag >= 0)              /*$ERROR$*/
            count++;
    }
    printf("%d\n", count);
}
image.gif

题解:

#include <stdio.h>
void main()
{
    int i, j, flag, count;
    count = 0;                     /*已改正*/
    for (i = 2; i <= 100; i++)
    {
        flag = 0;
        for (j = 2; j < i; j++)
            if (i % j == 0)        /*已改正*/
            {
                flag = 1;
                break;
            } 
        if (flag == 0)            /*已改正*/
        {
            //printf("%d ", i);  //此语句可打印符合条件的每一项
            count++;
        }
    }
    printf("\n");
    printf("%d\n", count);
}
image.gif

T25:

题目:在屏幕上输出以下图形(说明:星号之间无空格)。

image.gif编辑

#include <stdio.h>
void main()
{
    char a[5];
    int i, j;
    for (j = 0; j < 5; j++)
        a[j] = "*";                   /*$ERROR$*/
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j <= i; j++)
            printf("%d", a[j]);      /*$ERROR$*/
        printf("/n");                /*$ERROR$*/
    }
}
image.gif

题解:

#include <stdio.h>
void main()
{
    char a[5];
    int i, j;
    for (j = 0; j < 5; j++)
        a[j] = '*';                  /*已改正*/
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j <= i; j++)
            printf("%c", a[j]);     /*已改正*/
        printf("\n");               /*已改正*/
    }
}
image.gif

T26:

题目:函数search(int a[ ],int n,int number)的功能:在a数组的前n个元素中查找number,若存在则返回第一次找到的元素下标,否则返回-1。

主函数功能:输入number,调用search函数查找number,最后输出查找结果。

image.gif编辑

#include <stdio.h>
int search(int a[],int n,int number)
{
  int result=-1;
  int i;
  for(i=0;i<n;i++)
  {
    if(a[i]==number)
    {
      result=i;
      continue;     /*$ERROR$*/  
    }
  }
  return n;         /*$ERROR$*/  
}
void main()
{
  int a[10]={9,8,12,15,17,9,16,23,8,15}; 
  int number;
  int result;
  scanf("%d",&number);
  result=search(a,10,number);
  if(result=-1)       /*$ERROR$*/  
    printf("Not found!\n");
  else
    printf("%d\n",result);
}
image.gif

题解:

#include <stdio.h>
int search(int a[], int n, int number)
{
  int result = -1;
  int i;
  for (i = 0; i < n; i++)
  {
    if (a[i] == number)
    {
      result = i;
      break;        /*已改正*/
    }
  }
  return result;         /*已改正*/   //return i!=number?-1:i+1;
}
void main()
{
  int a[10] = { 9,8,12,15,17,9,16,23,8,15 };
  int number;
  int result;
  scanf("%d", &number);
  result = search(a, 10, number);
  if (result == -1)         /*已改正*/
    printf("Not found!\n");
  else
    printf("%d\n", result);
}
image.gif

后记:

●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教!


                                                                    ——By 作者:新晓·故知

相关文章
|
23天前
|
存储 算法 C语言
"揭秘C语言中的王者之树——红黑树:一场数据结构与算法的华丽舞蹈,让你的程序效率飙升,直击性能巅峰!"
【8月更文挑战第20天】红黑树是自平衡二叉查找树,通过旋转和重着色保持平衡,确保高效执行插入、删除和查找操作,时间复杂度为O(log n)。本文介绍红黑树的基本属性、存储结构及其C语言实现。红黑树遵循五项基本规则以保持平衡状态。在C语言中,节点包含数据、颜色、父节点和子节点指针。文章提供了一个示例代码框架,用于创建节点、插入节点并执行必要的修复操作以维护红黑树的特性。
45 1
|
23天前
|
NoSQL 编译器 程序员
【C语言】揭秘GCC:从平凡到卓越的编译艺术,一场代码与效率的激情碰撞,探索那些不为人知的秘密武器,让你的程序瞬间提速百倍!
【8月更文挑战第20天】GCC,GNU Compiler Collection,是GNU项目中的开源编译器集合,支持C、C++等多种语言。作为C语言程序员的重要工具,GCC具备跨平台性、高度可配置性及丰富的优化选项等特点。通过简单示例,如编译“Hello, GCC!”程序 (`gcc -o hello hello.c`),展示了GCC的基础用法及不同优化级别(`-O0`, `-O1`, `-O3`)对性能的影响。GCC还支持生成调试信息(`-g`),便于使用GDB等工具进行调试。尽管有如Microsoft Visual C++、Clang等竞品,GCC仍因其灵活性和强大的功能被广泛采用。
49 1
|
20天前
|
编译器 C语言 计算机视觉
C语言实现的图像处理程序
C语言实现的图像处理程序
42 0
|
4天前
|
存储 编译器 程序员
C语言程序的基本结构
C语言程序的基本结构包括:1)预处理指令,如 `#include` 和 `#define`;2)主函数 `main()`,程序从这里开始执行;3)函数声明与定义,执行特定任务的代码块;4)变量声明与初始化,用于存储数据;5)语句和表达式,构成程序基本执行单位;6)注释,解释代码功能。示例代码展示了这些组成部分的应用。
22 10
|
1月前
|
自然语言处理 编译器 C语言
C语言程序的编译
C语言程序的编译
33 2
|
2月前
|
前端开发 C语言 C++
C语言03----第一个程序HelloWorld(vs版)
C语言03----第一个程序HelloWorld(vs版)
|
3月前
|
C语言
C语言练习代码第一篇
C语言练习代码第一篇
|
3月前
|
C语言 图形学 C++
|
3月前
|
自然语言处理 C语言 C++
程序与技术分享:C++写一个简单的解析器(分析C语言)
程序与技术分享:C++写一个简单的解析器(分析C语言)
|
3月前
|
程序员 编译器 C语言
详解C语言入门程序:HelloWorld.c
详解C语言入门程序:HelloWorld.c