首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【C语言刷题】第六天:继续加量加餐,代码题训练,熟练IO模式

【C语言刷题】第六天:继续加量加餐,代码题训练,熟练IO模式

作者头像
艾莉丝努力练剑
发布2025-11-13 09:26:18
发布2025-11-13 09:26:18
1160
举报
文章被收录于专栏:C / C++C / C++

🔥个人主页艾莉丝努力练剑 ❄专栏传送门:《C语言》《数据结构与算法》C语言刷题12天IO强训 🍉学习方向:C/C++方向 ⭐️人生格言:为天地立心,为生民立命,为往圣继绝学,为万世开太平

前言:上一篇博客又带大家刷了一些相对来说简单的代码题目,本篇文章我们将继续练习下面的题目。刷前提醒:从本文开始会有大量图案打印题,有的题目挖了大坑,大家做的时候要留意,如果做不出来,看了代码演示后要自己多敲几遍,去理解代码的逻辑。 宇宙安全声明:鉴于博主能力有限,本专栏适用于代码小白刷题,大佬们多多包涵(抱拳)!

正文

一、衡量人体胖瘦程度

BC52 衡量人体胖瘦程度

这道题没什么好说的,我们输入时可以是整型也可以是浮点型,都可以,博主都展示一下——

(1)浮点型:

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    float weight = 0.0;
    float height = 0.0;
    while(scanf("%f %f",&weight,&height) != EOF)
    {
        double bmi = weight/(height*height/100/100);
        if(bmi < 18.5)
        {
            printf("%s\n","Underweight");
        }
        else if(bmi >= 18.5 && bmi <= 23.9)
        {
            printf("%s\n","Normal");
        }
        else if(bmi > 23.9 && bmi <= 27.9)
        {
            printf("%s\n","Overweight");
        }
        else if(bmi > 27.9)
        {
            printf("%s\n","Obese");
        }
    }
    return 0;
}

(2)整型 :

代码语言:javascript
复制
#include <stdio.h>

int main()
{
    int weight = 0;
    int height = 0;
    while (scanf("%d %d", &weight, &height) != EOF)
    {
        double bmi = weight / (height * height / 100.0 / 100.0);
        if (bmi < 18.5)
        {
            printf("%s\n", "Underweight");
        }
        else if (bmi >= 18.5 && bmi <= 23.9)
        {
            printf("%s\n", "Normal");
        }
        else if (bmi > 23.9 && bmi <= 27.9)
        {
            printf("%s\n", "Overweight");
        }
        else if (bmi > 27.9)
        {
            printf("%s\n", "Obese");
        }
    }
    return 0;
}

1、本题是多组输入; 2、浮点数除法要保证除号的两端至少有一个浮点数,也就是说,要不除数是浮点数,要不被除数是浮点数,或者都是浮点数,反正至少得有一个是浮点数 。

二、计算一元二次方程

BC53 计算一元二次方程

代码语言:javascript
复制
#include <stdio.h>
#include <math.h>
int main()
{
    float a = 0.0;
    float b = 0.0;
    float c = 0.0;
    while (scanf("%f %f %f", &a, &b, &c) != EOF)
    {
        if (a != 0)
        {
            float disc = b * b - 4 * a * c;
            if (disc > 0.0)
            {
                printf("x1=%.2f;x2=%.2f\n",
                    (-b - sqrt(disc)) / (2 * a),
                    (-b + sqrt(disc)) / (2 * a)
                );
            }
            else if (disc < 0.0)
            {
                printf("x1=%.2f-%.2fi;x2=%.2f+%.2fi\n",
                    (-b) / (2 * a), sqrt(-disc) / (2 * a),
                    (-b) / (2 * a), sqrt(-disc) / (2 * a));
            }
            else
            {
                printf("x1=x2=%.2f\n", (-b) / (2 * a)+0.00);
            }
        }
        else
        {
            printf("Not quadratic equation\n");
        }
    }
    return 0;
}

1、多组输入; 2、根据不同的限制条件给出相应的计算结果; 3、小点数后位数有限制。

三、获取月份天数

BC54 获得月份天数

这道题要结合我们学过的求闰年来写,不会求闰年的可以去看我的这篇博客——

掌握分支与循环(一):if语句、三种操作符、switch语句

1、还是多组输入 ; 2、判断闰年,如果是闰年,2月多一天,其他都正常——

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    int year = 0;
    int month = 0;
    int days[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
    while(scanf("%d %d",&year,&month) != EOF)
    {
    int day = days[month-1];
    if((year%4 == 0 && year%100 != 0) || (year%400 == 0))
    {
        if(month == 2)
           day += 1;
    }
        printf("%d\n",day);
    }
    return 0;
}

四、简单计算器

BC55 简单计算器

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    double n1 = 0.0;
    double n2 = 0.0;
    char operation = '0';
    while(scanf("%lf %c %lf",&n1,&operation,&n2) != EOF)
    {
        switch(operation)
        {
            case'+':
            printf("%.4lf+%.4lf=%.4lf",n1,n2,n1+n2);
            break;
            case'-':
            printf("%.4lf-%.4lf=%.4lf",n1,n2,n1-n2);
            break;
            case'*':
            printf("%.4lf*%.4lf=%.4lf",n1,n2,n1*n2);
            break;
            case'/':
            if(n2 == 0.0)
                printf("Wrong!Division by zero!\n");
            else
                printf("%.4lf/%.4lf=%.4lf",n1,n2,n1/n2);
            break;
            default:
                printf("Invalid operation!\n");
            break;
        }
    }
    return 0;
}

1、多组输入; 2、按照格式接收,按照要求编写代码就行; 3、 switch语句。

五、线段图案

BC56 线段图案

1、多组输入; 2、每次打印一个*,按照输入的个数打印后换行就行 。

博主能想到的有两种写法——

写法(1):

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    int n = 0;
    while(scanf("%d",&n)!=EOF)
    {
        char m = '*';
        for(int i = 0;i < n;i++)
        {
            printf("%c",m);
        }
        printf("\n");
    }
    return 0;
}

写法(2):

代码语言:javascript
复制
#include<stdio.h>

int main()
{
    int n = 0;
    while(scanf("%d",&n)!=EOF)
    {
        for(int i = 0;i < n;i++)
        {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

六、正方形图案

BC57 正方形图案

1、多组输入; 2、每组是由n组*+空格组成。

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    int n = 0;
    while(scanf("%d",&n) != EOF)
    {
        for(int i = 0;i < n;i++)
        {
            for(int j = 0;j < n;j++)
            {
                printf("* ");
            }
         printf("\n");
        }
    }
    return 0;
}

七、直角三角形图案

BC58 直角三角形图案

1、多组输入; 2、每一行的输出要有计算清楚。

初始化成0或1都可以,for循环里相应做出改变就行了——

(1)初始化为0

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    int n = 0;
    while(scanf("%d",&n) != EOF)
    {
        int i = 0;
        for(i = 0;i < n;i++)
        {
            int j = 0;
            for(j = 0;j <= i;j++)
            {
                printf("* ");
            }
          printf("\n");
        }
    }
    return 0;
}

(2)初始化为1

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    int n = 0;
    while(scanf("%d",&n) != EOF)
    {
        int i = 0;
        for(i = 1;i <= n;i++)
        {
            int j = 0;
            for(j = 1;j <= i;j++)
            {
                printf("* ");
            }
          printf("\n");
        }
    }
    return 0;
}

八、翻转直角三角形图案

BC59 翻转直角三角形图案

1、多组输入; 2、每两个*中间有空格,要注意,之后我们可能会碰到要打印两个空格的情况; 3、控制好一行输出的内容。

(1)j++

代码语言:javascript
复制
#include <stdio.h>

int main()
{
    int n = 0;
    while(scanf("%d",&n) != EOF)
    {
        int i = 0;
        for(i =0;i < n;i++)
        {
            int j = 0;
            for(j = 0;j < n - i;j++)
            {
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}

(2)j- -

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    int n = 0;
    while(scanf("%d",&n) != EOF)
    {
        int i = 0;
        for(i = n;i >= 1;i--)
        {
            int j = 0;
            for(j = i;j >= 1;j--)
            {
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}

九、带空格直角三角形图案

BC60 带空格直角三角形图案

1、多组输入; 2、写法(1)中 i + j 理解的配图 :

在红色三角范围内的每个坐标上,横纵坐标之和小于n-1的。

两种写法——

写法(1):

代码语言:javascript
复制
#define  _CRT_SECURE_NO_WARNINGS  1

#include<stdio.h>

int main()
{
    int n = 0;
    while(scanf("%d",&n) != EOF)
    {
        int i = 0;
        int j = 0;
        for(i = 0;i < n;i++)
        {
            for(j = 0;j < n;j++)
            {
                if(i + j < n - 1)
                {
                    printf("  ");
                }
                else 
                {
                    printf("* ");
                }
            }
            printf("\n");
        }
    }
	return 0;
}

写法(2):

代码语言:javascript
复制
#include<stdio.h>

int main()
{
    int n = 0;
     while(~scanf("%d",&n))
     {
        int i = 0;
        for(i = 0;i < n;i++)
        {
            int j = 0;
            for(j = 0;j < n-1-i;j++)
            {
                printf("  ");
            }
            for(j = 0;j <= i;j++)
            {
                printf("* ");
            }
            printf("\n");
        }
     }
}

十、金字塔图案

BC61 金字塔图案

1、多组输入; 2、每一行的前边应该是空格,后边是*+空格,控制好个数就行。

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    int n = 0;
    while(scanf("%d",&n) != EOF)
    {
        int i = 0;
        for(i = 0;i < n;i++)
        {
            int j = 0;
            for(j = 0;j <n - 1 -i;j++)
            {
                printf(" ");
            }
            for(j = 0;j <= i;j++)
            {
                printf("* ");
            }
                printf("\n");
        }
    }
    return 0;
} 

后面会有一道题考你倒金字塔,大家也要会写。


结尾

往期回顾:

【C语言刷题】第五天:继续加量加餐,代码题训练,熟练IO模式

【C语言刷题】第四天:继续加量加餐,代码题入门,熟练IO模式

【C语言刷题】第三天:继续加量加餐,代码题入门,熟练IO模式

【C语言刷题】第二天:加量加餐,代码入门,熟悉IO模式

【C语言刷题】第一天:简单代码入门,熟悉IO模式

结语:本篇文章带大家刷了十道题目,开始出现成堆的图案题了,大家要结合二维数组的图像,认真思考一下,就能想出来。本文到这里就结束了,希望对友友们有所帮助。本文的代码相对于之后的代码题还是很简单的,小白也能直接上手操作,后面的代码题难度上整体是逐渐递增的,博主控制了难度,这样友友们能比较丝滑地上手敲下去。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正文
    • 一、衡量人体胖瘦程度
    • 二、计算一元二次方程
    • 三、获取月份天数
    • 四、简单计算器
    • 五、线段图案
    • 六、正方形图案
    • 七、直角三角形图案
    • 八、翻转直角三角形图案
    • 九、带空格直角三角形图案
    • 十、金字塔图案
  • 结尾
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档