c语言博客,顺序与分支结构

顺序与分支结构

pta顺序与分支结构作业展示


1.学习总结

1.1

if case 语句
if语句
单分支
if(条件)
{
(语句块)
}
双分支
if (条件)
{
(语句块);
}
else
{
(语句块);
}
多分支
if(条件)
{
(语句块)
}
else if (条件)
{
(语句块)
}
else
{
(语句块)
}
switch语句
switch (表达式的值)
{ case 1: 语句1 break;
case 2: 语句2 break;
case 3: 语句3 ...
default:
}
函数
幂函数:pow(x,n)
平方根:sqrt(x)
绝对值:fabs(x)
随机函数:srand(time(0));
注意点:

  1. if语句判断时==容易打成=
  2. 对&&和||的应用容易出错

1.2编程技巧

  1. 取三位数的个位
    a=x%10
  2. 数据交换
if (a > b) {
temp=a;
a = b;
b = temp;
}

1.3

目前内容比较简单,暂无困惑
300行左右

2.pta作业

2.1前天是哪天

2.1.1

定义year,month,day,输入年月日,用y,m,d表示减去两天后的时间

2.1.2

#include <stdio.h>
int main()
{
	int year;
	int month;
	int day;
	int d, m, y;
	scanf("%d-%d-%d", &year, &month, &day);
	if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
	{
		d = day - 2;
		if (d > 0)
		{
			m = month;
			y = year;
			printf("%d-%d-%d", y, m, d);
		}
		else
		{
			if (month == 3)
			{
				d = day + 29 - 2;
				m = month - 1;
				y = year;
				printf("%d-%d-%d", y, m, d);
			}
			else if (  month == 2 || month == 4 || month == 6  || month == 9||month == 11||month==8)
			{
				d = day + 31 - 2;
				m = month - 1;
				y = year ;
				printf("%d-%d-%d", y, m, d);
			}
			else if (month == 1)
			{
				d = day + 31 - 2;
				m = 12;
				y = year - 1;
				printf("%d-%d-%d", y, m, d);
			}
			else
			{
				d = day + 30 - 2;
				m = month - 1;
				y = year ;
				printf("%d-%d-%d", y, m, d);
			}
		}
	}
	else
	{
		d = day - 2;
		if (d > 0)
		{
			m = month;
			y = year;
			printf("%d-%d-%d", y, m, d);
		}
		else
		{
			if (month == 3)
			{
				d = day + 28 - 2;
				m = month - 1;
				y = year;
				printf("%d-%d-%d", y, m, d);
			}
			else if (month == 2 || month == 4 || month == 6 || month == 8 || month == 9 || month == 11)
			{
				d = day + 31 - 2;
				m = month - 1;
				y = year;
				printf("%d-%d-%d", y, m, d);
			}
			else if (month == 1)
			{
				d = day + 31 - 2;
				m = 12;
				y = year - 1;
				printf("%d-%d-%d", y, m, d);
			}
			else
			{
				d = day + 30 - 2;
				m = month - 1;
				y = year;
				printf("%d-%d-%d", y, m, d);
			}
		}
	}
	return 0;
}

2.1.3

第一次提交

#include <stdio.h>
int main()
{
	int year;
	int month;
	int day;
	int d, m, y;
	scanf("%d-%d-%d", &year, &month, &day);
	if (year / 4 == 0 && year / 100 != 0 || year / 400 == 0)
	{
		d = day - 2;
		if (d > 0)
		{
			m = month;
			y = year;
			printf("%d-%d-%d", y, m, d);
		}
		else
		{
			if (month == 3)
			{
				d = day + 29 - 2;
				m = month - 1;
				y = year;
				printf("%d-%d-%d", y, m, d);
			}
			if (  month == 2 || month == 4 || month == 6 || month == 8 || month == 9||month == 11)
			{
				d = day + 31 - 2;
				m = month - 1;
				y = year ;
				printf("%d-%d-%d", y, m, d);
			}
			if (month == 1)
			{
				d = day + 31 - 2;
				m = month - 1;
				y = year - 1;
				printf("%d-%d-%d", y, m, d);
			}
			else
			{
				d = day + 30 - 2;
				m = month - 1;
				y = year ;
				printf("%d-%d-%d", y, m, d);
			}
		}
	}
	else
	{
		d = day - 2;
		if (d > 0)
		{
			m = month;
			y = year;
			printf("%d-%d-%d", y, m, d);
		}
		else
		{
			if (month == 3)
			{
				d = day + 28 - 2;
				m = month - 1;
				y = year;
				printf("%d-%d-%d", y, m, d);
			}
			if (month == 2 || month == 4 || month == 6 || month == 8 || month == 9 || month == 11)
			{
				d = day + 31 - 2;
				m = month - 1;
				y = year;
				printf("%d-%d-%d", y, m, d);
			}
			if (month == 1)
			{
				d = day + 31 - 2;
				m = month - 1;
				y = year - 1;
				printf("%d-%d-%d", y, m, d);
			}
			else
			{
				d = day + 30 - 2;
				m = month - 1;
				y = year;
				printf("%d-%d-%d", y, m, d);
			}
		}
	}
	return 0;
}
存在的问题
  1. 发现闰年的判断应该用%而不是/
  2. 在月份为1且天数小于2时,月份应跳回12

2.2 计算油费

2.2.1 数据处理

定义字符型变量service用于输入服务类型,定义浮点型变量money,sum用于计算价钱,定义整形变量oil,fuel表示油的类型和数量

2.2.2 代码截图

2.2.3 提交列表

答案正确

2.3单步调试的使用

2.3.1单步调试的过程



2.3.2代码截图

2.2.3 pta提交过程

第一次提交

代码

错误原因

经单步调试后发现,不应将m赋值为100

最终答案

代码

posted @ 2020-11-08 10:50  写不下去了,淦  阅读(122)  评论(0编辑  收藏  举报