zoukankan      html  css  js  c++  java
  • C博客作业01--分支、顺序结构

    这个作业属于哪个班级 C语言--网络2011/2012
    这个作业的地址 C博客作业01--分支、顺序结构
    这个作业的目标 初步认识C语法,掌握数据表达、printf、scanf语法及分支结构内容

    0.展示PTA总分

    顺序结构
    分支结构


    1.本章学习总结

    1.1 学习内容总结

    随机函数的使用

    #include <stdio.h>
    #include <stdlib.h> //调用**rand**和**srand**函数的库
    #include <time.h>   //调用**time**函数的库
    int main()
    {
    	int num;
    	
    	srand(time(0)); //其中0可以改为NULL,但注意要大写。并且若不输入0,而输入 1、1.0的整型或浮点型数值时,会发生形参不兼容而编译失败。
    	num = rand();   
    	printf("%d", num);
    	
    	return 0;
    }
    
    • rand函数
      • 系统在调用rand函数,之前会自动调用srand函数,且默认为srand(1)
      • rand函数是一个取随机数的函数,但是如果用户未在使用rand前调用srand,则随机数在第一次之后都是一样的,不会改变。
    • srand函数
      • srand 函数与 rand 随机数取值有关,如果直接使用rand函数,则默认为srand(1)。须在使用rand函数前,调用srand函数,改变srand(seed)括号内seed的值,rand生成随机数也随之改变。
    • time函数
      • time函数,表示返回从1970年1月1日00:00:00到当前所经过的时间(单位秒)。

    宽度限定词

          printf("%6d",num1);      //%md    指定了输出整型数据的输出宽度为m (包括符号位)
          printf("%6.1f",num2);    //%m.nf  指定了输出浮点数据是保留n位小数,且输出宽度为m (包括符号位和小数位)
    

    浮点误差

    • 原因:计算机内的数字用二进制储存,十进制转化为二进制时,有些数值会出现无限循环。而计算器存储的位数有限,将多出的数据舍去后,将会产生误差。
    • 后果:对于浮点数的相等判断,一般不用 == 符号,因为可能取不到结果,发生死循环。
    • 解决:一般使用相减的绝对值小于某个很小的值,即判断为相等
          fabs(x - x0) <= 0.000001
    

    scanf()函数与字符

    例一

          scanf("%lf%c%lf",&valuel,&op,&value2);
    
    • 例子中用scanf 输入表达式,操作数和运算符中间不能出现空格(' '),否则空格将被当作字符读入。

    例二

          scanf("%d",&num1);
          scanf("%c",&ch);
    
    • 假设输入 12 和 yu,则num1 = 12,然而 ch = ' '。
    • 原因:在输入num1后,键入的回车被读入ch,因而ch未接收到 'yu'
    • 解决方法
          scanf("%d",&num1);
          getchar();           //利用getchar吃掉回车,以便可以顺利ch预期的值
          scanf("%c",&ch);
    

    getchar 函数

          ch = getchar();      //从键盘输入一个字符,并赋值给ch
    
    • 调用函数getchar(),可以从键盘输入一个字符。
    • getchar()函数,可以读入一个字符,而不将其赋给变量
    • getchar()函数,一次仅能读入一个字符,如果需要多个字符,则多次调用getchar,一般使用循环语句。
          char ch;
          for ( i = 0; i < 10 ; i++ )
    {
                ch = getchar; 
    }
    

    putchar 函数

          putchar(ch);         //putchar(输出参数);
    
    • 注意:putchar()函数,括号内的输出参数不需要引号包裹

    逻辑非 !

          num1 = !12;
          num2 = !!12;
    
    • 则num1的值为0,num2的值为1。

    1.2 编程技巧总结

    • 取一个数的个位
          onesPlace = num % 10;
    
    • 分离一个三位数的个、十、百位
          onesPlace = num % 10;
          tensPlace = num / 10 % 10;
          hundredsPlace = num / 100;
    
    • 交换数值 ——> 求出中间数
          temp = num1; 
          num1 = num2;
          num2 = temp;
    
    • 利用getchar清理' '
          scanf("%d",&num1);
          for( i = 0 ; i < N; i++)
          {
                getchar();      //吃掉scanf留下的'
    '
                scanf("%c",&ch);
          }
    

    1.3 本章学习体会

    • 学习感受:自己处理问题的效率还不够,未能流利地完成手头上的事情。
    • 代码量:14题


    2.PTA实验作业

    2.1 前天是哪天

    2.1.1 数据处理

    • 数据表达:
      • 变量:年份(year),月份(month),日(day)
    • 数据处理:
      1. 输入年、月、日
      2. 判断日是否大于3,若大于3则不需要改变月份,直接输出 年、月、日-2
      3. 若日期不大于3,则进行对年份的判断。
      4. 定义一个返回类型为整型的函数,判断年份,若是闰年,则返回1。反之,返回0
      5. 接下来将输入的月份分为4组。
      • 1月:需要跨年
      • 3月:跨月,因跨至2月特殊,需要按是否闰年分类
      • 5、7、10、12月:跨月,前一个月为30天
      • 2、4、6、8、9、11月:跨越,前一个月为31天
    2.1.2 代码截图


    2.1.3 PTA提交列表及说明

    2.2单词长度

    2.2.1 数据处理

    • 数据表达:
      • 变量:输入的字符( char word = 1)、计数变量(int count = 0)、旗帜(int flag = 1)
    • 数据处理:
      1. 建立while循环,当word = '.'时跳出循坏
      2. 在该循环内在嵌入一个do-while循环,当word != ' ' && word != '.'时执行循环体。
      3. 在do-while循环内输入word的值,并接下来在该循环中进行判断,如果word != ' ' && word != '.'则count++
      4. 在跳出do-while循环后,判断count不为零时,再判断 flag ,若flag = 1 则输出空格加上count,并将flag = 0;count = 0;
      5. 若flag为0,则输出count,并将count = 0

    2.2.2 代码截图

    2.3.3 PTA提交列表及说明


    2.3出租车计价

    2.3.1 单步调试截图

    2.3.2 代码截图


    2.3.3 PTA提交列表及说明


  • 相关阅读:
    阿里云RDS的mysql数据库连接
    DRF框架400错误信息处理(视图集)
    关于百度Tongji Api的文档补充
    Python几种创建list的方法的效率对比
    手把手教你使用python复杂一点点的装饰器
    Python爬虫常用模块,BeautifulSoup笔记
    LSSS 构造过程
    微信网站应用扫码登陆
    分享一个自用的 Inno Setup 软件打包脚本
    彻底解决:请求被中止: 未能创建 SSL/TLS 安全通道
  • 原文地址:https://www.cnblogs.com/welcome-to-tomorrow/p/13939612.html
Copyright © 2011-2022 走看看