C博客作业01--分支、顺序结构
| 这个作业属于哪个班级 | C语言网络2011,2012 |
| ---- | ---- | ---- |
| 这个作业的地址 | C博客作业01--分支、顺序结构 |
| 这个作业的目标 | 初步认识C语法,掌握数据表达、printf、scanf语法及分支结构内容 |
0.展示PTA总分(0----2)
1.本章学习总结(4分)
1.1 学习内容总结(2分)
这两周主要学习的事分支、顺序结构
分支结构
1.二分支结构和if_else语句
- if(表达式)
语句 1;
else
语句2; - if(表达式)
语句 1;
2.多分支结构和else-if语句
- if(表达式1)
语句1;
else if(表达式2)
语句2;
...
else if(表达式n-1)
语句n-1;
else
语句n;
3.switch语句
switch(表达式)
{
case 常量表达式 1:语句段1;break;
case 常量表达式 2:语句段2;break;
...
case 常量表达式 n:语句段 n;break:
default; 语句段 n+1;break;
}
逻辑运算
- !逻辑非
- &&逻辑与
- ||逻辑或
字符型变量的输入和输出
- 变量类型char
- 在scanf()中用%c读入
- 输入表达式时用''
1.学习随机函数使用
srand(time(0)); //设置随机数种子
rand()%100;//产生100以内的随机数
案例:猜数游戏
1.2 编程技巧总结(1分)
一个整数是由1至多位数字组成的,如何分解出整数的各个位数上对应的数字,然后加以计算
- 对一个整数做%10的操作,就会得到他的个位数;
- 对一个整数做/10 的操作,就去掉了它的个位数;
- 然后再对2的结果做%10,就得到原来的十位数了;
- 以此类推
案例:
交换两个数字的做法:
temp=a;
a=b;
b=temp;
案例:输入3个数,输出中间数
1.3 本章学习体会(1分)
本章主要学习了几种分支结构,在写pta的过程中,我遇到了一些问题,如switch case语句中:
1.忘记加大括号导致的错误
2.使用了两个switch case 语句,却只有一个swich
改正后如下:
计算这两周代码量
2.PTA实验作业(6分)
介绍下面3个题目的做法。
2.1 前天是哪天
2.1.1 数据处理
数据表达:
变量:输入的年份int year
输入的月份int month
输入的日int day
数据处理:
如果day大于3
{ day=day-2
输出年月日}
否则判断month
如果前一个月是小月
month=month-1;
day=30-2+day;
如果month的前一个月是大月
month=month-1;
day=31-2+day;
如果month=1
year=year-1;
month=12;
day=31-2+day;
如果month=3前一个月是2月
如果当年是闰年
month=month-1;
day=29-2+1;
否则
month=month-1;
day=28-2+1;
2.1.2 代码截图
2.1.3 PTA提交列表及说明
1.忽略了8月虽然是大月,但八月的前一个月7月仍是大月,应该将八月放到前一个月是小月的区域处理
2.判断月份中应该用if_else语句而不是并列的if语句,如果用并列的if语句,当月份为5,7,10,12时,条件符合进入第一个循环,这里以月份为5时为例
if (month == 5 ||month== 7 ||month== 10 ||month== 12)
{
month = month - 1;
day = 30 - 2 + day;//跨月份到小月
}
经过此循环月份变为4,符合第二个循环,进入第二个循环
if (month == 2 ||month== 4 ||month== 6 || month==9||month==11||month==8)
{
month = month - 1;
day = 31- 2+ day;//跨月份到大月
}
这样月份就变成了3,显然不是我们想要得到的4月,因此答案错误
正确的办法应该是使用else_if语句处理
2.2 计算油费
2.2.1 数据处理
数据处理:
常量:6.95 7.44 7.93 0.05 0.03
整型变量:加油量gas
汽油品种type
服务类型type
浮点型变量:double
字符型变量:服务类型service
数据表达:
1.输入加油量,汽油品种,服务类型
2.判断汽油品种,如果汽油品种为90,money等于6.95 * gas
否则的话如果汽油品种为93
money等于7.44乘以汽油量
否则的话如果如果汽油品种为97
money等于7.93gas
3.判断服务类型,如果服务类型m,money=money(1-0.05)
否则的话money=money*(1-0.03)
2.2.2 代码截图
2.2.3 PTA提交列表及说明
1.输入变量的时候没有加取地址符&&导致错误
2.在else后面加了条件导致错误
2.3 出租车计费
题目:
2.3.1 单步调试截图
发现没有进入本应该进入的循环,直接跳过了,是判断条件在临界的情况出现了错误,应该改为
2.3.2 代码截图
2.3.3 PTA提交列表及说明
错误代码
通过调试改正,临界状态出错