BC116-小乐乐改数字
描述
小乐乐喜欢数字,尤其喜欢0和1。他现在得到了一个数,想把每位的数变成0或1。如果某一位是奇数,就把它变成1,如果是偶数,那么就把它变成0。请你回答他最后得到的数是多少。
输入描述:
输入包含一个整数n (0 ≤ n ≤ 109)
输出描述:
输出一个整数,即小乐乐修改后得到的数字。
核心思想:不断模10除10拿到每一位,判断奇偶,用结果乘以10的n次方并加到最后结果上
#include <stdio.h>
#include <math.h>
int main()
{
int input = 0;
int sum = 0;
int i = 0;
scanf("%d", &input);
while (input)
{
int bit = input % 10;
if (bit % 2 == 1)
{
sum += pow(10, i);
}
i++;
input /= 10;
}
printf("%d\n", sum);
return 0;
}
BC60-带空格直角三角形图案
描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的带空格直角三角形图案。
输入描述:
多组输入,一个整数(2~20),表示直角三角形直角边的长度,即“*”的数量,也表示输出行数。
输出描述:
针对每行输入,输出用“*”组成的对应长度的直角三角形,每个“*”后面有一个空格。
核心思想:根据行号和列号的关系确定什么时候打印空格或者*
#include <stdio.h>
int main()
{
int n = 0;
while (scanf("%d", &n) == 1)
{
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;
}
BC37-网购
描述
KiKi非常喜欢网购,在一家店铺他看中了一件衣服,他了解到,如果今天是“双11”(11月11日)则这件衣服打7折,“双12” (12月12日)则这件衣服打8折,如果有优惠券可以额外减50元(优惠券只能在双11或双12使用),求KiKi最终所花的钱数。
数据范围:衣服价格满足 1 \le val \le 100000 \1≤val≤100000
输入描述:
一行,四个数字,第一个数表示小明看中的衣服价格,第二和第三个整数分别表示当天的月份、当天的日期、第四个整数表示是否有优惠券(有优惠券用1表示,无优惠券用0表示)。 注:输入日期保证只有“双11”和“双12”。
输出描述:
一行,小明实际花的钱数(保留两位小数)。(提示:不要指望商家倒找你钱)
核心思想:两个逻辑判断双十一和双十二,一个逻辑判断是否有优惠券,同时注意要防止商家倒贴钱
#include <stdio.h>
int main()
{
double price = 0.0;
int m = 0;
int d = 0;
int flag = 0;
scanf("%lf %d %d %d", &price, &m, &d, &flag);
if (m == 11 && d == 11)
{
price = price * 0.7 - flag * 50;
}
else if(m == 12 && d == 12)
{
price = price * 0.8 - flag * 50;
}
if (price < 0.0)
printf("%.2lf\n", 0);
else
printf("%.2lf\n", price);
return 0;
}
猜名次
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
核心思想:n重循环代表n个人的所有可能性,同时要排除名词相同的情况
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
int f = 0;
for (a = 1; a <= 5; a++)
{
for (b = 1; b <= 5; b++)
{
for (c = 1; c <= 5; c++)
{
for (d = 1; d <= 5; d++)
{
for (e = 1; e <= 5; e++)
{
if(((b == 2) + (a == 3) == 1)
&& ((b == 2) + (e == 4) == 1)
&& ((c == 1) + (d == 2) == 1)
&& ((c == 5) + (d == 3) == 1)
&& ((e == 4) + (a == 1) == 1))
{
if (a * b * c * d * e == 120)
{
printf("a=%d b=%d c=%d d=%d e=%d", a, b, c, d, e);
}
}
}
}
}
}
}
return 0;
}
![](https://img-blog.csdnimg.cn/img_convert/a6a0ca930692fda1b706853d134664ea.png)
合格的程序员是一名成熟的侦探
猜凶手
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。
以下为4个嫌疑犯的供词:
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话。
现在请根据这些信息,写一个程序来确定到底谁是凶手。
核心思想:一重循环遍历所有可能,用一个判断条件锁定可能性
#include <stdio.h>
int main()
{
int killer = 0;
for (killer = 'a'; killer <= 'c'; killer++)
{
if ((killer != 'a') + (killer == 'c') + (killer == 'd') + (killer != 'd') == 3)
printf("%c\n", killer);
}
return 0;
}
![](https://img-blog.csdnimg.cn/img_convert/d47c8e0a1047f312634f87a253b65ac4.png)
杨辉三角
在屏幕上打印杨辉三角。
1
1 1
1 2 1
1 3 3 1
……
规律:下面一个数字是肩膀上两个数字的和
核心思想:打印一个下三角阵列,用判断条件来决定是初始化的数值还是根据上一行的数据进行计算
#include <stdio.h>
int main()
{
int arr[10][10] = { 0 };
int i = 0;
int j = 0;
for (i = 0; i < 10; i++)
{
for (j = 0; j <= i; j++)
{
if (j == 0)
arr[i][j] = 1;
else if (i == j)
arr[i][j] = 1;
if (i >= 2 && j >= 1)
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
for (i = 0; i < 10; i++)
{
for (j = 0; j <= i; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
![](https://img-blog.csdnimg.cn/img_convert/d80142c6f39b1aa7ff2bc35ff61caf19.png)