首页 > 技术文章 > C博客作业01--分支、顺序结构

hekikimi 2019-10-07 20:29 原文

0.展示PTA总分


1.本章学习总结


1.1学习内容总结

1.1.1基本操作

  • 编译预处理命令的末尾不加分号
  • 读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数
  • 在程序中可以没有scanf,但是一定要有printf

1.1.2计算机的相关运算

  • bit是位,是指为0或者1;Byte是指字节,1B=8bit
  • int型变量占用4个字节,float型变量占用4个字节,double型变量占用8个字节,char型变量占用1个字节
  • “/” 两边都是整型,那么结果就是一个整型。“/” 如果有一边是小数,那么结果就是小数。“%”两边要求都是整数

1.1.3关于标识符

  • 合法的要求是由字母、数字、下划线组成,有其它元素就错了,并且第一个必须为字母或则是下划线,第一个为数字就错了

1.1.4输入与输出

  • scanf(" ",& ); printf(" ",);
  • scanf无精度控制,不能输入例如%.2f等

1.1.5常用数学函数

  • 调用数学函数,需加入#include<stdio.h>
sqrt(x)//求x的平方根                  
fabs(x)//求x的绝对值
pow( x,n)//求x的n次方           
exp(x)//求e的x次方
log(x)//计算lnx                           
round()//四舍五入

1.1.5选择结构的使用

  • if-else语句
    • else是与最接近的if且没有else的语句匹配
    • 每个执行的语句前都会有一个条件,这个条件可以是类似x==0的这种为一个确定值的表达式,也可以是x>10的这种为一个范围的表达式

  • switch语句
    • 根据choose的取值不同,选择不同的case语句执行;如果没有匹配任何case值,则执行默认语句
    • break表示退出此switch语句,如果没有break,则case语句会继续执行下去
switch(choose)
{    
    case 1:语句1;break;    
    case 2:语句2;break;    
    case 3:语句3;break;    
    default:默认语句;
}

1.1.6循环结构的使用

  • for循环

    • 定义初始值时,先判断是否满足条件,如果满足,则运行for 语句内的程序,周而复始,直到不满足条件。如果不满足,则退出for 循环
  • while循环

    • while 语句类似for,只是运行语句内程序后不再有其他运算,而是直接判断是否满足条件,若满足,则再次运行语句内程序,判断是否满足条件。直到不满足条件时,退出while 语句
  • do-while循环

    • do while ,与while 的区别是多了一个do ,效果就是运行到do while 时,不先判断是否满足条件,而是先运行一遍do while内的语句,再判断,剩下的就和while 相同了

1.2本章学习体会

  • 从之前刚打代码不熟练的时候会忘记scanf要加& 语句末尾要加分号,到现在用键盘打点东西都下意识的想要在末尾加个分号,我觉得学习C语言对我还是有一定影响力滴XD 之前设置变量都设置得很随便,经过老师再三的强调也努力改过来了,会在每次设置变量的时候百度一下比如分子分母的英文啥的。林丽老师的课堂互动形式能够让我们不再是被动地接受知识,也能够将课堂上学到的东西很快运用出来,我觉得很nice嘻嘻 虽然有时候我是做不出来
PTA题集 顺序结构 选择结构 总计
代码量 145 365 510

2.PTA实验作业


2.1PTA题目1

专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)×1.09 =(男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。下面就请你写个程序,为任意一位用户计算他/她的情侣的最佳身高。

2.1.1数据处理

1.数据表达

  • 定义题目中所给整型变量N为前来查询的用户数、i为for循环使用、双精度浮点型变量height为身高、correspond为相对应的身高、字符型变量sex为性别

2.数据处理

  • 依次输入N、height、sex
  • 通过判断sex的输入进入选择语句,用题目所给的公式计算出相对应的身高
  • 输出对应身高

2.1.2代码截图

2.1.3本题可扩展功能

2.1.4PTA提交列表及说明

  • 说明:最初的编译错误是不小心切换了输入法的中英文导致分号是用中文输入法输入的;我一开始的思路是再设置两个double型变量,一个存放男生的相应身高,一个存放女生的相应身高,不过这样在scanf的时候就会出现问题,后来查找资料发现设置一个相对应变量,即截图中的correspond,在if-else选择语句中直接利用数学公式便可。

2.2PTA题目2

猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。

2.2.1数据处理

1.数据表达

定义整型变量num为随机数、n为猜测的最大次数、figure为用户猜测的数字、finished为判断循环是否结束的变量,初始值为0、time为猜的次数,初始值为0

2.数据处理

  • 输入随机数num和猜测最大次数n,以及用户猜测的数字
  • 利用do-while循环以及if-else语句来比较用户猜测数字与随机数的大小关系
  • 输出结果

2.2.2代码截图

2.2.3本题可扩展功能

  • 该题的随机数是人为主动输入的,可以用rand( )%100让计算机随机产生一个数字,这样趣味性更强

2.2.4PTA提交列表及说明

  • 说明:一开始看到题有点懵不知道要怎么入手,只会一次猜中和直接退出,后来查阅资料发现要再定义一个变量来判断循环是否结束,然后又粗心把while==0打成while=0,就又错了:(

2.3PTA题目3

2.3.1数据处理

1.数据表达

定义双精度浮点型变量eps为循环终止条件判断,初始值为0.00001、x为题目所给实数、item为单项值,初始值为1.0、sum为和的值,初始值为1.0、定义整型变量i为所除分母,初始值为1

2.数据处理

  • 输入变量x
  • 利用do-while循环算出每一项item的值,再用sum=sum+item计算出总和
  • 输出sum

2.3.2代码截图

2.3.3本题可扩展功能

x题目所给的范围是[0,5],当x超出题目所给范围可再设置一个语句输出“error”
也可改用while循环

2.3.4PTA提交列表及说明

  • 说明:一开始我用while循环语句并加上数学函数来试着解决问题,发现我的结果输出不对,后来发现是我的计算公式错误,改正过来就解决啦

3.阅读代码


ACM

  • 题目如下

  • 题目大意
    就是高中常做的那种让火柴人跳两跳然后能跳到B点并且不会撞到building2的题:D

  • 题解如下

  • 整体的解题思路:利用两个公式求交点,判断交点的横坐标位置x0是否在building1和building2之间,再继续判断如果在1 2之间是否会撞上building2

  • 代码优点:

    • while循环里面加入scanf直接输入多组数据并进入循环,简洁方便
    • 定义了bool型变量,具有YES值和NO值,可用于逻辑表达式,也就是“或”“与”“非”之类的逻辑运算和大于小于之类的关系运算
    • if嵌套if、while嵌套if,让阅读清楚明了
    • put输出字符串
    • 运算思路清晰,对题意把握十分准确

推荐阅读