C博客作业00--顺序分支结构
0. PTA总分
1.本章学习总结
1.1学习内容总结
- 分支结构
- if语句
if (条件)
{
条件成立执行的语句;
}
if (条件)
{
成立时执行代码;
}
else
{
不成立时执行的代码;
}
if (条件)
{
成立时执行代码;
}
else if (条件n)
{
条件n成立时执行的代码;
}
else
{
不成立时执行的代码;
}
* switch语句
switch(表达式)
{
case 常量表达式1:语句段1;break;
case 常量表达式2:语句段2;break;
case 常量表达式3:语句段3;break;
··· ··· ···
case 常量表达式n:语句段n;break;
default: 语句段n+1;break;
}
注:switch语句若没有break会一直向下执行,关于这一特性在写代码时还有妙用,在编程技巧总结中具体说明。
2.常用函数
函数 | 功能 | 使用方法 |
---|---|---|
pow | 求幂函数 | pow(x,y) |
sqrt | 求平方根 | sqrt(x) |
fabs | 求绝对值 | fabs(x) |
exp | 求e的幂函数 | exp(x) |
1.2 编程技巧总结
- 取某一位数个位做法
若是整型变量直接用%10取余10即可得到个位
若是浮点型变量先用(int)强制整形再使用整型变量的方法即可 - 判断整除做法
若取余后==0,则整除
若取余后!=0,则不整除 - 用%e可以使用科学计数法
- 变量值交换
#include <stdio.h>
int main()
{
int x, y, z;
int t;
scanf("%d %d %d", &x, &y, &z);
if (x > y) {
t = x;
x = y;
y = t;
}
if (x > z) {
t = x;
x = z;
z = t;}
if (y > z) {
t = y;
y = z;
z = t;
}
printf("x=%d,y=%d,z=%d\n",x,y,z);
return 0;
}
在这道由小到大输出三个数的题目中,巧妙引入一个变量t,通过三个变量首尾相连的方式实现了交换。
- switch语句的妙用
#include <stdio.h>
int main()
{
int y, m, d;
int sum=0;
scanf("%d/%d/%d", &y, &m, &d);
if(1<=m&&m<=12)
switch (m - 1)
{
case 11:sum += 30;
case 10:sum += 31;
case 9:sum += 30;
case 8:sum += 31;
case 7:sum += 31;
case 6:sum += 30;
case 5:sum += 31;
case 4:sum += 30;
case 3:sum += 31;
case 2:
if (y%4==0 && y % 100 != 0 || y % 400 == 0)
sum += 29;
else
sum += 28;
case 1: sum += 31;
break;
}
sum += d;
printf("%d", sum);
return 0;
}
在这道计算天数的题目中,这种做法十分灵活巧妙地运用了switch语句的特性,省去了自己一个月一个月算的过程,十分牛逼。
1.3 本章学习体会
- 学习感受
由于暑假时间被其他事情所占用,开学的时候C语言几乎是零基础,所以最近加班加点,学得特别累。现在进度虽然跟得上,但看得多练得少,深感自己编程能力欠缺。 - 这两周的代码量
这两周基本都在线上线下学知识,除了PTA布置的题目外,基本上没啥代码量。
2.PTA实验作业
2.1 前天是哪天
这题我还没整出来。。但是刚刚听完智凯学长的讲解,我觉得再整半个小时肯定能整出来,等我交完博客后再去整整。
2.2 自选一题,内容要和字符型数据处理有关的题目
2.2.1 数据处理
int N, i;//整型变量
char s;//字符型变量
2.2.2 代码截图
2.2.3 PTA提交列表及说明
这道题之前听老师讲过,但是对两个scanf之间插入getchar()的操作还不是很理解,只能先把这个知识点记住。
2.3 自选一题,介绍单步调试如何检查错误
2.3.1 单步调试截图
不会上传GIF。。