0


【牛客刷题】/*日常四道编程小题分享*/

✨✨嗨!欢迎来到令辰柒的博客主页!

🎄🎄系列专栏:【牛客刷题记录站】欢迎订阅!

🍫🍫这里是C语言学习的部分知识,进来的小伙伴麻烦对准知识点喔!

🍤🍤作者简介:一名大二即将升大三的科班小白,我很平凡,但要学会努力!

我的代码存放仓库:🛰️🛰️https://gitee.com/king-zhou-of-java/java-road.git 欢迎关注!

一、最大公约数和最小公倍数求和

🍏问题描述:

小乐乐最近在课上学习了如何求两个正整数的最大公约数与最小公倍数,但是他竟然不会求两个正整数的最大公约数与最小公倍数之和,请你帮助他解决这个问题。

🍊输入描述:

每组输入包含两个正整数n和m。(1 ≤ n ≤ 109,1 ≤ m ≤ 109)输出描述

🍓输出描述:

对于每组输入,输出一个正整数,为n和m的最大公约数与最小公倍数之和。

示例:

输入:

**10 20**

输出:

**30**

🛸问题分析:

这里我们要知道的是最小公倍数=(m*n)/最大公约数;

🚂代码实现:

#include<stdio.h>
int main()
{
   long long m;
   long long n;
   scanf("%d %d",&m,&n);
    long long p= m*n;
    while(n!=0)
    {
       long long t=m%n;
        m=n;
        n=t;
    }
    long long max=m;
    long long min=p/m;
    printf("%lld",max+min);
}

二、空心正方形图案

🍊问题描述:

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的“空心”正方形图案。

🍐输入描述:

多组输入,一个整数(3~20),表示输出的行数,也表示组成正方形边的“*”的数量。

🍇输出描述:

针对每行输入,输出用“”组成的“空心”正方形,每个“”后面有一个空格。

示例:

输入:

**4**

输出:

*** * * * 
*     * 
*     * 
* * * * **

🛰️🛰️问题分析:

这一题我们可以看到用输出了一个正方形周围都是而中间都是空格的图案,那么我们可以定义一个二维数组,然后通过循环打印,控制判断条件,给我们的数组里面的元素赋值为*还是" "。

🚄代码实现:

#include<stdio.h>
void print(int a)
{
    int i,j;
    for(i=0;i<a;i++)
    {
        for(j=0;j<a;j++)
        {
            if(i==0 || i==a-1 || j  == 0  ||  j == a-1)
            { 
                printf("* ");
            }
            else
                printf("  ");
        }
        printf("\n");
    }
}
int main()
{
    int a=0;
    while(scanf("%d",&a)!=EOF)
    {
        print(a); 
    }
    return 0;
}

🚄运行结果:

0852b1836b124d06bc9c89932e3c5ec2.png

三、箭形图案

🍑输入描述:

本题多组输入,每行一个整数(2~20)。

🍈输出描述:

针对每行输入,输出用“*”组成的箭形。

示例1:

输入:

**2**

输出:

**    *
  **
***
  **
    ***

示例2:

输入:

**3**

输出:

**      *
    **
  ***
****
  ***
    **
      ***

🚁🚁问题分析:

这题同样我们要找对方法,我们可以发现这是一个上下对称的图形,所以我们可以先尝试打印上半边的图形,然后同理打印下半边的图形,利用for循环控制打印便可,具体公功能看代码注释。

🌽代码实现:

#include <stdio.h>
int main()
{
    int a;
    while(scanf("%d",&a)!=EOF)//符合循环要求
    {
        for(int i=1;i<=a+1;i++)//根据题目要求先表示出上半个箭头
        {
            for(int j=1;j<=(a+1-i)*2+i;j++)//结合循环和判断确定空格和*的个数
            {
                if(j<=(a+1-i)*2)
                {
                    printf(" ");
                }
                else
                {
                    printf("*");
                }
            }
            printf("\n");//注意换行符的位置;
        }
        for(int m=1;m<=a;m++)//同样的方式表示出下半个箭头
        {
            for(int n=1;n<=m*2+a+1-m;n++)
            {
                if(n<=(m*2))
                {
                    printf(" ");
                }
                else
                {
                    printf("*");
                }
            }
            printf("\n");
         } 
    }
    return 0;
}

🎋🎋运行结果:

9b76d028b06c478887c4640bb98b2396.png

四、公务员面试

🎍问题描述:

公务员面试现场打分。有7位考官,从键盘输入若干组成绩,每组7个分数(百分制),去掉一个最高分和一个最低分,输出每组的平均成绩。

(注:本题有多组输入)

🌲输入描述:

每一行,输入7个整数(0~100),代表7个成绩,用空格分隔。

🌵输出描述:

每一行,输出去掉最高分和最低分的平均成绩,小数点后保留2位,每行输出后换行

示例1:

输入:

99 45 78 67 72 88 60

输出:

73.00

🛳️🛳️问题分析:

这一题较为简单,我们设计sort功能先找出最高分和最低分,然后把七个分数都求出来在减去最高分和最低分,最后求平均值便可,注意我们这里的count = 0; max = 0;small = 100; sum = 0;这四部在我们判断完成后需要重置为初始值!🧂🧂

🍼代码实现:

#include <stdio.h>
int main()
{
    int a, max = 0, small = 100, sum = 0, count = 0;
    while (scanf("%d", &a) != EOF)
    {
        if (a > max)//判定最高分
        {
            max = a;
        }
        if (a < small)//判定最低分
        {
            small = a;
        }
        sum += a;
        count++;//计数器
        if (count == 7)//计数器=7时代表一组的分数好了可以进行计算
        {
            printf("%.2f\n", (sum - max - small) / 5.0);
            count = 0;//重置
            max = 0;//重置
            small = 100;//重置
            sum = 0;//重置
        }
        
    }

    return 0;
}

🥛🥛运行结果:

79253449334349378e9dd949042213de.png

** 好了,今天的刷题分析就到这里了,感谢阅读!💝**

e3fe23403b454190bc45918ebfa055b4.jpeg


本文转载自: https://blog.csdn.net/m0_62426532/article/details/125860652
版权归原作者 令辰柒 所有, 如有侵权,请联系我们删除。

“【牛客刷题】/*日常四道编程小题分享*/”的评论:

还没有评论