cr:qj
题目4
输入某年某月某日,判断这一天是这一年的第几天。
思路:
首先肯定要判断这是闰年还是平年,这决定了二月份有多少天;其次是要把所有的天数都存起来;最后在所有天数中数出该日是排在第几个的,也就得出了第几天的答案。
虽然有了基本思路,但是在具体写代码的时候,第二步存放所有天数始终不知道怎么实现。
我想的是用二维数组来存放,x表示月,y表示日。但是在具体写的时候遇到了问题:如何对y放入不同的数值?如何计数?在问题的困扰下,我看了别人的解决方案。看了B站qj的方法后不太满意,他的方法有些太复杂了;后来又在优快云上找到一种方法,这个方法是比较符合我预期(将各月份天数存起来)的。
代码: 
对方:
#include <stdio.h>
int main()
{
int day,month,year,sum,leap;
printf("\n请输入年、月、日,格式为:年,月,日(2015,12,10)\n");
scanf("%d,%d,%d",&year,&month,&day); // 格式为:2015,12,10
switch(month) // 先计算某月以前月份的总天数
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf("data error");break;
}
sum=sum+day; // 再加上某天的天数
if(year%400==0||(year%4==0&&year%100!=0)) {// 判断是不是闰年
leap=1;
} else {
leap=0;
}
if(leap==1&&month>2) { // *如果是闰年且月份大于2,总天数应该加一天
sum++;
}
printf("这是这一年的第 %d 天。",sum);
printf("\n");
}
反思&收获:
多看多学;在写代码的时候,出现结果不正确的时候,可以人脑模拟、草稿纸演算一下。
cr:小林
例4
C语言实现用%f输出实数,且只能得到6位小数。
解题思路:不指定输出数据的长度,由系统根据数据的实际情况决定数据所占的列数。系统处理的方法一般是:实数中的整数部分全部输出,小数部分输出6位。
思路:
实话说,我连他这个题目是什么意思都没看懂……直接看他的代码来理解吧。看完之后大概意思就是:使一个实数以小数形式输出,然后保留六位小数。
首先得有一个小数,然后保证有6位小数输出。
代码:
对方:
反思:
这个题算是很简单的,基本上无脑输出就行了。
收获:
虽然这个题很简单,但是还是有收获的。
1、之前学过输出时%m.nf ,m确定代码宽度,n确定小数位数。在小林视频中学到还可以在%后面加一个负号,加了负号后,会向左边对齐,有多余的空位置会补到右边(不加的时候默认补到左边)。
2、如果小数位数上不写数值,只加了点的话,会默认小数位是0,从而取整。