🎋🎋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;
}