• C博客作业01--分支、顺序结构


    0.展示PTA总分


    1.本章学习总结

    1.1 学习内容总结

    (1) 输入输出函数:

    • printf()函数:输出“ ”里面的内容,如果有%d或者%f则输出%d或者%f对应的内容;%d对应的数据是整型,%f对应的是浮点型,输出的时候要从左到右一 一对应;同时%d或%f可以加宽度限制词,制定数据的输出宽度,比如%4d,则这个数据的输出宽度就是4;%f也是可以如此,而且因为输出的是浮点型,所以%f还可以控制小数点位数,比如%.2f就是保留到小数点后两位,其余的会四舍五入舍去;此外还学到了%c对应的数据是字符型。
    • scanf()函数:输入数据读入变量里面;比如scanf("%d",&a),就是把我们输入的一个整型数据读入a这个变量里面;这里%d对应的是整型,还有%lf对应的数据是双精度浮点型,%f对应的数据是单精度浮点型;%c对应的是字符型。如果有多个数据的话,那么它们的类型、个数、位置要一 一对应
    • getchar()函数:用法是从键盘输入一个字符,并赋值给一个字符型变量。
    • putchar()函数:用法是输出一个字符型常量或者变量。

    (2) 数据类型

    • 上文我们已经讲到了几个数据类型,那么它们是要怎么来的呢?它们是要定义来的,在一个程序中,所有的变量、标识符都是要定义的;目前我学到了几个C语言数据类型:int(整型);char(字符型);float(单精度浮点型)和double(双精度浮点型)。比如 int a = 3;就是定义一个整型变量a,这里赋给它的值是3。
    • 此外我了解到float和double都是浮点型(实型),用于存放浮点数(实数),但它们有区别,区别在于double型数据占用空间更大,精度更高,取值范围更大;所以如果没有题目要求,一般我会用double。

    (3)选择结构:

    • if else语句,也就是二分支结构,先来看一下它的一般形式:
    if(表达式)
        {
            语句1
        }
    else
        {
            语句2
        }
    

    这里如果表达式的值为“1”(真)(非0的数其实也可以),则执行语句1,如果表达式的值为“0”(假),则执行语句2,这里的话其实else可以省略,这样的话如果表达式的值是“0”,则什么也不做,继续执行下面的语句。

    • if else if语句:其实就是if else语句的升级版,可以有更多的分支,更多种的判断情况,更多路的选择,其一般形式为:
    if(表达式1)
        {
            语句1;
        }
        else if(表达式2)
        {
            语句2;
        }
        ...
        else
        {
            语句n;
        }
    

    用图来理解比较简单:

    • switch语句:switch语句可以处理多分支选择问题,如果在switch语句的每个语句段中都使用break语句,这是switch语句的主要使用方法,一般形式为:
    switch(表达式)
        {
            case 常量表达式1:语句段1;break;
            case 常量表达式2:语句段2;break;
            case 常量表达式3:语句段3;break;
                                ......
            case 常量表达式n:语句段n;break;
            default:语句段n+1;break;
    

    switch语句的执行流程如下图,首先求解表达式,如果表达式的值与某个常量表达式的值相等,则执行该常量表达式后的相应语句段,如果表达式的值与任何一个常量表达式的值都不相等,则执行default后面的语句段,最后执行break语句,跳出switch语句。这里需要注意的是“常量表达式”必须是一个常量。

    (4)运算优先级:

    (5)常用的数学函数:

    1.平方根函数sqrt(x):计算x的平方根;
    2.绝对值函数fabs(x):计算x的绝对值;
    3.幂函数pow(x,n):计算x的n次方;
    4.指数函数exp(x):计算e的x次方;
    5.对数函数log(x):计算ln(x)。

    1.2本章学习体会

    • 学习感受:刚学习C语言时,似对世界说:Hello,World!如雨后春笋般在C语言的学习中疯长。上课学习效率不错,当把知识运用到题目完成解题后会很有成就感。在为pta题目努力思考后,我总是会想到老师在旁边的叨语:“C语言不可能看会、听会,只能练会!”这也成了我成为C语言学习者的第一柱里程碑。我对自己充满了信心。
    • 代码量:1146行(仅计算pta正确的代码量)

    2.PTA实验作业

    2.1jmu-c-二进制转10进制

    2.1.1数据处理

    • 数据表达:
      char num;把我们要输入的二进制位数转化成许多字符1或0的合并。(因为后来我发现我们数据的输入超过了int的整型范围)
      int digit;digit就是二进制位对应的十进制位,是整型。
    • 数据处理:
      scanf("%c", &num);
      if (num != '1' && num != '0' && num != ' ')
      else if (num == '1')
      else if (num == '0')
      digit = digit * 2 + 0;

    2.1.2代码截图

    2.1.3 本题可扩展功能:

    初看 char num;scanf("%c", &num);好像很奇怪,其实这样是将输入的一串数字转化为一个一个的字符,再一 一用for循环考虑每一位数,这样输入的数字就可以超过int整型范围,又可以每一个数都顾及到,比如输入1111111111111111(16个1),在char的定义下,就可以变成16个‘1’,最后运算各个数字,就可以得到digit。

    2.1.4 PTA提交列表及说明:

    • 1.PTA测试点“多个1”其实已经超过了int整型范围(百思不得其解,错了好几次,后来询问别人才得知),我用int num;bit=num%10,(拿num的个位数)num=num/10(把num的个位去掉一位)去计算就错了。
    • 2.把int改用double以后发现%不能用了,需要寻找新方法新思路。于是就想到了把一串数字变成一串字符的思路。

    2.2 7-11 简单计算器:

    2.2.1数据处理

    • 数据表达:
      1.int num;//输入的数值(除了第一个数值给digit了);
      2.int digit;//循环结果;
      3.char op;//定义运算符号;
      4.int flag = 0;判断输入的正误;flag=1则输入错误;
    • 数据处理::digit = digit + num;
      digit = digit - num;
      digit = digit * num;
      flag = 1;
      digit = digit / num;

    2.2.2代码截图


    2.2.3本题可扩展功能:

    考虑有括号运算()可以扩展此功能;
    思路就是用if判断op是否是‘(’,是就进入另一个for循环里面在里面运算,直到遇到‘)’则结束运算,同时晚一点判断op是否是+-*/。

    2.2.4 PTA提交列表及说明

    • 1.一开始把判断op是否是‘=’的判断句放着输入数字的语句的后面,使得 被读进op里面变成非法运算符。
    • 2.除数为0的情况没有考虑,一看题目有思路就疏忽大意,原来题目已经把除数为0的情况给考虑了。
    • 3.非法运算符的情况没有考虑

    2.3 7-12 任务06-02-01 于龙遇见日期,又哭了!

    2.3.1数据处理

    • 数据表达:
      int num1, num2, num3;输入3个正整数
      char char1, char2;2个无关字符
      int year, month, day;年,月,日
      int optionalDay = 0;某一月的最后一天
      int leapyear = 0;//判断闰年
      int flag = 0;//判断数据正误
    • 数据处理:(看图片就好了,于龙又哭了)

    2.3.2代码截图
















    2.3.3本题可扩展可能:

    算了吧,脑阔疼。

    2.3.4PTA提交列表及说明:

    • 1、毫无思路,头脑空白。
    • 2、知道闰年并逐一判断,应该有哪里疏漏了,于是引进leapyear判断。
    • 3、只考虑输入值的大小是不够的,还要考虑月份。
    • 4、月份与日份的交换。

    3.阅读代码

    找一份优秀代码,理解代码功能,并讲出你所选代码优点及可以学习地方。

  • 相关阅读:
    如何理解显示卡的驱动模块(DDX,DRM,DRI,XVMC)
    基于Linux的嵌入式文件系统构建与设计
    Windows系统——后缀为.zip.00X的zip分卷解压
    windows系统——U 盘损坏修复
    windows系统——常用命令
    U盘用FAT32还是用NTFS格式好
    linux系统程序设计教程
    Posix线程编程指南
    编程风格——UNIX 高手的 10 个习惯
    linux压缩文件——解压方法
  • 原文地址:https://www.cnblogs.com/zhangpucyll/p/11630405.html
Copyright © 2020-2023  润新知