今日备战蓝桥杯,把一些题目及自己的见解写在下面,如有错误,欢迎掘友指出。
第一题题目如图所示:
这时需要定义三个变量,用来存储个位数、十位数和百位数数字,利用for语句进行三次循环,当且仅当个位数、十位数、百位数上面的数字互不相同时,进行输出操作。代码如下所示:
int main()
{
int i, j, k;
printf("\n");
for (i = 1; i < 5; i++)
for (j = 1; j < 5; j++)
for (k = 1; k < 5; k++)
{
if (i != k && i != j && j != k) /*确保i、j、k三位互不相同*/
printf("%d%d%d\n", i, j, k);
}
return 0;
}
第二题题目如图所示:
为帮助理解题意,不妨用图把题目中的信息表示出来:
这时,定义一个变量i用于存储输入的信息(即利润),再用几个变量分别记录当利润达到10w、20w、40w、60w、100w时对应的奖金,计算输入的利润和他所在的利润范围的下限之差,然后与该范围的提成和下限对应的奖金之和即为所求,代码见下:
#include <stdio.h>
int main()
{
long int i;
int bonus1, bonus2, bonus4, bonus6, bonus10, bonus;
scanf_s("%ld", &i);
bonus1 = 10 * 0.1;
bonus2 = bonus1 + 100000 * 0.075;
bonus4 = bonus2 + 200000 * 0.05;
bonus6 = bonus4 + 200000 * 0.03;
bonus10 = bonus6 + 400000 * 0.015;
if (i <= 100000)
bonus = i * 0.1;
else if (i <= 200000)
bonus = bonus1 + (i - 100000) * 0.075;
else if (i <= 400000)
bonus = bonus2 + (i - 200000) * 0.05;
else if (i <= 600000)
bonus = bonus4 + (i - 400000) * 0.03;
else if (i <= 1000000)
bonus = bonus6 + (i - 600000) * 0.015;
else
bonus = bonus10 + (i - 1000000) * 0.01;
printf("bonus=%d", bonus);
return 0;
}
第三题题目如图所示:
求解这一题的核心思想就是:完全平方数的算数平方根的平方等于他自身,我们假设这个数在1——1000,0000之间,所以从1遍历到1000,0000,在遍历过程中只要有满足条件的数,循环立即结束,最后当i等于1000,0000时,若还没有输出且返回值为-1,则说明这个数不存在或者至少可以说明这个数在1——1000,0000之间不存在,若有输出且返回值为0,则输出值就是这个数。(本人认为该题无答案,如有错误,期待掘友指出。)
#include <stdio.h>
#include <math.h>
int main()
{
int x, y;
long int i;
for (i = 1; i < 10000000; i++)
{
x = sqrt(i + 100);
y = sqrt(i + 268);
if (x * x == i + 100 && y * y == y + 268)
{
printf("%ld ", i);
break;
}
}
if (i == 10000000)
return -1;
else
return 0;
}
今天就先写这三题吧,第二题和第三题感觉和数学知识有关,程序写不出来或许是相关数学知识不了解,当然这几道题都相对简单,今天就先这样吧,后面继续努力!