C博客作业00--顺序分支结构

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

0.展示PTA总分

1.本章学习总结

1.1学习内容总结

1).程序的基本内容

include <stdio.h>//编译预处理命令
int main()//定义主函数main()
{
       //语句

return 0;//结束运行,并返回
}

2).数据类型

数据类型 类型名 输入形式 输出形式 所占空间
整型 int %d %d 4字节
单精度浮点型(实型) float %f %f 4字节
双精度浮点型(实型) double %lf %f(%lf) 8字节
字符型 char %c %c 1字节

3).标识符(字母,数字和下划线组成)

  • 变量:使用驼峰命名法,要求见名知意;
    实例
  • scanf:输入语句
  • printf:输出语句

4).运算符(按照优先级)

前缀后缀:

表达式 运算 表达式的值
count++ 给count加一 count原来的值
++count 给count加一 count加一以后的值
count-- 给count减一 count原来的值
--count 给count减一 count减一以后的值

5)分支结构——if语句(单分支,双分支,多分支)

a:结构

if(表达式一)
{
 语句一;
}
else if(表达式二)
{
 语句二;
}
else if(表达式三)
···
···
···
else
{
语句n;
}

b:提示:

  • else是与最接近且没有与else匹配的if匹配;
  • 大括号要换行,缩进,对其;
  • 等号是==;

c:实例:

7-1 求中间数 (12分)题目详情
输入三个整数,找出介于最大和最小之间的那个数
输入格式:
3个整数以空格分开
输出格式:
输出介于最大和最小之间的数

6).分支结构-switch结构

a:结构

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

b:提示:

  • 有break与无break
    没有break的时候,只要有一个case匹配了,剩下的case语句都要执行
    有break的时候,则是直接跳出了switch语句,只执行那一个匹配的语句
  • switch语句case后面是常量,不可以是变量
  • 不能忘记大括号和分号(;)

c:实例

7-10 计算天数 (15分)题目详情
本题要求编写程序计算某年某月某日是该年中的第几天。
输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:
在一行输出日期是该年中的第几天。

7).随机函数

a:用法

  • 首先,需要写出表头函数 #include <stdlib.h>
  • 其次,使用rand()随机生成随机数
    以上没有随机种子,会使每次生成的随机数相同,
    所以,如果需要每次生成随机数不相同,需要编写随机种子;
  • 之后,需要写出表头 #include <time.h>
  • 再编写随机种子 srand(time(0));
    b:实例

    c:提示
  • 如果需要随机数在0-100,a=rand()%100;
  • 如果需要随机数在10-100,a=10+rand()%90;
  • 如果需要随机数在x-n+x,a=x+rand()%n;

1.2编程技巧总结

1).字符输入:getchar();字符输出:putchar();

2).整数的分解

  • 得到一个整数的个位数————n%10;
  • 去掉一个整数的个位数————n/0;
  • 对一个数除以10再%10,得到原来数的十位数;
    依此类推······

3).闰年判断方式

if(year%4==0&&year%d100!=0||year%400==0)

4).各种函数

  • 求实数绝对值:fabs(x)
  • 求x的平方根:sqrt(x)
  • 求x的n次方:pow(x,n)
    提示:数学函数要在代码最前面加上表头文件 #include <math.h>

1.3本章学习体会

  • 学习感受
    写代码需要不断的练习和不断的尝试,才能从中形成自己的风格与体会。
    如分支结构使用缩进与对齐就可以使代码更加清晰易懂;
    必要时需要增加注释,这样以后再看才能理解代码的用途;
    c语言也有很多需要记忆的东西,比如各种典型题型,函数,各种符号代表的意义与作用;
    有些很难的题目思路会想不清楚,所以需要多看多学;
  • 两周代码量
    包括老师课件互动题,实验题集,,分支题集,单循环题集,课堂派测试题等等;

2.PTA实验作业

2.1前天是哪天

题目详情

给定公元1000年到公元3000年之间的某一天,请你给出该天的前天是哪一天。
输入格式:
输入在一个日期,格式如"yyyy-mm-dd",题目保证所有输入日期为合法日期。
输出格式:
对每一组输入,在一行中输出日期,格式如"yyyy-mm-dd"。

2.1.1数据处理

(1).数据表达

  • 变量
    因为题目中涉及到“格式如yyyy-mm-dd”的年月日,输入输出都为日期,暂时没有其它数据,所以我使用年(year),月(month),日(day)三个变量。
  • 类型
    因为年月日都为整数,所以使用整型(int);

2.1.2代码截图

2.1.3PTA提交列表及说明

错误原因:
错误1:有几个==写成了=;所以之后的if语句不具有判断意义,所以会输出好几个答案,所以答案错误
错误2:闰年的判断方式写错了,导致有关闰年的答案错误,所以部分正确
错误3:还有某个闰年的判断方式写错了,导致1900-3-1答案错误,所以 部分正确
将这几个方面改正后答案便通过了测试;

2.2字符型问题

7-2 计算油费 (15分)题目详情
现在90号汽油6.95元/升、93号汽油7.44元/升、97号汽油7.93元/升。为吸引顾客,某自动加油站推出了“自助服务”和“协助服务”两个服务等级,分别可得到5%和3%的折扣。
本题要求编写程序,根据输入顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助),计算并输出应付款。
输入格式:
输入在一行中给出两个整数和一个字符,分别表示顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助)。
输出格式:
在一行中输出应付款额,保留小数点后2位。

2.2.1数据处理

1).数据表达
变量
因为题目中出现3种品种汽油,所以有三种价格,还有两种服务类型;
所以对油的油量oil,油的品种type,服务类型service,油费money,打折后的最终价钱all。
类型
根据题意,油量oil,油的品种type为整型,使用int;
油费money和打折后的最终价钱all为浮点型,使用double;
服务类型service为字符型,使用char;

2.2.2代码截图

2.2.3PTA提交列表及说明

错误原因:
错误一:数据乘错了,打%3与%5折扣应该是乘以0.97与0.95;所以会出现答案错误
错误二:应该是service=='e',打成type=='e',所以有关e的都错了,所以为部分正确
错误三:与错误二相同
所以在把数据与单词都改正后就答案正确了;

2.3单步调试

2.3.1单步调试截图

1).添加断点和监视变量,输入scanf所需要的值

2).跟踪观察

2.3.2代码截图

2.3.3PTA提交列表及说明

**错误原因:*8
错误1:有几个==写成了=;所以之后的if语句不具有判断意义,所以会输出好几个答案,所以答案错误
错误2:闰年的判断方式写错了,导致有关闰年的答案错误,所以部分正确
错误3:还有某个闰年的判断方式写错了,导致1900-3-1答案错误,所以 部分正确
将这几个方面改正后答案便通过了测试;

所以,根据单步调试,找出自己的错误,也能理清复杂题目的思路,使我们发现自己的错误。
posted @ 2020-11-08 21:15  栀夏~  阅读(287)  评论(0编辑  收藏  举报