2020.12.10 OJ作业

今天的作业难度感觉比昨天的实验还要大。。。。从十二点开始一直写到下午吃饭,中间就吃了个午饭,也是边吃边写,哎,这个过程是必须的,加油!!!
传送门
1028 Problem A 摄氏——华氏温度转换表
这题还行,好歹之前认认真真做过一次,认真写了一下一遍过了。不错哦,这里要注意精度损失的问题(也就是加个0.001或者0.01什么的)。
AC码:

#include<stdio.h>
#include<stdlib.h>
int main()
{
//    freopen("in.txt","r",stdin);
    char ch,sh;
    int low,high;
    double step,t;
    scanf("%c->%c",&ch,&sh);
    scanf("%d%d%lf",&low,&high,&step);
    if(ch=='C'&&sh=='F')
    {
        printf("   C  ->    F\n");
        t = 1.0*low;
        while(t<high+0.01)
        {
            printf("%5.1lf ->%6.1lf\n",t,1.8*t+32);
            t = t+step;
        }
    }
        if(ch=='F'&&sh=='C')
    {
        printf("   F  ->    C\n");
        t = 1.0*low;
        while(t<high+0.01)
        {
            printf("%5.1lf ->%6.1lf\n",t,(t-32)*5/9);
            t = t+step;
        }
    }
    return 0;
}

可能有点长,但是思路很简单的~
1029 Problem B 1!+2!+…+k!=?
这个题,emm有点投机取巧吧
做得有些着急,前两次都是超时83%
直接上码:

#include<stdio.h>
#include<stdlib.h>
int main()
{
//    freopen("in.txt","r",stdin);
    int N,i,a,b,max,min;
    while(1)
    {
        scanf("%d",&N);
        if(N==0)
            break;
        scanf("%d",&b);
        max = min = b;
        for(i = 2; i<=N; i++)
        {
            scanf("%d",&a);
            if(a>max)
                max = a;
            if(a<min)
                min = a;
        }
        printf("%d\n",(max-min)*2);
    }
    return 0;
}

现在找最大值最小值的还算是比较精通了
1119 Problem C 购物的路程
这个很简单了,当初做实验遇到也是一次过,就是题有点长,有点吓人
码略
1040 Problem D 求一元二次方程的根
这个单独开一篇吧,挺费劲的
1145 Problem E 求累加和
这题我感觉我自己做的很好,但是别人也有很多一次过的,有空再继续看看
码:

#include<stdio.h>
#include<stdlib.h>
int main()
{
//    freopen("in.txt","r",stdin);
    int min,max,N,i;
    double sum;
    scanf("%d",&N);
    for(i = 1;i<=N;i++)
    {
        scanf("%d%d",&min,&max);
        sum = (double)((1.0*max*(max+1))/2)-(double)((1.0*min*(min+1))/2)+min;
        printf("case %d:sum=%d.\n",i,(int)sum);
    }
    return 0;
}

12.13 14:10补充:
我感觉这个写法还是有点不靠谱,因为老师说实数运算有精度损失什么的,我这先实数再整数感觉存在隐患。然后我就试着直接int sum不要1.0*那些交了一次,也是过了(100分变成99了…),但是我键入“1 30000 50000”,这个程序的输出就是负的,不对了,但是这个是合理的输入,所以这个题的测试点应该是不够极端,这题出的不好。
我对我自己的程序进行了简单的修改,扩大了它能计算的范围,而且不用考虑精度损失的问题:

#include<stdio.h>
#include<stdlib.h>
int main()
{
//    freopen("in.txt","r",stdin);
    int min,max,N,i;
    int sum;
    scanf("%d",&N);
    for(i = 1; i<=N; i++)
    {
        scanf("%d%d",&min,&max);
        if(max%2==0&&min%2==0)
            sum = (max/2*(max+1))-(min/2*(min+1))+min;
        else if(max%2==0&&min%2!=0)
            sum = (max/2*(max+1))-(min*((min+1)/2))+min;
        else if(max%2!=0&&min%2==0)
            sum = (max*((max+1)/2))-(min/2*(min+1))+min;
        else if(max%2!=0&&min%2!=0)
            sum = (max*((max+1)/2))-(min*((min+1)/2))+min;
        printf("case %d:sum=%d.\n",i,sum);
    }
    return 0;
}

增加了奇数偶数的判断,删去了double转int的步骤。
Problem F: 笛卡尔平面
这题纯属唬人,题目看起来那么老长,其实写起来很简单,长点记性哈,别被题目吓傻了
码:

#include<stdio.h>
#include<stdlib.h>
int main()
{
//    freopen("in.txt","r",stdin);
    double x,y;
    scanf("(%lf, %lf)",&x,&y);
    if(x>0.0&&y>0.0)
        printf("(%.1lf, %.1lf) is in quadrand I",x,y);
    else if(x>0.0&&y<0.0)
        printf("(%.1lf, %.1lf) is in quadrand IV",x,y);//这里注意一下,四的罗马字母不是IIII而是IV,因为马虎没有做到一遍过。。。。。
    else if(x<0.0&&y<0.0)
        printf("(%.1lf, %.1lf) is in quadrand III",x,y);
    else if(x<0.0&&y>0.0)
        printf("(%.1lf, %.1lf) is in quadrand II",x,y);
    else if(x==0.0&&y==0.0)
        printf("(0.0, 0.0) is origin");
    else if(x==0.0&&y>0.0||x==0.0&&y<0.0)
        printf("(%.1lf, %.1lf) is on the y axis",x,y);
    else if(x<0.0&&y==0.0||x>0.0&&y==0.0)
        printf("(%.1lf, %.1lf) is on the x axis",x,y);
    return 0;
}

2302 Problem G 输出回字形
这题也单独写一篇吧,这题是真遇到自己的短板了,需要加强啊!!!!!

总体而言,今天的作业我做的还算比较满意,至少之前做过的题以及类似题都能很快找到思路并且解出来,D是真的麻烦,也不是不会,就是分类讨论太多了(可能是我的方法不太合适,但是也都差不多得写80行多),G是真不会,遇到这种图形题就变呆逼。。。没办法多见题多练题是唯一的解决办法,加油吧!!!!!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值