刷题---C语言

目录

前言:

一.刷题(2)

1.1判断是元音还是辅音

1.2牛牛的判断题

1.3判断闰年

1.4判断字母

1.5四季

1.6健康评估

1.7牛牛的二三七整除

1.8统计数据正负个数

二.刷题(2)

2.1牛牛的快递

2.2计算商品打折结算金额

2.3牛牛的通勤

2.4牛牛的金币

2.5牛牛的一周

2.6HTTP状态码

2.7计算单位阶跃函数

2.8牛牛的计划


前言:

博文结构开头是本文涉及的题目

牛客网链接;题目截图;【不太懂的会加百度词条】

解题思路;代码通过截图;代码实现;该题收获总结

以上就是本刷题专栏的结构---旨在尽快提升编程能力设置的例行格式

  今日份题目有判断是元音还是辅音、牛牛的判断题、判断闰年、判断字母、四季、健康评估、牛牛的二三七整除、统计数据正负个数、牛牛的快递、计算商品打折结算金额、牛牛的通勤、牛牛的金币、牛牛的一周、HTTP状态码、计算单位阶跃函数、牛牛的计划


一.刷题(1)

1.1判断是元音还是辅音

  牛客网链接OJ链接

#include <stdio.h>
int main() {
    char ch = 0;
    while(~scanf(" %c", &ch))
    {
        //ch如果是元音字母(不分大小写)里的任意一个都输出Vowel
        if(ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O'|| ch == 'U' ||
        ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u')
        {
            printf("Vowel\n");
        }
        else 
        {
            printf("Consonant\n");
        }
    }
    return 0;
}

  收获总结if语句条件大胆写,不要害怕因为条件多就不敢写;||是或者的作用,如果或者条件符合一个,表达式为真;锻炼代码能力

1.2牛牛的判断题

  牛客网链接OJ链接

#include <stdio.h>
int main() {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    if(a >= b && a <= c)
    {
        printf("true\n");
    }
    else 
    {
        printf("false\n");
    }
    return 0;
}

  收获总结&&在计算机中是并且的作用,条件同时成立才为真;锻炼代码能力; 

1.3判断闰年

  牛客网链接OJ链接

  解题思路判断闰年有两种方法如果年份能被4整除并且不能被100整除的是闰年;如果年份能被400整除是闰年

#include <stdio.h>
int main() {
    int year = 0;
    scanf("%d", &year);
    if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
    {
        printf("yes\n");
    }
    else 
    {
        printf("no\n");
    }
    return 0;
}

  收获总结熟练搭配使用&&和||;掌握判断闰年的方法;锻炼代码能力

1.4判断字母

  牛客网链接OJ链接

  解题思路在头文件<ctype.h>里有能判断是不是为字符的函数,如果是,函数返回1,不是函数返回0

#include <stdio.h>
#include <ctype.h>
int main() {
    char ch = 0;
    scanf("%c", &ch);
    //isalpha---是字母吗?
    if(isalpha(ch))
    {
        printf("YES\n");
    }
    else 
    {
        printf("NO\n");
    }
    return 0;
}

  收获总结<ctype.h>头文件里有isalpha()这个判断是不是字符的函数,可以在cplusplus网站里看这个头文件里的其它函数;锻炼代码能力

1.5四季

  牛客网链接OJ链接

  解题思路取出最后两位数,按权重加到一个变量里表示月份,然后根据这个变量的值选择输入相应的季节

#include <stdio.h>
#include <math.h>
int main() {
    int n = 0;
    scanf("%d", &n);
    int i = 0;
    int sum = 0;
    //除法、取模取出最后两位,乘上相应的权重
    //赋值到变量里表示月份
    while(i<2)
    {
        sum += n % 10 * pow(10, i);
        n /= 10;
        i++;
    }
    //根据变量里的月份输出对应的季节
    switch(sum)
    {
        case 12:
        case 1:
        case 2:
            printf("winter\n");
            break;
        case 3:
        case 4:
        case 5:
            printf("spring\n");
            break;
        case 6:
        case 7:
        case 8:
            printf("summer\n");
            break;
        case 9:
        case 10:
        case 11:
            printf("autumn\n");
            break;
    }
    return 0;
}

  收获总结更熟悉取模配合取模给数值剥离数字,以及乘上相应的权重赋值给变量;锻炼代码能力

1.6健康评估

  牛客网链接OJ链接

#include <stdio.h>
#include <math.h>
int main() {
    double weight, height;
    scanf("%lf %lf", &weight, &height);
    double BMI = weight/pow(height, 2);
    if(BMI >= 18.5 && BMI <= 23.9)
    {
        printf("Normal\n");
    }
    else 
    {
        printf("Abnormal\n");
    }
    return 0;
}

  收获总结变量的数据类型如果不一,一个可以使用int、一个可以使用float的话,我们一律使用精度高的,这样不会有类型的不兼容的警告;锻炼代码能力

1.7牛牛的二三七整除

  牛客网链接OJ链接

  解题思路输入一个数字,让这个数字分别被2、3、7这三个数字试除,如果有被整除的情况,那就不可能输出n;安排除的时候,我们按顺序让它被试除,这样自然就是有序的了

#include <stdio.h>
int main() {
    int a = 0;
    scanf("%d", &a);
    int i = 0;
    //定义一个标签,如果最后还是0,则最后输出n
    //如果有被整除的情况,将被改成1,最后不符合条件,不输出n
    int flag = 0;
    //三次循环,第一次让2试除,依次类推
    for(i = 0;i < 3; i++)
    {
        if(i == 0)
        {
            if(a % 2 == 0)
            {
                printf("2 ");
                flag = 1;
            }
        }
        if(i == 1)
        {
            if(a % 3 == 0)
            {
                printf("3 ");
                flag = 1;
            }
        }
        if(i == 2)
        {
            if(a % 7 == 0)
            {
                printf("7 ");
                flag = 1;
            }
        }
    }
    //判断有没有被整除过
    if(flag == 0)
    {
        printf("n\n");
    }
    return 0;
}

  收获总结定义一个标签,如果符合一种情况,则把这个标志给修改掉,以便符合逻辑;一个循环里可以控制顺序;锻炼代码能力

1.8统计数据正负个数

  牛客网链接OJ链接

#include <stdio.h>
int main() {
    int i = 0;//控制循环
    int n = 0;//奇数个数计数
    int p = 0;//偶数个数计数
    int k = 0;//接收数值
    for(i = 0; i < 10; i++)
    {
        scanf("%d", &k);
        if(k > 0)
        {
            p++;
        }
        else 
        {
            n++;
        }
    }
    printf("positive:%d\n", p);
    printf("negative:%d\n", n);
    return 0;
}

   收获总结连续输入,有些情况是不需要存储起来的,输入一个判断一个,然后循环重新输入;锻炼代码能力

二.刷题(2)

2.1牛牛的快递

  牛客网链接OJ链接

  解题思路输入一个重量,一个字符代表加不加急。首先判断这个字符的情况,创建一个变量,初始化为0,如果字符为y,把变量值赋值成5小于且包括1kg的是20块,然后不管多出多少,都算1块;在大于1kg里分两种中情况,如果恰好是整数,那么就需要少算一次,比如6kg,实际上多出5kg,最开始的1kg属于20的起步价如果不是整数,那么就是相应的次数,因为多余的小数需要多算一次,抵消掉了最开始需要减掉1kg的那一次。比如6.6,去掉第一kg,还有5.6需要六次

#include <stdio.h>
int main() {
    float weight = 0.0f;
    char ch = 0;
    int x = 0;
    scanf("%f %c", &weight, &ch);
    //如果为等于y,把x赋值成5,后面加上
    if(ch == 'y')
    {
        x = 5;
    }
    //如果是小于1,那么就是直接加上20
    if(weight < 1)
    {
        printf("%d\n", 20+x);
    }
    //等于大于1的情况
    else
    {
        //计算重量里有多少个1
        int tmp = (int)weight/1;
        //如果是整数,减掉一次,这一次是属于起步价的20
        if(tmp == weight)
        {
            printf("%d\n", (20+(tmp-1)*1+x)); 
        }    
        //不为整数,则抵消
        else
        {
            printf("%d\n", (int)(20+(tmp)*1+x));
        }
    }
    return 0;
}

  收获总结更熟练理解标志的使用;提升理解题目的意思;锻炼代码能力

2.2计算商品打折结算金额

  牛客网链接OJ链接

#include <iostream>
#include <iomanip>
using namespace std;
int main() {
    int n = 0;
    cin>>n;
    if(n >= 100 && n < 500)
    {
        cout<<n*0.9;
    }
    else if(n >= 500 && n < 2000)
    {
        cout<<n*0.8;
    }
    else if(n >= 2000 && n < 5000)
    {
        cout<<n*0.7;
    }
    else
    {
        cout<<n*0.6;
    }
    return 0;
}

  收获总结临界的选择条件理解;锻炼代码能力

2.3牛牛的通勤

  牛客网链接OJ链接

  解题思路由于等车需要10,所以步行可以先走10米远,当车到了之后,坐车1秒,可以走10米,此时牛牛选择是步行的话,已经总共走了11米,再往后1秒内,打车走的距离就比步行还要远了,所以临界在11米这个点上。 

#include <stdio.h>
int main() {
    int dt = 0;
    scanf("%d", &dt);
    int stop = 10;
    if(dt <= 11)
    {
        printf("w");
    }
    else 
    {
        printf("v");
    }
    return 0;
}

   收获总结提升分析思考的速度;锻炼代码能力

2.4牛牛的金币

  牛客网链接OJ链接

  解题思路这道题保证金币在牛牛的“十字架”方位上,所以我们只需要让金币的横坐标减去牛牛的横坐标,金币的纵坐标减去牛牛的纵坐标,分情况打印就可以完成

#include <stdio.h>
int main() {
    int x, y;
    int x1, y1;
    scanf("%d %d", &x, &y);
    scanf("%d %d", &x1, &y1);
    int n = x1 - x;
    int m = y1 - y;
    if(n == 0 && m == 1)
    {
        printf("u");
    }
    else if(n == 0 && m == -1)
    {
        printf("d");
    }
    else if(n == 1 && m == 0)
    {
        printf("r");
    }
    else
    {
        printf("l");
    }
    return 0;
}

  收获总结理解题目的意思;锻炼代码能力

2.5牛牛的一周

  牛客网链接OJ链接

#include <stdio.h>
int main() {
    int day = 0;
    scanf("%d", &day);
    switch(day)
    {
        case 1:
            printf("Monday\n");
            break;
        case 2:
            printf("Tuesday\n");
            break;
        case 3:
            printf("Wednesday\n");
            break;
        case 4:
            printf("Thursday\n");
            break;
        case 5:
            printf("Friday\n");
            break;
        case 6:
            printf("Saturday\n");
            break;
        case 7:
            printf("Sunday\n");
            break; 
    }
    return 0;
}

   总结收获switch的多分支使用;锻炼代码能力

2.6HTTP状态码

  牛客网链接OJ链接

#include <stdio.h>
int main() {
    int n = 0;
    while(scanf("%d", &n) != EOF)
    {
        if(n == 200)
        {
            printf("OK\n");
        }
        else if(n == 202)
        {
            printf("Accepted\n");
        }
        else if(n == 400)
        {
            printf("Bad Request\n");
        }
        else if(n == 403)
        {
            printf("Forbidden\n");
        }
        else if(n == 404)
        {
            printf("Not Found\n");
        }
        else if(n == 500)
        {
            printf("Internal Server Error\n");
        }
        else if(n == 502)
        {
            printf("Bad Gateway\n");
        }
    }
    return 0;
}

   收获总结HTTP状态码的种类的了解;锻炼代码能力

2.7计算单位阶跃函数

  牛客网链接OJ链接

#include <stdio.h>
int main() {
    int n = 0;
    while(~scanf("%d", &n))
    {
        if(n > 0)
        {
            printf("%d\n", 1);
        }
        else if(n == 0)
        {
            printf("%.1f\n", 1.0/2);
        }
        else 
        {
            printf("%d\n", 0);
        }
    }
    return 0;
}

  收获总结执行小数除法的时候,操作数必须要有一个浮点数,控制小数点的位数格式;锻炼代码能力

2.8牛牛的计划

  牛客网链接OJ链接

  解题思路计划时间之前不学习,计划时间之后学习,那么如果年份大于计划的年份,那一定开始学习了;如果年份相同,月份大于计划的月份,那也一定开始学习了;如果年份月份相同,天数大于计划的月份,那一定开始了;注意一点的是,当天也是可以学习的,所以第三种情况包括当天

#include <stdio.h>
int main() {
    int y, m, d;
    int y1, m1, d1;
    scanf("%d %d %d", &y, &m, &d);
    scanf("%d %d %d", &y1, &m1, &d1);
    if(y < y1 || (y == y1 && m < m1) || (y == y1 && m == m1 && d <= d1))
    {
        printf("yes");
    }
    else 
    {
        printf("no");
    }
    return 0;
}

  总结收获锻炼思维和代码能力

  今日的练习就到这里,明天再见啦!


  训言:

  保证理解的前提下,保证质量的前提下,多刷题,最后总结!!!!

  • 41
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 26
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

啊苏要学习

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

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

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

打赏作者

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

抵扣说明:

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

余额充值