【C语言经典100题】(12月17日-day4)

cr:qj

 题目4

输入某年某月某日,判断这一天是这一年的第几天。

思路: 

首先肯定要判断这是闰年还是平年,这决定了二月份有多少天;其次是要把所有的天数都存起来;最后在所有天数中数出该日是排在第几个的,也就得出了第几天的答案。

虽然有了基本思路,但是在具体写代码的时候,第二步存放所有天数始终不知道怎么实现。

我想的是用二维数组来存放,x表示月,y表示日。但是在具体写的时候遇到了问题:如何对y放入不同的数值?如何计数?在问题的困扰下,我看了别人的解决方案。看了B站qj的方法后不太满意,他的方法有些太复杂了;后来又在CSDN上找到一种方法,这个方法是比较符合我预期(将各月份天数存起来)的。

代码:    

 对方:

#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,从而取整。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜東

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值