zoukankan      html  css  js  c++  java
  • C博客作业02--循环结构

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

    0.展示PTA总分

    1.本章学习总结

    1.1 for循环语法

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

    注意事项:

    *表达式1:通常为循环变量赋初值。
    *表达式2:循环条件,判断是否继续执行循环。
    *表达式3:更新循环变量的值。
    *分号,用来分隔三个表达式,不可省略!for(;;)是死循环。
    *适用于固定次数的循环。
    *循环条件缺少时或循环变量不更新都会造成死循环。
    eg.
    循环输入6个月的工资数,计算半年内的平均工资。

    int i;
    double salary;//工资
    double TotalSalary = 0;//6个月的总工资
    double AvgSalary;//6个月的平均工资
    for(i = 0;i < 6; i++)
    {
      printf("请输入第%d个月的工资:",i + 1);
      scanf("%lf",&salary);
      TotalSalary += salary;//累加
    }
      AvgSalary = TotalSalary / 6;//计算平均工资
    

    1.2 while、do while循环语法

    1.2.1 while循环

    while(表达式)
    {
        循环体语句;
    }
    

    注意事项:

    *适用于未知次数的循环
    *当循环体语句只是一条语句时,表达式可以是任意合法的语句。

    1.2.2 do while循环

    do{
       循环体语句
    }while (表达式);
    

    注意事项:

    *特点:先执行,再判断。先执行一遍循环操作,符合条件,循环继续执行,否则循环退出。

    int a =1,b = 10;
    //进入循环体
    do{
      b -= a;//b=10-1=9
      a++;//a=2
    }while(b--<0);//b=9>0,循环条件为假,结束循环;9--
    //执行循环语句后b的值为8
    

    1.3 跳出循环相关语句breakcontinue

    1.3.1 break语句

    作用:跳出循环,执行循环之后的语句。


    eg.

      //循环输入玩家年龄,如果年龄为负停止输入,提示输入错误
      int age;//输入玩家年龄
      for(;;)
      {
         printf("请输入玩家年龄:");
         scanf("%d",&age);
         //判断
         if(age<0)
           {
              printf("年龄不能为负数!程序强制退出!
    ");
              break;
           }
       }
    

    1.3.2 continue语句

    作用:跳过本次循环,继续下次循环!

    eg.

    //循环输入5个玩家的年龄,统计年龄为负的录入次数
    int age;//年龄
    int i;//循环变量
    int count = 0;//计数器变量
    for(i = 0;i < 5;i++)
    {
     printf("请输入玩家年龄:");
     scanf("%d",&age);
     if(age >= 0)//跳过正确的情况
           continue;
     count++;//输入错误则计数器+1
    }
    printf("输入年龄为负数的次数是:%d
    ",count);
    

    continue语句和break语句的区别:

    1.break是结束循环,而continue只是跳过后面语句继续循环。
    2.break除了可以中止循环外,还用于switch语句,而continue只能用于循环。

    1.4 循环嵌套

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

    eg.

    // 打印九九口诀表
    #include<stdio.h>
    
    int main()
    
    {
       int Row, Column, input;// Row是行 Column是列 input是输入的数据
       scanf("%d", &input);
    
       for (Row = 1; Row <= input; Row++)
       {
           for (Column = 1; Column <= Row; Column++)
               printf("%d*%d=%-4d", Column, Row, Row * Column);
    
               printf("
    ");
       }
       return 0;
    }
    

    2 编程技巧总结

    2.1 求交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和

    #include <stdio.h>
    int main()
    {
       int i,n;//定义循环变量,循环次数
    
       int flag;//利用flag实现符号的交换
    
       double sum;
       scanf("%d", &n);
       flag = 1;
       sum = 0;
       for (i = 1; i <= n; i++)
       {
       	sum = sum + flag*i * 1.0 / (2 * i - 1);
       	flag = -flag;//交换符号
       }
       printf("%.3f", sum);
       return 0;
    }
    

    2.2 字符转数字

    char ch;
    scanf("%c",&ch);
    printf("%d",ch - '0');
    

    2.3.1 大写字母转小写

    ch = ch - 'a' + 'A';
    

    2.3.2 小写字母转大写

    ch = ch - 'A' + 'a';
    

    2.4 图形打印:菱形图案

    代码示例:

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

    总结:

    找到外循环控制行数与内循环控制空格数、内循环控制“*”个数的关系,用for循环解决。

    2.5 数字逆序问题

    while(a>0)
    {
     b=b*10+a%10;
     a=a/10;
    }
    

    3.PTA实验作业

    3.1 数列求和问题

    3.1.1 伪代码思路

    int 循环变量为i,循环次数为n;
    int 每项的值为x,累加总和为sum,每项分母为m;
    for (进入循环)
    {
     //判断每项的符号
     if(分子为偶数,即i为偶数)
       {x为负值}
     else(分子为奇数,即i为奇数)
       {x为正值}
     进行累加;
     m的值递增+2;
    }
     输出sum;
    

    3.1.2 代码截图

    3.1.3 PTA提交列表及说明

    答案正确,未出现调试错误。

    3.2 图形打印问题:菱形图案

    3.2.1 数据处理

    3.2.2 代码截图

    3.2.3 PTA提交列表及其说明

    格式错误:

    第一次提交时,未注意到题目给定的要求“第一行图形符号前面有5个空格”,搞错了i与k之间的关系,重新思考后,得出k=|4-i|+2,重新提交,答案正确。

    3.3 学习造printf调试代码——龟兔赛跑

    3.3.1 单步调试截图


    ·循环内自己设计printf语句输出变量,直观了解每一次循环的变量值。

    3.3.2 代码截图


    3.3.3 PTA提交列表及其说明

    第一次提交,没注意输出格式,改正后,答案正确。

  • 相关阅读:
    零基础入门学习python--第一章
    mount: no medium found on /dev/sr0 找不到介质
    linux中shell变量$#,$@,$0,$1,$2的含义解释
    ospf多区域实例配置
    Linux查看cpu信息
    ethtool查看网卡以及修改网卡配置
    circusctl命令在ubuntu 上执行,卡住的现象处理。
    ubuntu 16.04.1 LTS zabbix-agent安装
    ubuntu 16.04.1 LTS 初始化
    Ubuntu开机启动的方式
  • 原文地址:https://www.cnblogs.com/SONGminusone/p/14018827.html
Copyright © 2011-2022 走看看