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

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

0.展示PTA总分


1.本章学习总结

1.1 for循环语法

for (表达式1; 表达式2; 表达式3)
{
    语句;
}

or

for (循环变量赋初值; 循环条件; 循环变量增值)
{
    语句;
}
  • 在表达式1、表达式2和表达式3之间是用分号;隔开的。

  • for(表达式1;表达式2;表达式3)的后面不能加分号。

  • 从第二个语句中可以看出,“表达式1”只执行一次,循环是在“表达式2:循环条件”“表达式3:循环变量增值”和“内嵌语句”之间进行的。

1.2 while、do while循环语法

while:

while (表达式)
{
        语句;
}
  • 当表达式为真,则执行下面的语句;语句执行完之后再判断表达式是否为真,如果为真,再次执行下面的语句,直到表达式为假,跳出循环。

  • 循环条件成立时的话,while 循环会一直执行下去,成为死循环。

  • 循环条件不成立的话,while 循环就一次也不会执行。

do while:

do
{
    语句;
}
while (表达式);
  • do-while循环与while循环的不同在于:它会先执行“语句”,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while 循环至少要执行一次“语句”。

1.3 跳出循环相关语句breakcontinue

break:

  • break语句不仅可以跳出“循环体”,还可以跳出switch。但是break语句不能用于循环语句和switch语句之外的任何其他语句中。

  • break语句只能跳出一层循环。当有多层循环嵌套的时候,break只能跳出最里面的那一层循环,无法一次跳出所有循环(但是return可以)。

continue:

  • continue的作用为结束本次循环,即跳过循环体中下面尚未执行的语句,然后进行下一次是否执行循环的判定。

区别:

  • continue语句和break语句的区别是:continue 语句只结束本次循环,而不是终止整个循环。break 语句则是结束整个循环过程,不再判断执行循环的条件是否成立。而且,continue 只能在循环语句中使用,即只能在 for、while 和 do…while 中使用,除此之外continue不能在任何语句中使用(包括switch语句)。

1.4 循环嵌套

while和for循环实例:

while(条件表达式)
{
      for(循环变量赋初值; 循环条件; 循环变量增值)
      {
            循环体;
      }
}

要点:

  • if-else、while、do-while、for可以相互嵌套,就是一条语句里面还有另一条语句,例如 for 里面还有 for,while 里面还有 while,或者 for 里面有 while,while 里面有 if-else。

  • 外层for每次循环时,都必须等待内层for循环完毕才能进行下次循环。虽然i为变量,但是对于内层for来说,每次循环时它的值都是固定的。

学习体会:

这一周通过学习循环结构的知识,我对c语言的了解进一步加深,能读懂更多的的代码,也能够运用循环的知识。

但是对于本次的大作业,出现了许多平时没用过的代码,加上函数的学习还一知半解,我一时无从下手。

幸运的是,我在这几周的学习中,逐渐培养了计算机思维,解题的思路也更加清晰,我相信只要我巩固好基础知识点,完成这次的挑战不是问题。

2.编程技巧总结

数列求和问题

7-2 特殊a串数列求和

#include <stdio.h>
int main()
{
    int a, n;
    double item = 0;
    double sum = 0;
    scanf("%d %d", &a, &n);
    for (int i = 1; i <= n; i++) {
        item = item * 10 + a;
        sum += item;
    }

    printf("sum = %.lf
", sum);
    return 0;
}
  • 数列求和时要注意变量的类型,否则再运算时会出现字节溢出的现象,好几次调试失败都是因为没有注意变量类型。

  • 运算时输出变量要记得定义初值,累加sum初值为0,累乘sum初值为1。

  • 注意sum += item 等价为 sum = sum + item。(题目要求s,这里方便阅读用sum)

字符如何转数字、数字逆序问题

  • 字符如何转数字
m='1'-'0';//将字符'1'变数字1
  • 数字逆序问题
while(num>0)
{
      item=num%10;

      sum=sum*10+item;

      num=num/10;
}

图形打印问题

7-5 打印菱形图形 :

#include<stdio.h>
#include<math.h> 
int main()
{
    int i,j;
  for(i=0;i<7;i++)
  {
      if(i<=3)
      {
          for(j=0;j<5-i;j++)
            printf(" ");
          for(j=0;j<1+2*i;j++)
            printf("*");
      }
      if(i>3)
      {
          for(j=0;j<5-(6-i);j++)
            printf(" ");
          for(j=0;j<1+2*(6-i);j++)
            printf("*");
      }
      printf("
");
  }
    return 0;
}

根据行数判断输出“ ”或者“*”并用for循环一行一行输出,打印出菱形。

四则运算问题

int a = rand() %100 +1

产生1`100的一个随机整数

switch(a)
{
      case 1: op='+';
      case 2: op='-';
      case 2: op='*';
      case 2: op='/';
 }

选择不同的运算符,如果要随机产生运算符可以用rand产生1`4的随机整数来选择运算符(我用这样的思路去做大作业,但是没有成功)。

3.PTA实验作业

3.1 数列求和问题

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

通过for循环得到a、aa、aaa的值用item表示,最后用s += item;累加这些数据得到数列求和的结果

3.1.2 代码截图

3.1.3 PTA提交列表及说明

3.2 图形打印问题

3.2.1 数据处理

根据行数判断输出“ ”或者“*”并用for循环一行一行输出,打印出菱形。

3.2.2 代码截图

3.2.3 PTA提交列表及说明

3.3 自选一题,介绍printf调试如何检查错误

3.3.1 单步调试截图

我在单步调试时输入N为5,然后F11发现进行了5次循环最后输出,证明代码没有问题。

3.3.2 代码截图

3.3.3 PTA提交列表及说明

原文地址:https://www.cnblogs.com/llmnb/p/14017501.html