C博客作业02--循环结构

这个作业属于哪个班级 C语言--网络2011/2012
这个作业的地址 C博客作业02--循环结构
这个作业的目标 学习循环结构内容,包括for循环、while循环、循环嵌套
姓名 余智康

0. 展示PTA总分


1. 本章学习总结

1.1 for循环

  • 语法:
      for( /*表达式1*/int i = 0; /*表达式2*/ i <= 9; /*表达式3*/ i++;)
      {
            /*循环体*/sum += i;
      }
  • 备注:
    • 一轮循环中表达式1只执行一次
    • 执行顺序: 表达式1 ——> 表达式2. ——> 循环体 ——> 表达式3 ——> 表达式2. ——> 循环体 ——> 表达式3 ——> 表达式2. ...//直到表达式2返回值为0时,结束循环。
    • 适用于循环的次数确定的类型

1.2 while、do while循环

1.2.1 while循环

  • 语法:
      while(/*表达式1,循环执行的条件*/ i <= 9)
      {
            /*循环体*/ sum += i;
      }

1.2.2 do - while循环

  • 语法:
      do
      {
            sum += i; /*循环体*/
      }while(/*循环执行的条件*/);
  • 备注: do - while循环无论条件是否满足都会执行一次,while和for循环当条件满足时才执行循环体。

1.3 跳出循环相关语句breakcontinue

1.3.1 break

      for(int i = 1; i <= 9; i++)
      {
            if( i % 2 == 0)
            {
                  break;
             }
      }
      printf("i = %d",i);
  • break: 结束本轮循环,不再执行该循环。如例题中输出 i = 2

1.3.2 continue

      for(int i = 1; i <= 9; i++)
      {
            if( i % 2 == 0)
            {
                  continue;
                  i = 666;
            }
      }
      printf("i = %d",i);
  • continue: 跳过循环中continue接下来的语句,开始下一次循环,并没有结束本轮的循环。如例题中输出 i = 10 而不是 i = 666

1.4 循环嵌套

  • 例子
      for(int i = 1 ; i <= 9 ; i++)
      {
            for(int j = 1 ; j <= 9; j++)
            {
                  sum += j;
            }
      }
  • 注意事项:
    • 循环执行一次循环执行一轮
    • 循环要注意变量是否有重置
    • 外循环和内循环的循环变量要注意,避免循环变量相同导致循环混乱


2. 编程技巧总结

图形打印

----------菱形打印(实心与空心)

  • (以7行*的菱形为例)
    • 外循环控制行数 :i
    • 内循环控制空格数 :k
    • 内循环控制“*”个数:j
    • 找出k跟i的关系,j跟i的关系
    • k = | 4 - i |
    • j = 7-2*|4-i|
  • (以7行上下字母对称的,首个字母为'A'菱形为例)
    • 大致与7行*的菱形类似,但用字母代替了
    • 判断字母的变化与i的关系
    • ch = 64 + 4 -|4-i|
  • (以7行*的空心菱形为例)
    • 打*的时候做一个判断
    • 即在第一个和最后一个的时候打出“*”,其它时候打出“ ”
       if(j == 1 || j == 7 - 2 *fabs(4-i))
      {
            printf("*");
      }
      else
      {
            printf(" ");
      }

----------沙漏的打印

  • 以星号沙漏为例
    • 确定行数和星号的关系,以及剩余的星号数量
    • 判断内循环空格数(k)与行数(i)的关系
    • 判断内循环星号个数(j)与行数(i)的关系
//行数与星号的判断
      scanf("%d", &num);//输入了星号数目
      num = num - 1; 减去最中间一行的一个星号
      while(num >= 2 * ( line + 2) )
      {
            line += 2;
            num = num - 2 * line ;
      }

四则运算

  • 生成随机数
      number1 = rand();
      number2 = rand();
  • 生成随机运算符
      type = rand() % 4 + 1;
      switch(type)
      {
      case 1:
            op = '+';
            break;
      case 2:
            op = '-';
            break;
      case 3:
            op = '*';
            break;
      case 4:
            op = '/';
            break;
      }
  • 生成算式
      printf("%d %c %d = ?",number1,op,number2)

  • 数字逆序
    • 将数字的各个位数取出
    • 将数字逆序到另一个变量中
      int place[99];
      int upsideDown = 0;
      int number;
      
      scanf("%d",&number);

      for( int i = 0; number > 0; i++)
      {
            place[i] = number % 10;
            number = number / 10;
            upsideDown = upsideDown * 10 + place[i];
      }  

  • 自增运算符:运算结果使变量的值增1,但表达式的返回值不同
    * 前缀++i “++i”的表达式返回为 i+1 的值
    * 后缀i++ “i++”的表达式返回的值为 i 的值
  • 控制列数
    printf("%md,%-md,%m.nf",a,b,c)
    其中m为常量
    • %md 输出宽度为m列,数据实际位数小于m,则左端补空格
    • %-md 输出宽度m列,数据实际位数小于m,则右端补空格
    • %m.nf 输出宽度m列,包括小数点和符号位。小数保留n位
  • 循环输入时,不知道输入数据的个数,可以在最后引入特殊数值结束循环,如引入负数等
  • 数列求和
      sum = 0;
      for( int i = 0; i<=9; i++)
      {
            sum = sum + i;
      }


3. PTA实验作业

3.1 数列求和问题

3.1.1 流程图或伪代码介绍思路

伪代码:
定义双精度浮点型变量x为输入的值,即为e的x次幂;
定义双精度浮点型变量sum为数列的和;
定义双精度浮点型变量number为数列的每一项的数值,用于累加,也用于判断是否不大于0.00001,循环是否进行;
定义整型的k为x的次幂,也为分式的分母;
定义函数为fact,用于求阶乘
··
while (number >= 0.00001)
计算单独一项number的值,需调用阶乘函数fact
累加number并将值赋给sum,k自增
end while
输出sum
··
定义函数fact
定义变量fact用来暂时存储阶乘的值
定义变量x,为被求阶乘的数
for(fact = 1; x > 0; x--)
累乘x,并将值赋给fact
end for
返回fact的值
··

3.1.2 代码截图


3.1.3 PTA提交列表及说明


3.2 图形打印问题

3.2.1 数据处理

  • 循环外:
    • 定义char 类型变量 ch,用于储存字符
    • 定义char 类型变量 useless,用于储存输入时候间隔字符和高度的空格
    • 定义int 类型变量 height,用于储存图形的高度
  • 外循环:
    • 定义int 类型变量 i,用于外循环计数
    • 定义int 类型变量 blank,用于限制字符外面空格输出的数量
    • 定义int 类型变量 limit,用于限制内循环两个字符之间的空格输出的数量
  • 内循环:
    • 定义int 类型变量 j,用于内循环图形字符的外部的空格计数
    • 定义int 类型变量 intoBlank,用于内循环计数输出的两个字符之间的空格数

3.2.2 代码截图





3.2.3 PTA提交列表及说明



3.3 求n以内最大的k个素数以及它们的和

3.3.1 单步调试截图

3.3.1 printf调试截图

3.3.2 代码截图



3.3.3 PTA提交列表及说明



原文地址:https://www.cnblogs.com/welcome-to-tomorrow/p/14022158.html