问题 回答
这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 C语言I作业07
我在这个课程的目标是 自己设计一个小游戏
这个作业在那个具体方面帮助我实现目标 在PTA题目中多次使用switch语句
参考文献 C语言程序设计,百度文献 伪代码1 伪代码2

1.PTA实验作业(20分/题)

1.1计算天数 (15 分)

本题要求编写程序计算某年某月某日是该年中的第几天。

输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。

输出格式:
在一行输出日期是该年中的第几天。

输入样例1:

2009/03/02

输出样例1:

61

输入样例2:

2000/03/02

输出样例2:

62

1.1.1数据处理

  • 数据表达:运用到了整型变量: year, month, day。
  • 数据处理:

#include <stdio.h>

int main()

{

  int year,month,day;

   输入年月日 

  if(year%4==0&&year%100!=0||year%400==0)/* 判断是不是闰年*/

  {                                                  /* 是闰年*/

​         switch(month)

​        {

​            case 1:printf("%d\n",day);break;         /* 闰年1月*/

​            case 2:printf("%d\n",31+day);break;      /* 闰年2月*/

​            case 3:printf("%d\n",60+day);break;      /* 闰年3月*/

​            case 4:printf("%d\n",91+day);break;      /* 闰年4月*/

​            case 5:printf("%d\n",121+day);break;     /* 闰年5月*/

​            case 6:printf("%d\n",152+day);break;     /* 闰年6月*/

​            case 7:printf("%d\n",182+day);break;     /* 闰年7月*/

​            case 8:printf("%d\n",213+day);break;     /* 闰年8月*/

​            case 9:printf("%d\n",244+day);break;     /* 闰年9月*/

​            case 10:printf("%d\n",274+day);break;    /* 闰年0月*/

​            case 11:printf("%d\n",305+day);break;    /* 闰年11月*/

​            case 12:printf("%d\n",335+day);break;    /* 闰年12月*/

​        }

  }

  else                                              /* 不是闰年*/

  {

​        switch(month)

​        {

​            case 1:printf("%d\n",day);break;           /* 平年1月*/

​            case 2:printf("%d\n",31+day);break;        /* 平年2月*/

​            case 3:printf("%d\n",59+day);break;        /* 平年3月*/

​            case 4:printf("%d\n",90+day);break;        /* 平年4月*/

​            case 5:printf("%d\n",120+day);break;       /* 平年5月*/

​            case 6:printf("%d\n",151+day);break;      /* 平年6月*/

​            case 7:printf("%d\n",181+day);break;      /* 平年7月*/

​            case 8:printf("%d\n",212+day);break;      /* 平年8月*/

​            case 9:printf("%d\n",243+day);break;      /* 平年9月*/

​            case 10:printf("%d\n",273+day);break;     /* 平年10月*/

​            case 11:printf("%d\n",304+day);break;     /* 平年11月*/

​            case 12:printf("%d\n",334+day);break;     /* 平年12月*/

​        }

​    }

​    return 0;

}

1.1.2实验代码截图


1.1.3 造测试数据

输入数据 输出数据 说明
2019/11/06 310 今日日期,31+28+31+30+31+30+31+31+30+31+6=310
2018/03/05 64 非闰年,31+28+5=64
2004/05/05 126 闰年,31+29+31+30+5=126

1.1.4 PTA提交列表及说明

提交列表说明:
答案错误:输入格式错了,忘记在%d之间加\。

1.2统计学生成绩 (15 分)

本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:

大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
输入格式:
输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。

输出格式:
在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。

输入样例:

7
77 54 92 73 60 65 69

输出样例:

1 0 2 3 1

1.2.1 数据处理

  • 数据表达:运用了九个整型变量:n,i,grade,w,A,B,C,D,E,grade为分数。
  • 数据处理:

#include <stdio.h>
int main()
{
	int n,i,grade,w;
	int A←0,B←0,C←0,D←0,E←0;
	输入学生人数
	if(n>0)	      /*学生人数大于0时*/
	{
		for(i=1;i<=n;i++)
		{
			scanf("%d",&grade);/*输入学生成绩*/
	        w=grade/10;                /*取分数第一位数以便事件的常量表达*/
			switch(w)
			{
				case 10:A++;break;  /*大于等于90分*/
				case 9:A++;break;   /*大于等于90分*/
				case 8:B++;break;   /*小于90且大于等于80*/
				case 7:C++;break;   /*小于80且大于等于70*/
				case 6:D++;break;   /*小于70且大于等于60*/
				default:E++;break;  /*小于60*/
			}
		}
	}
	printf("%d %d %d %d %d",A,B,C,D,E);
	return 0;
}

1.2.2 实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
5\n 55 66 77 88 99 1 1 1 1 1 分别为A B C D E
5\n 96 100 88 76 0 2 1 1 0 1 分别为A B C D E
6\n 23 61 70 80 90 60 1 1 1 2 1 临界值

1.2.4 PTA提交列表及说明

答案错误: scanf("%d",& grade);输出放在for语句前,没能实现循环。

2.代码互评(5分)

同学代码截图

自己代码截图


1,我们变量不一样,他他变量多几个,我的少几个。
2我们代码差别很大,他的是在for语句中循环,我的刚是把十个月都列出来了,我这方法比较笨,一看他代码顿悟了,自己当时怎么想到。
3,我的代码行比他的长多了,他的方法值得我学习。

3.学习总结(15分)

3.1 学习进度条(5分)

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
11.4~11.10 12h 232 熟悉多分支结构switch语句的使用 在博客园中如何添加小挂饰

3.2 累积代码行和博客字数(5分)

3.3 学习内容总结和感悟(5分)

3.3.1 学习内容总结

3.3.2 学习体会

本周学习了多分支结构switch语句,当常量表达式所表达的量与其中一个case语句中的常量相符时,就执行此case语句后面的语句,并依次下去执行后面所有case语句中的语句,除非遇到break;语句跳出switch语句为止。如果常量表达式的量与所有case语句的常量都不相符,就执行default语句中的语句并跳出switch语句。本周PTA第三题如果不限语句,那很容易的,这题我想了很久,在书上看到了for语句中加switch语句才恍然大悟,又学习了一个语句,还是蛮开心的,switch语句作用也很大,不过第一题只记着用switch语句,忘了也能用for语句,想把C语言学好,设计一个小游戏还是蛮难的,不过我会努力的。