0.展示PTA总分
1.本章学习总结
1.1 学习内容总结
1.if 语句
适用需要判断条件再执行的情况
if(条件)
{
执行的语句
}
条件中 &&表示同时满足——和,||表示或者。
2.if-else 语句
主要适用于需要分段的情况
if(条件)
{
执行的语句
}
else{
执行的语句
}//跟if的括号里的条件相反的情况
3.if-if else 语句
if(条件)
{
执行语句
}else if (除第一个if之外条件)
{
}else if (除第一第二个条件之外的条件)
{
}else {}//除上面提及的条件之外的条件
4.if 的嵌套
if 的执行语句可以用if
5.switch语句
switch(表达式)//必须为整形
{case 1:
case 2:
default:
//输入值则跳转到该值的case语句执行,以break 结束跳出switch,否则按顺序继续执行下一条,default为除case 的条件之外的数。
}
2.随机数
srand(time(0)) ;//先设置随机种子 ,为了每回种下一个不一样的种子,所以就选用Time(0),Time(0)是得到当前时时间值。
rand()%100;//然后产生随机数 ,范围为0~99;
函数预处理:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
3.数据输入输出类型
字符型 | 占用的字节空间 | 输入 | 输出 |
---|---|---|---|
int(整形) | 4 | %d | %d |
double(双精度浮点数) | 8 | %lf | %f |
float(单精度浮点数) | 4 | %f | %f |
char(字符型) | 1 | %c | %c |
1.2 编程技巧总结
1.取某个数的个位数
用%10来取。
2.判断整除做法
#include<stdio.h>
int main()
{
int Rabbitdis, Tortoisedis;
int T;
scanf("%d", &T);
Tortoisedis = 0;
Rabbitdis = 0;
for (int t = 1; t <= T; t++) {
Tortoisedis = 3 * t;
Rabbitdis += 9;
if (t % 10 == 0 && Rabbitdis < Tortoisedis) {//用%10来判断过了十分钟,则再次判断此时兔子跟乌龟的距离
t += 30;
}
}
Tortoisedis = T * 3;
if (Tortoisedis > Rabbitdis)printf("@_@ %d", s1);
if (Rabbitdis > Tortoisedis)printf("^_^ %d", s2);
if (Tortoisedis == Rabbitdis)printf("-_- %d", s1);
return 0;
}
3.利用判断条件来控制最后不输出空格
念数字的题目
#include<stdio.h>
int count(int x){
int cnt = 1;
while (x > 9) {
x /= 10;
cnt *= 10;
}return cnt;
}
int main()
{
int n;
int m;
int x;
scanf("%d", &n);
if (n < 0) { printf("fu "); n = -n; }
int c = count(n);
for(int i;c>0;i++)
{
m = n/c;
n %= c;
switch (m)
{
case 0:
printf("ling");
break;
case 1:
printf("yi");
break;
case 2:
printf("er");
break;
case 3:
printf("san");
break;
case 4:
printf("si");
break;
case 5:
printf("wu");
break;
case 6:
printf("liu");
break;
case 7:
printf("qi");
break;
case 8:
printf("ba");
break;
case 9:
printf("jiu");
break;
}
if (c > 9) { printf(" "); }
c /= 10;
}
return 0;
}
1.3 本章学习体会
1.学习感受:许多细节的用法不了解,比如如何在最后一格不取0,和ASCII码的运用等等。这需要多花时间去了解学习跟实践。
2.这周代码量只有500~600行,相对往周较少,还是要多抽时间来刷题,相对多的代码量,才能加强编程技巧和编程能力。
2.PTA实验作业
2.1 前天是哪天
2.1.1 数据处理
用int 定义 year,month,day 三个变量。
其中先判断day-2的大小,来判断月份是否有变,
再根据变的月份来判断变的日,跟年。
2.1.2 代码截图
2.1.3 PTA提交列表及说明
说明:Q1:讨论的条件太多致使逻辑较为混乱
A1:,导致每次的判断并不全面,此时可用&&,||来使代码量减小,且代码更为全面。
Q2:思路逻辑的复杂
A2:其实只需判断好几个特殊的条件便可:如闰年跟非闰年,月份3月到2月,如果是闰
年则是29天的2月,非闰年则是28天的2月,还有个是有31天和30天两种的月份的跨度。
2.2 自选一题
2.1.1 数据处理
定义一个字符型变量c和整形变量count,再在循环中输入以此来判断类型,如果为非空格则count+1,来统计字符量。
2.1.2 代码截图
2.1.3 PTA提交列表及说明
最大的问题出在
如果用每次输出"数量 ”来控制格式,如果后方有空格然后‘.’则难以避免,所以我在第二个循环里,加上第一个循环来把第一个单词的字符数先统计出来输出"数字"。
如果还有第二个则输出则输出" 数字”来控制格式。
2.3 自选一题,介绍单步调试如何检查错误
2.3.1 单步调试截图
1.在scanf后设置断点进入调试
2.输入样例
3.开始逐过程调试
第一次进入default分支,则为97号汽油
第二次进入分支判断服务类型为m
之后则输出计算出来的数值。