【牛客刷题】/*开胃菜——简单四道编程题*/

简介: 【牛客刷题】/*开胃菜——简单四道编程题*/

🎋🎋hello,大家好!学习编程语言的过程中我们不仅要学好语法,更要通过刷题来提高对知识的掌握熟练度,那么今天就给大家分享四道编程小题,方便大家卷的很累的时候开个小胃!🍱🍱

🛸🛸老规矩,看完麻烦一键三连支持一下啦!🦀🦀

🍎问题描述

   🍊输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。

🍎输入描述:

输入包含三行,

第一行包含两个正整数n, m,用空格分隔。n表示第二行第一个升序序列中数字的个数,m表示第三行第二个升序序列中数字的个数。

第二行包含n个整数,用空格分隔。

第三行包含m个整数,用空格分隔。

🍓输出描述:

输出为一行,输出长度为n+m的升序序列,即长度为n的升序序列和长度为m的升序序列中的元素重新进行升序序列排列合并。

🍋示例1

🍼输入:

   5 6

   1 3 7 9 22

   2 8 10 17 33 44

🍖输出:

   1 2 3 7 8 9 10 17 22 33 44

🍏🍏代码实现:

   #include<stdio.h>

   int main()

   {

       int n, m;

       scanf("%d %d\n", &n, &m);

       int i, j,arr[2000];

       int tmp;

       for(i=0; i<n; i++)

       {

           scanf("%d ", &arr[i]);

       }

       for(i=n; i<n+m; i++)

       {

           scanf("%d ", &arr[i]);

       }

       for(i=0; i<n+m; i++)

       {

           for(j=0; j<n+m-i-1; j++)

           {

               if(arr[j] > arr[j+1])

               {

                   tmp = arr[j];

                   arr[j] = arr[j+1];

                   arr[j+1] = tmp;

               }

           }

       }

       for(i=0; i<n+m; i++)

       {

           printf("%d ", arr[i]);

       }

   }

   🍐🍐代码解读:根据题目要求,我们定义两个变量m,n,一个数组arr,首先我们通过两个for循环来输入我们要排序的元素,然后通过if+条件判断来交换元素的顺序,最后循环打印出我们的结果就可以了,非常简单🍔🍔

二、更改0/1数字

🛥️🛥️问题描述:

   小乐乐喜欢数字,尤其喜欢0和1。他现在得到了一个数,想把每位的数变成0或1。如果某一位是奇数,就把它变成1,如果是偶数,那么就把它变成0。请你回答他最后得到的数是多少。

🚁🚁输入描述:

输入包含一个整数n (0 ≤ n ≤ 109)

⛴️⛴️输出描述:

输出一个整数,即小乐乐修改后得到的数字。

🚢🚢示例1

输入:

222222

输出:

0

🛷🛷示例2

🍢输入:

123

🍡输出:

101

🍵问题分析:那么题目要求我们将偶数位置全部置为0,奇数位全部置为1,那么通过%2取余法便可解决,一个n位数的每一位我们也可设计方法求解,请看代码:

   #include<math.h>

   #include<stdio.h>

   int main()

   {

    int n = 0;

    int sum = 0;

    int ret = 0;

    int i = 0;

    scanf("%d", &n);

    while (n)

    {

     sum = n%10;

     if (sum %2 == 0)

     {

      sum = 0;

     }

     else

     {

      sum = 1;

     }

     ret += sum * pow(10, i++);

     n /= 10;

    }

     printf("%d ", ret);

   

   }

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

🚞🚞问题描述:

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

🚈输入描述:

多组输入,一个整数(2~20),表示直角三角形直角边的长度,即“*”的数量,也表示输出行数。

🚄输出描述:

针对每行输入,输出用“*”组成的对应长度的直角三角形,每个“*”后面有一个空格。

🚉🚉示例1

🍧输入:

5

🍱输出:

           *  

         * *  

       * * *  

     * * * *  

   * * * * *

🛩️🛩️示例2

☕输入:

4

🍯输出:

         *  

       * *  

     * * *  

   * * * *

⛵⛵代码实现:

   #include<stdio.h>

   int main()

   {

    int a = 0;

    while (scanf("%d", &a)!=EOF)

    {

     int i = 0;

     int s = 0;

     for (s = 0; s < a; s++)

     {

      for (i = 0; i < (a- s - 1); i++)

      {

       printf("  ");

      }

      for (int j = 0; j <= s; j++)

      {

       printf("* ");

      }

      printf("\n");

     }

    }

   }

✈️✈️代码解读:

   这题的关键在于我们可以把一个*和一个空格当做一个元素来看待,printf("  ")和printf("* ")当做一个元素来看,由于是一个正方形的右半边(三角形),所以我们先通过for循环打印两个空格,然后在依次打印* 便可。🍶🍶

四、简单网购

🚤🚤问题描述:

   KiKi非常喜欢网购,在一家店铺他看中了一件衣服,他了解到,如果今天是“双11”(11月11日)则这件衣服打7折,“双12” (12月12日)则这件衣服打8折,如果有优惠券可以额外减50元(优惠券只能在双11或双12使用),求KiKi最终所花的钱数。

🚟🚟输入描述:

   一行,四个数字,第一个数表示小明看中的衣服价格,第二和第三个整数分别表示当天的月份、当天的日期、第四个整数表示是否有优惠券(有优惠券用1表示,无优惠券用0表示)。 注:输入日期保证只有“双11”和“双12”。

🍻🍻输出描述:

一行,小明实际花的钱数(保留两位小数)。(提示:不要指望商家倒找你钱)

🍬示例1

🍭输入:

   1000.0 11 11 1

🍫输出:

   650.00

    🍤🍤问题思路非常简单,我们依次输入商品价格,然后通过if条件语句判断,要注意的点是我们每次判断之后都要输入我们的结果,因为判断完毕后程序就结束了,已经达到我们的预期效果了,还有就是要注意控制输出格式,保留两位小数,用   %.2f   !!!🍼🍼

🍇🍇代码实现:

   #include<stdio.h>

   int main()

   {

    float a = 0;

    int b, c, d;

    scanf("%f %d %d %d", &a, &b, &c, &d);

   

    if (b == 11 && c == 11)

    {

     a *= 0.7;

     if (d == 1)

     {

      a -= 50;

      if (a <= 0)

      {

       float  a = 0;

       printf("%.2f", a);

   

      }

      else

      {

       printf("%.2f", a);

      }  

     }

     else

     {

      printf("%.2f", a);

     }

   

    }

   

    else if (b == 12 && c == 12)

    {

     a *= 0.8;

     if (d == 1)

     {

      a -= 50;

      if (a <= 0)

      {

       float  a = 0;

       printf("%.2f", a);

      ;

      }

      else

      {

       printf("%.2f", a);

      }  

     

     }

     else

     {

      printf("%.2f", a);

     }  

   

    }

     else

     {

      printf("输入错误\n");

     }

    return 0;

   }

相关文章
|
2月前
2020-8-26 剑指offer编程小哥令狐 075211
2020-8-26 剑指offer编程小哥令狐 075211
23 1
|
算法 C++ Python
【每日算法Day 87】今天我脱单了,所以大家不用做题了!
【每日算法Day 87】今天我脱单了,所以大家不用做题了!
125 0
|
算法 C++ Python
【每日算法Day 107】面试必考:良心推荐,一题三解,不看后悔一辈子
【每日算法Day 107】面试必考:良心推荐,一题三解,不看后悔一辈子
128 0
|
机器学习/深度学习 人工智能 算法
牛客寒假算法基础集训营1 思考+题解
众所周知,2022年是四年一度的世界杯年,那么当然要整点足球题。本题需要你模拟一次点球大战。 假设对战双方为A和B,则点球大战中双方会按照ABABABABAB方式来罚点球,即两队交替罚点球、各罚五次、A队先罚。点球有罚进和罚不进两种结果,罚中的一方加一分。
100 0