C语言第五章:循环结构程序设计总结。(超详细)

简介: C语言第五章:循环结构程序设计总结。(超详细)

 目录

 

5.1引例

5.2使用for语句实现循环结构

5.2.1for语句的基本循环

2.for语句的一般形式中省略表达式.

5.2.2for循环使用示例

5.3使用while语句实现循环结构

5.4使用do-while语句实现循环结构

5.4.1do-while语句的基本语法。

5.5改变循环结构的跳转语句

5.5.1 break语句

5.5.2 continue语句

5.5.3goto语句

5.6循环嵌套

5.7典型算法举例

5.7.1 递推法

5.7.2迭代法

5.7.3穷举法

5.8循环程序设计示例

文字总结



5.1引例

    1. 需要重复执行的语句称为循环语句,在重复执行的过程中使用了同一个计算公式,但年份每次递减1应是计算出人口会不同
    int main()
    {
     int n = 13, year;
     double nu, r = 0.02;
     for (year = 1; year <= 10; year++)
     {
      nu = n * pow((1 + r), year);
      printf("%2d年后,人数为:%.2f亿\n", year, nu);
     }return 0;
    }

    image.gif

    image.gif编辑

      1. while语句是3种循环结构之一,while后括号中的表达式称为循环条件,循环开始时,一定要保证循环条件为真。
      2. 需要重复执行的语句组成了循环体,本例中循环体部分是重复计算item,然后将其值与要求的精度进行比较,决定是否结束循环
      int main()
      {
       double sum, item, flag, denominator;
       sum = 0; item = 1; flag = 1; denominator = 1;
       while (fabs(item) >= 1e-6)
       {
        sum = sum + item;
        flag = -flag;
        denominator = denominator + 3;
        item = flag / denominator;
       }printf("sum=%f\n", sum);
       return 0;
      }

      image.gif

      image.gif编辑

      5.2使用for语句实现循环结构

      5.2.1for语句的基本循环

      for语句的一般形式为:

      for(表达式1;表达式2;表达式3;)

                循环体结构;

      for语句的执行过程如下:

        1. 首先计算表达式一
        2. 判断表达式二若琪只为真则执行循环体语句,然后执行第3步,值为假结束循环,转到第5步执行
        3. 计算表达式3
        4. 返回第2步继续执行循环
        5. 结束继续执行for语句的下一条语句

        for(循环变量赋初值;循环条件;循环变量增量;)

        说明:循环变量赋初值是一个赋值语句,用于给循环变量赋初值,循环条件是一个关系表达式,决定如何种植循环(即确定循环的终止),循环变量增值决定循环变量在完成一次循环后如何变化,向部分之间以‘;’隔开

        int main()
        {
         int i, n, sum;
         scanf_s("%d", &n);
         sum = 0;
         for (i = 1; i <= n; i++)
          sum = sum + i;
         printf("由1到%d的和是:%d\n", n, sum);
         return 0;
        }

        image.gif

        image.gif编辑

        本题目是个连乘的重复过程。

        int main()
        {
         int i, n;
         double f;
         printf("输入n的值:");
         scanf_s("%d", &n);
         f = 1;
         for (i = 1; i <= n; i++)
          f = f * i;
         printf("%d=%.0f\n", n, f);
         return 0;
        }

        image.gif

        image.gif编辑

        2.for语句的一般形式中省略表达式.

        1.for(;表达式2;表达式3;)

        循环体语句;

        注意:此时不能省略第一个;。

        2.for(表达式1;;表达式3;)

        省略表达式2时,表示不对循环进行控制,这是不处理的话,会形成死循环;

        3.for(表达式1;表达式2;;)

        可以在循环语句中加入修改循环变量的值的语句。。

        5.2.2for循环使用示例

        image.gif编辑

        int main()
        {
         int n, i, denominator, flag;
         float sum, item;
         printf("输入n的值:");
         scanf_s("%d", &n);
         flag = 1;
         denominator = 1;
         sum = 0;
         for(i=1;i<=n;i++)
         {
          item = flag * 1.0 / denominator;
          sum = sum + item;
          flag = -flag;
          denominator = denominator + 3;
         }printf("Sum=%.2f\n", sum);
         return 0;
        }

        image.gif

        image.gif编辑

        //int main()
        //{
        // int i;
        // float x, max;
        // printf("请输入第1个数:");
        // scanf_s("%f", &x);
        // max = x;
        // for(i=1;i<=9;i++)
        // {
        //  printf("请输入第%d个数:", i + 1);
        //  scanf_s("%f", &x);
        //  if (x > max)
        //   max = x;
        // }printf("10个数的最大数是:%0.f",max);
        // return 0;
        // 
        //}

        image.gif

        image.gif编辑

        //int main()
        //{
        // int n, a, b, c;
        // for (n = 100; n <= 999; n++)
        // {
        //  a = n / 100;
        //  b = n % 100 / 10;
        //  c = n % 10;
        //  if (n == a * a * a + b * b * b + c * c * c)
        //   printf("%5d", n);
        // }return 0;
        //}

        image.gif

        image.gif编辑

        //int main()
        //{
        // int n, sum, i;
        // printf("请输入一个正整数:");
        // scanf_s("%d", &n);
        // sum = 0;
        // for (i = 1; i <= n - 1; i++)
        //  if (n % i == 0)
        //   sum = sum + i;
        // if (n == sum)
        //  printf("%d是完数\n", n);
        // else
        //  printf("%d不是完数\n", n);
        // return 0;
        //}

        image.gif

        image.gif编辑

        //int main()
        //{
        //  int u, l, d, i, o;
        //  char ch;
        //  u = l = d = o = 0;
        //  printf("输入10个字符:");
        //  for (i = 1; i <= 10; i++)
        //  {
        //    ch = getchar();
        //    if (ch >= 'a' && ch <= 'z')
        //      l++;
        //    else if (ch >= 'A' && ch <= 'Z')
        //      u++;
        //    else if (ch >= '0' && ch <= '9')
        //      d++;
        //    else
        //      o++;
        //  }printf("小写字母%d个,大写字母%d个,数字%d个,其他字符%d个\n", l, u, d, o);
        //  return 0;
        //}

        image.gif

        image.gif编辑

        //int main()
        //{
        //  int i;
        //  char ch;
        //  for (i = 1; (ch = getchar()) != '\n'; i++)
        //    putchar(ch - 32);
        //  return 0;
        //}

        image.gif

        image.gif编辑

        //int main()
        //{
        //  int n = 0, i;
        //  char ch;
        //  printf("输入3个数字:");
        //  for(i=1;i<=3;i++)
        //  {
        //    scanf_s("%c", &ch);
        //    n = n * 10 + ch - '0';
        //  }printf("%d\n", n);
        //  return 0;
        //}

        image.gif

        image.gif编辑

        //int main()
        //{
        //  int i, f, n;
        //  printf("请输入一个正整数:");
        //  scanf_s("%d", &n);
        //  f = 1;
        //  for (i = 2; i <= n - 1 && f; i++)
        //    if (n % i == 0)
        //      f = 0;
        //  if (f)
        //    printf("%d是素数\n", n);
        //  else
        //    printf("%d不是素数\n", n);
        //  return 0;
        //}

        image.gif

        5.3使用while语句实现循环结构

        while(表达式)

        循环体;

        第一步,计算表达式的值,若表达式的值为真,就执行第二步或表达式的值为假,就转到第四步。

        第二步执行循环体语句。

        第三步,返回第一步。

        第四步,结束循环执行语句的下一条语句。

        注意: while语句的特点是先判断循环条件,后执行循环体。

        image.gif编辑

        //int main()
        //{
        //  int i, sum;
        //  i = 1; sum = 0;
        //  while(i<=100)
        //  {
        //    sum = sum + i;
        //    i = i + 1;
        //  }printf("sum=%d\n", sum);
        //    return 0;
        //}

        image.gif

        image.gif编辑

        //int main()
        //{
        //  int i; long n, fact;
        //  i = 2; fact = 1;
        //  printf("请输入n的值:");
        //  scanf_s("%ld", &n);
        //  while(i<=n)
        //  {
        //    fact = fact * i;
        //    i = i + 1;
        //  }printf("%ld!=%ld\n", n, fact);
        //  return 0;
        //}

        image.gif

        5.4使用do-while语句实现循环结构

        在C语言中,do-while语句也用于完成不定次数的循环控制语句。while不同的是语句。do-while首先执行一次循环体,然后判断循环条件,如果满足这反复执行循环体语句,否则结束循环语句。

        5.4.1do-while语句的基本语法。

        do-while在使用时,首先要执行循环体语句,然后再判断条件所以,do-while可以用语句实现直到型循环。一般形式如下:

        do

         循环体

        while(表达式)

        第一步,执行循环体语句。

        第二步计算表达式的值,若表达式的值为真,非零,返回第一步,若表达式的值为假零,则执行第三步,

        第三部结束循环执行语句的下一条语句。注意语句的特点是先执行循环体,后判断循环条件,因此循环至少执行一次循环体。

         image.gif编辑

        //int main()
        //{
        //  int i, sum;
        //  i = 1, sum = 0;
        //  do
        //  {
        //    sum = sum + i;
        //    i = i + 1;
        //  } while (i <= 100);
        //    printf("sum=%d", sum);
        //  return 0;
        //}

        image.gif

        一般来说,如果题目中给出了循环次数,首选for循环语句,如果循环次数不明确,需要通过其他条件控制循环。通常选用while循环语句,如果需要先执行语句,然后再根据条件判断是否继续执行循环体,则do-while语句最合适。

        image.gif编辑

        //int main()
        //{
        //  int a, b, r, n, m;
        //  printf("请输入两个整数:");
        //  scanf_s("%d%d", &a, &b);
        //  m = a, n = b;
        //  do
        //  {
        //    r = a % b;
        //    a = b;
        //    b = r;
        //  } while (r != 0);
        //  printf("%d和%d的最大公约数是:%d\n", m, n, a);
        //  printf("最大公倍数是:%d", m * n / a);
        //  return 0;
        //}

        image.gif

        image.gif编辑

        //int main()
        //{
        //  int count = 0;
        //  long n, m;
        //  printf("请输入一个整数:");
        //  scanf_s("%ld", &n);
        //  m = n;
        //  if (n < 0)n = -n;
        //  do
        //  {
        //    n = n / 10;
        //    count++;
        //  } while (n != 0);
        //  printf("整数%d有%d位数\n", m, count);
        //  return 0;
        //}

        image.gif

        5.5改变循环结构的跳转语句

        在前面介绍的三种循环语句及for循环语句、while循环语句及do well循环语句中,控制循环是通过循环达到设定的次数或者循环的判断条件为假时结束循环。这种循环控制方式在实际程序中是不够的。许多时候,当循环结构中出现多个循环条件时,要求当某个条件满足时会立刻结束循环,或者循环结构中,根据条件会调出某些语句继续循环,需要在循环结构中配合使用break语句和continue语句。

        5.5.1 break语句

        当break语句用于循环语句中时,可使程序终止循环而转去执行循环语句的后续语句。通常break语句总是与if语句一起配合使用及满足条件时,便跳出循环。

        image.gif编辑

        //int main()
        //{
        //  int i = 5;
        //  do
        //  {
        //    if (i % 3 == 1)
        //      if (i % 5 == 2)
        //      {
        //        printf("%d", i);
        //        break;
        //      }i++;
        //  } while (i != 0);
        //  return 0;
        //}

        image.gif

        image.gif编辑

        //int main()
        //{
        //  int n, m, i;
        //  printf("请输入一个正整数:");
        //  scanf_s("%d",&n);
        //  m = sqrt(n);
        //  for (i = 2; i <= m; i++)
        //    if (n % i == 0)
        //      break;
        //  if (i > m)
        //    
        //    printf("%d是素数!\n", n);
        //  else
        //  printf("%d是素数!\n", n);
        //  return 0;
        //}

        image.gif

        image.gif编辑

        //int main()
        //{
        //    int num, n;
        //    float score, total = 0;
        //    num = 0; n = 0;
        //    while (1)
        //    {
        //        printf("请输入分数#%d(0~100):", n + 1);
        //        scanf_s("%f", &score);
        //        if (score < 0)
        //            break;
        //        if (score < 60)
        //            num++;
        //        total += score;
        //        n++;
        //    }
        //    printf("平均分数是:%.2f.\n", total / n);
        //    printf("不及格的有:%d.\n", num);
        //    return 0;
        //}

        image.gif

        5.5.2 continue语句

        Continue语句的作用是跳过循环体中,Continue后面的语句,继续下一次循环。continue语句只能用在循环语句中,常与if语句一起使用。

        image.gif编辑

        //int main()
        //{
        //  int i, n = 1;
        //  for (i = 1; i <= 100; i++)
        //  {
        //    if (i % 7 != 0)
        //      continue;
        //    printf("%4d", i);
        //    if (n++ % 5 == 0)printf("\n");
        //  }return 0;
        //}

        image.gif

        image.gif编辑

        //int main()
        //{
        //  int n, s = 0;
        //  n = 1;
        //  while(n<10)
        //  {
        //    s = s + n;
        //    if (s > 5)
        //      break;
        //    if (n % 2 == 1)
        //      continue;
        //    n++;
        //  }printf("s=%d,n%d\n", s, n);
        //  return 0;
        //}

        image.gif

        5.5.3goto语句

        除了前面介绍的三种循环控制语句,还有一种可以实现控制的语句及goto语句说明。语句标号是一个有效的标识符,使用时在语句标号后面跟一个出现在函数中某语句的前面,程序执行到goto语句时会控制跳转到该语句标号处,达到控制循环的目的。

        image.gif编辑

        //int main()
        //{
        //  int i, sum;
        //  i = 1; sum = 0;
        //lopp: if(i<=100)
        //{
        //  sum = sum + i;
        //  i = i + 1;
        //  goto lopp;
        //}printf("sum=%d\n", sum);
        //return 0;
        //}

        image.gif

        注意,语句标号必须与goto语句处于同一个函数中,通常goto语句与if语句连体,实现控制循环。大型程序中,由于goto语句可能存在的不合理的使用,会使成构程序结构变坏,所以结构化程序设计中不建议使用goto语句。

        5.6循环嵌套

        当一个循环的循环,体内又包含了另一个完整的循环结构时,成为循环的嵌套或者是二重循环。根据问题的需要,可以构成三重及以上的循环嵌套结构,它一般情况下最多使用到三重循环。

         

        image.gif编辑

        //int main()
        //{
        //    int i, j;
        //    double factorial, s = 0;
        //    for (i = 1; i <= 10; i++)
        //    {
        //        factorial = 1;
        //        for (j = 1; j <= i; j++)
        //            factorial *= j;
        //        s += factorial;
        //    }
        //    printf("1!+2!+3!+···+10!=%.0f\n", s);
        //    return 0;
        //}

        image.gif

        image.gif编辑

        //int main()
        //{
        //    int i, j;
        //    for (i = 1; i <= 9; i++)
        //    {
        //        for (j = 1; j <= i; j++)
        //            printf("%d*%d=%d\t", j, i, j * i);
        //        printf("\n");
        //    }
        //    return 0;
        //}

        image.gif

        image.gif编辑

        //int main()
        //{
        //    int i, n, k, count = 0;
        //    n = 2;
        //    while (n < 100)
        //    {
        //        k = sqrt(n);
        //        for (i = 2; i <= k; i++)
        //            if (n % i == 0)break;
        //        if (i > k)
        //        {
        //            printf("%4d", n);
        //            if (++count % 10 == 0)printf("\n");
        //        }
        //        n++;
        //    }
        //    return 0;
        //}

        image.gif

        image.gif编辑

        // int main()
        //{
        //    int i, n, m;
        //    for (m = 10; m <= 20; m++)
        //    {   n = m, i = 2;
        //        printf("%d=", n);
        //        do
        //        { if (n % i == 0)
        //            { printf("%d*", i);
        //                n=n/i;
        //            }
        //            else
        //                i++;
        //        }while (n != i);
        //        printf("%d\n", n);
        //    }
        //    return 0;
        //}

        image.gif

        5.7典型算法举例

        在解决实际问题的过程中,经常要用到一些典型的算法,熟悉并掌握这些算法对提高程序设计的技能与技巧很有帮助。半介介绍常用的递推法、迭代法及穷举法。

        5.7.1 递推法

        image.gif编辑

        //int main()
        //{
        //    int day, d1, d2;
        //    day = 9;
        //    d2 = 1;
        //    do
        //    {
        //        d1 = (d2 + 1) * 2;
        //        d2 = d1;
        //        --day;
        //    }
        //    while (day > 0);
        //        printf("第一天摘了%d\n", d1);
        //    return 0;
        //}

        image.gif

        image.gif编辑

        //#define eps 1e-6
        //int main()
        //{
        //    int n = 1; float x;
        //    double fz, fm = 1, sinx;
        //    printf("请输入x的值:");
        //    scanf_s("%f", &x);
        //    fz = x; sinx = x;
        //    do
        //    {
        //        n += 1;
        //        fz = -fz * x * x;
        //        fm = fm * (2 * n - 2) * (2 * n - 1);
        //            sinx = sinx + fz / fm;
        //    } while (fabs(fz / fm) > eps);
        //    printf("sin(%f)=%0.6f\n", x, sinx);
        //    printf("sin(%f)=%0.6f\n", x, sin(x));
        //    return 0;
        //}

        image.gif

        5.7.2迭代法

        image.gif编辑

        //int main()
        //{
        //    float x1, x0, f, f1;
        //    x1 = 1.0;
        //    do
        //    {
        //        x0 = x1;
        //        f = ((2 * x0 - 4) * x0 + 3) * x0 - 6;
        //        f1 = (6 * x0 - 8) * x0 + 3;
        //        x1 = x0 - f / f1;
        //    } while (fabs(x1 - x0) > eps);
        //    printf("%6.2f", x1);
        //    return 0;
        //}

        image.gif

        5.7.3穷举法

        image.gif编辑

        //int main()
        //{
        //    int men, women, child;
        //    for (men = 0; men <= 9; men++)
        //        for (women = 0; women <= 12; women++)
        //        {
        //            child = 36 - men - women;
        //            if (men * 4 + women * 3 + child * 0.5 == 36)
        //                printf("男:%d,女:%d,小孩:%d\n", men, women, child);
        //        }
        //return 0;
        //}

        image.gif

        image.gif编辑

        //int main()
        //{
        //    int i, j, k, n = 0;
        //    for(i=1;i<5;i++)
        //        for ( j= 1; j < 5; j++)
        //            for (k = 1; k < 5; k++)
        //                if (i != k && i != j && j != k)
        //                {
        //                    printf("%d%d%d\t", i, j, k);
        //                    if (++n % 5 == 0)printf("\n");
        //                }
        //    printf("\n共有:%d\n", n);
        //    return 0;
        //}

        image.gif

        5.8循环程序设计示例

        image.gif编辑

        //int main()
        //{
        //    int i, j;
        //    for (i = 1; i <= 5; i++)
        //    {
        //        for (j = 1; j <= 20 - i; j++)
        //            printf(" ");
        //        for (j = 1; j <= 2 * i - 1; j++)
        //            printf("*");
        //        printf("\n");
        //    }
        //    return 0;
        //}
                              /*【例5.35】*/

        image.gif

        image.gif编辑

        //int main()
        //{
        //    int m, n, count = 0;
        //        m = rand() % (80 - 10 + 1) + 10;
        //        printf("请输入一个10—80之间的整数:");
        //        while (1)
        //        {
        //            scanf_s("%d", &n);
        //            count++;
        //            if (m == n)
        //            {
        //                printf("恭喜!你猜对了,你真棒!\n");
        //                break;
        //            }
        //            else if (m > n && count < 5)
        //                printf("对不起!你猜小了!再来一次!");
        //            else if (m < n && count < 5)
        //                printf("对不起!你猜大了!再来一次!");
        //            if (count == 5)
        //            {
        //                printf("对不起!你没有机会了!\n这个数是:%d,游戏结束!\n", m);
        //                break;
        //            }
        //        }
        //        return 0;
        //}

        image.gif

        image.gif编辑

        //int main()
        //{
        //    int x, i, j = 0, n, k = 0;
        //    for (x = 100; x < 1000; x++)
        //    {
        //        k = sqrt(x);
        //        for (i = 2; i <= k; i++)
        //            if (x % i == 0)
        //                break;
        //        if (i > k)
        //        {
        //            k = x;
        //            n = 0;
        //            while (k > 0)
        //            {
        //                n = n * 10 + k % 10;
        //                k /= 10;
        //            }
        //            if (x == n)
        //            {
        //                printf("%d\t", x);
        //                if (++j % 5 == 0)printf("\n");
        //            }
        //        }
        //    }
        //    return 0;
        //}

        image.gif

        image.gif编辑

        //int main()
        //{
        //  int x, t;
        //  printf("i\tpower\n");
        //  for (x = 100; x < 1000; x++)
        //  {
        //    t = x * x;
        //    while (t != 0)
        //    {
        //      if (x == t % 1000)
        //      {
        //        printf("%d\t%d\n", x, x * x);
        //        break;
        //      }
        //      else
        //        t /= 10;
        //    }
        //  }
        //  return 0;
        //}

        image.gif

        文字总结

        循环结构是结构化程序设计中的基本结构之一。循环结构在程序设计中的应用很普遍,几乎所有具有使用价值的应用程序中都包含着循环结构。循环结构的特点是可以完成有规律的需要,重复计算或处理的任务。虽然重复执行的语句相同,但与剧中一些变量的值在发生着变化,但达到循环次数或满足一定条件时,循环会结束。C语言提供了for语句、while语句和do while3种循环语句。

        相关文章
        |
        24天前
        |
        C语言
        C语言程序设计核心详解 第四章&&第五章 选择结构程序设计&&循环结构程序设计
        本章节介绍了C语言中的选择结构,包括关系表达式、逻辑表达式及其运算符的优先级,并通过示例详细解释了 `if` 语句的不同形式和 `switch` 语句的使用方法。此外,还概述了循环结构,包括 `while`、`do-while` 和 `for` 循环,并解释了 `break` 和 `continue` 控制语句的功能。最后,提供了两道例题以加深理解。
        |
        24天前
        |
        存储 C语言
        C语言程序设计核心详解 第十章:位运算和c语言文件操作详解_文件操作函数
        本文详细介绍了C语言中的位运算和文件操作。位运算包括按位与、或、异或、取反、左移和右移等六种运算符及其复合赋值运算符,每种运算符的功能和应用场景都有具体说明。文件操作部分则涵盖了文件的概念、分类、文件类型指针、文件的打开与关闭、读写操作及当前读写位置的调整等内容,提供了丰富的示例帮助理解。通过对本文的学习,读者可以全面掌握C语言中的位运算和文件处理技术。
        |
        24天前
        |
        存储 C语言
        C语言程序设计核心详解 第七章 函数和预编译命令
        本章介绍C语言中的函数定义与使用,以及预编译命令。主要内容包括函数的定义格式、调用方式和示例分析。C程序结构分为`main()`单框架或多子函数框架。函数不能嵌套定义但可互相调用。变量具有类型、作用范围和存储类别三种属性,其中作用范围分为局部和全局。预编译命令包括文件包含和宏定义,宏定义分为无参和带参两种形式。此外,还介绍了变量的存储类别及其特点。通过实例详细解析了函数调用过程及宏定义的应用。
        |
        24天前
        |
        C语言
        C语言程序设计核心详解 第三章:顺序结构,printf(),scanf()详解
        本章介绍顺序结构的基本框架及C语言的标准输入输出。程序从`main()`开始依次执行,框架包括输入、计算和输出三部分。重点讲解了`printf()`与`scanf()`函数:`printf()`用于格式化输出,支持多种占位符;`scanf()`用于格式化输入,需注意普通字符与占位符的区别。此外还介绍了`putchar()`和`getchar()`函数,分别用于输出和接收单个字符。
        |
        24天前
        |
        存储 人工智能 C语言
        C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
        本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
        |
        24天前
        |
        存储 人工智能 C语言
        C语言程序设计核心详解 第六章 数组_一维数组_二维数组_字符数组详解
        本章介绍了C语言中的数组概念及应用。数组是一种存储同一类型数据的线性结构,通过下标访问元素。一维数组定义需指定长度,如`int a[10]`,并遵循命名规则。数组元素初始化可使用 `{}`,多余初值补0,少则随机。二维数组扩展了维度,定义形式为`int a[3][4]`,按行优先顺序存储。字符数组用于存储字符串,初始化时需添加结束符`\0`。此外,介绍了字符串处理函数,如`strcat()`、`strcpy()`、`strcmp()` 和 `strlen()`,用于拼接、复制、比较和计算字符串长度。
        |
        24天前
        |
        存储 C语言
        C语言程序设计核心详解 第九章 结构体与链表概要详解
        本文档详细介绍了C语言中的结构体与链表。首先,讲解了结构体的定义、初始化及使用方法,并演示了如何通过不同方式定义结构体变量。接着,介绍了指向结构体的指针及其应用,包括结构体变量和结构体数组的指针操作。随后,概述了链表的概念与定义,解释了链表的基本操作如动态分配、插入和删除。最后,简述了共用体类型及其变量定义与引用方法。通过本文档,读者可以全面了解结构体与链表的基础知识及实际应用技巧。
        |
        21天前
        |
        存储 Serverless C语言
        【C语言基础考研向】11 gets函数与puts函数及str系列字符串操作函数
        本文介绍了C语言中的`gets`和`puts`函数,`gets`用于从标准输入读取字符串直至换行符,并自动添加字符串结束标志`\0`。`puts`则用于向标准输出打印字符串并自动换行。此外,文章还详细讲解了`str`系列字符串操作函数,包括统计字符串长度的`strlen`、复制字符串的`strcpy`、比较字符串的`strcmp`以及拼接字符串的`strcat`。通过示例代码展示了这些函数的具体应用及注意事项。
        |
        1月前
        |
        Linux C语言
        C语言 多进程编程(三)信号处理方式和自定义处理函数
        本文详细介绍了Linux系统中进程间通信的关键机制——信号。首先解释了信号作为一种异步通知机制的特点及其主要来源,接着列举了常见的信号类型及其定义。文章进一步探讨了信号的处理流程和Linux中处理信号的方式,包括忽略信号、捕捉信号以及执行默认操作。此外,通过具体示例演示了如何创建子进程并通过信号进行控制。最后,讲解了如何通过`signal`函数自定义信号处理函数,并提供了完整的示例代码,展示了父子进程之间通过信号进行通信的过程。
        |
        1月前
        |
        C语言
        C语言 字符串操作函数
        本文档详细介绍了多个常用的字符串操作函数,包括 `strlen`、`strcpy`、`strncpy`、`strcat`、`strncat`、`strcmp`、`strncpy`、`sprintf`、`itoa`、`strchr`、`strspn`、`strcspn`、`strstr` 和 `strtok`。每个函数均提供了语法说明、参数解释、返回值描述及示例代码。此外,还给出了部分函数的自实现版本,帮助读者深入理解其工作原理。通过这些函数,可以轻松地进行字符串长度计算、复制、连接、比较等操作。

        相关实验场景

        更多
        下一篇
        无影云桌面