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

    0.展示PTA总分


    1.本章学习总结

    1.1学习内容总结

    (1)数据类型及其范围

    整型 int 取值范围:-2147483648~+2147483648
    短整型 short 取值范围:-32768~+32768
    长整型 long 取值范围:-2147483648~+2147483648
    字符型 char 取值范围:-128~+127
    单精度浮点型 float 取值范围:-/+3.4e38
    双精度浮点型 double 取值范围:-/+1.7e308
    --其中float和double,在没有特殊要求下,用double即可,若有字节要求,则要选用float。

    (2)格式化输入与输出

    1、printf()用于格式化输出,格式控制字符串用双引号括起来。
    2、scanf()用于格式化输入,需要特别注意的是:在需要输入的变量前一定要加上“&”进行取地址运算,否则会出现变量无法读入的情况。(萌新的我经常在这地方出错)
    3、getchar()用于字符输入,设ch是字符型变量,该函数一般调用格式为“ch = getchar( );”功能是从键盘输入一个字符,并赋值给变量ch,但是该函数只能读入一个字符。
    4、putchar()用于字符输出,设ch是字符型变量,该函数一般调用格式为“getchar(输出参数);”功能是输出输出参数的字符型变量或常量,该函数只能输出一个字符。

    (3)if-else语句

    if-else的基本结构如下:

    if()
    {
    
    }
    else
    {
    }
    

    if-else语句中我认为重要且经常犯错的几点:
    1、if()后不用加分号;,就像#include<stdio.h>和int main()一样。
    2、虽然说单个语句是没有严格要求用大括号,但为了格式一致以及代码的整洁,我们还是都要加大括号。
    3、else后不用加小括号,而else if后面要加。
    4、else是对最近的if进行否定,这在嵌套式结构中容易出错。

    (4)for循环语句

    for循环的基本结构如下:

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

    for语句的执行流程为:先计算表达式1(计算且只计算1次),再判断表达式2,若值为“真”,则执行循环体语句,并接着计算表达式3,然后继续循环;
    若值为“假”,则结束循环,继续执行for的下一条语句。

    (5)switch语句

    switch语句的基本结构如下:

    switch(表达式)
    {
    case常量表达式1:语句段1;
    break;
    case常量表达式2:语句段2;
    break;
    ...
    case常量表达式n:语句段n;
    break;
    default:语句段n+1;
    break;
    }
    

    switch语句可以处理多分支选择问题。在使用switch语句时,有几点要特别注意:
    1、case后面必须是常量表达式。
    2、若无break,则会一直执行下去。
    3、default后不用再加(表达式),这一点与else类似。
    4、可以利用上述第二点的特点来巧妙解答一些问题,即不用每个case后都加break,来得到期望的答案,但是一定要有default,否则什么都不执行。

    (6)关系与逻辑运算符

    (7)常见的数学函数

    1、平方根函数sqrt(x),如sqrt(4.0)的值为2.0。
    2、绝对值函数fabs(x),如fabs(-3.56)的值为3.56。
    3、幂函数pow(x,n),如pow(1.1,2)的值为1.21。
    4、-指数函数exp(x),如exp(2.3)的值为9.974182。
    5、以e为底的对数函数log(x),如log(123.45)的值为4.815836。
    **调用数学函数要在加#include <math.h>

    1.2本章学习体会

    1、刚开始时,我只在网上看翁恺老师的课,觉得听起来也挺简单的,但其实我自己连VS都还不怎么会用,当第一份PTA作业下来时我就蒙圈了,不知道从何下手,一开始,提交的作业都是编译错误(因为一开始觉得在网页上写比较方便,后面才在VS上写,这样容易找出自己的编译错误点),在舍友们的耐心帮助下,才一点点熟悉怎么敲代码。事实证明,学编程还是得亲手实践才行。其次,PTA上我一般情况下只会做一些偏简单的题,一些难题我有时候都不知道用什么语法去做,或者是太复杂思路很乱,(如“于明看到日期又哭了”一题)我觉得在接下来的阶段得搞懂每一道题,不能马马虎虎算出答案就过了,因为我发现再难的代码也是由一部分一部分小的代码组成的,打好基础才是关键。
    2、这两周的代码量518行。

    2.PTA实验作业

    2.1三个数由小到大输出

    2.1.1数据处理:

    a,b,c分别表示三个数字,依题意三个数字都是整型。
    (刚做这题时,我没有想到用t来交换a,b,c的数字来做,当时想到的最简单的方法是3个数字排大小就只有6中情况,一一列举就可以完成这道题了。)
    

    2.1.2代码截图:

    2.1.3本题可拓展内容:

    即我上述所讲的一般解法:

    这个简单的方法用起来不仅节省了大量代码,而且思路清晰。

    2.1.4PTA提交列表及说明:


    前两次提交编译错误一次是scanf语句忘了加&符号,还有一次是scanf那一句后面忘了加分号;
    最后一次也就是用最笨的方法完成了这道题。后面了解了舍友的代码才知道一般的解法,自己也在VS上试了下。

    2.2判断一个三位数是否为水仙花数

    2.2.1数据处理:

    分别用hundred、ten、digit表示百位、十位、个位,且其数据类型都是int。
    用int1表示需要输入的整数N,由题意,其数据类型也是int。
    

    2.2.2代码截图:

    2.2.3本题可拓展内容:

    求十位数时有两种方法:
    一种就是上面写的ten =int1/10%10
    还有一种就是ten=int1%100/10
    

    2.2.4PTA提交列表及说明:


    前两次提交都是因为没有发现低18行代码中等于时”==“而不是”=“,看了很久才看出这个错误。

    2.3计算天数

    2.3.1数据处理:

    用year、month、day分别表示年、月、日。 由题意,数据类型都是int。
    

    2.3.2代码截图:


    2.3.3本题可拓展内容:


    这是我舍友写的,我觉得这个代码写的非常巧妙。巧妙地利用了switch语句中不写break就会一直进行下去的特点,比起我的代码,可以减少计算量。
    十分值得我的学习。

    2.3.4PTA提交列表及说明:


    这题提交了两次都是答案错误是因为我把中间某个月的天数算错了,应该是30结果算成31,后面发现加起来不是365天就逐月检查最后发现了错误。

    3.阅读代码


    代码功能:将输入的24小时制的时间转化为12小时制的时间输出

    优点:1、用while循环结构和getchar()巧妙解决了题意中需要输入多个数据的问题。循环结构的题目中会经常用到,值得我的学习。
    2、用到了strcpy函数。strcpy是一种C语言的标准库函数,strcpy把含有'\0'结束符的字符串复制到另一个地址空间,返回值的类型为char*。如此使用既简化了代码,又使界面更加整洁,避免了不必要的重复,值得我的学习。

  • 相关阅读:
    nginx last break等
    Jmeter
    nginx location规则
    解决性能瓶颈的一些思路
    spring 一些总结
    idea快捷键
    可读的jvm gc日志时间
    redis 搭建集群
    windows下使用Python来修改文件时间戳
    Python获得文件时间戳
  • 原文地址:https://www.cnblogs.com/yeanxxx/p/11630513.html
Copyright © 2011-2022 走看看