前言:
距离第一次发的blog已经快一个多月了,我对“C天取经”之路的不易早就下好心理预设,没想到还是被打的有点猝不及防,“C天取经”的第一难就这么来了——竞赛班的选拔。
正文:
国庆前,当已经学完数组的我,遇上竞赛班的模拟题时,尽管不是一次性的写完运行出来,但还是有些思路,磕磕绊绊的敲了出来(题目如下)。
【1】红玫瑰数练习
题目:一个红玫瑰数,每个位数的四次方等于原数,求1—10000中的红玫瑰数。
(其实刚开始的我不懂得太多的计算机思维,头铁纯粹硬打,利用数学逻辑一一列举讨论了出来)
就有了我人生第一个写出的练习题代码:
【纯数学思维】:
#include <stdio.h>
#include <math.h>
int main() {
printf("输出1-10000之中的红玫瑰数\n");
for (int a = 1; a <= 10000; a++)
{
if (a < 10 && pow(a, 4) == a)
{
printf("%d\n", a);\\排查1-9的数
}
else if (10 <= a && a < 100 && pow(a / 10, 4) + pow(a % 10, 4) == a)
{
printf("%d\n", a);\\排查10-99的数
}
else if (100<=a&&a < 1000 && pow((a / 100), 4) + pow((a/10)%10, 4) + pow((a%10),4)==a)
{
printf("%d\n", a);\\排查100-999的数
}
else if(1000<=a&&a<10000&& pow((a / 1000), 4) + pow(( a / 100)% 10, 4) + pow((a /10)%10, 4)+ pow((a % 10), 4) == a)
{
printf("%d\n", a);\\排查1000-9999数
}
else if(a==10000&&pow(1,4)==10000)
{
printf("%d\n", a);\\排查100000
}
}
return 0;
}
(后面在询问过老师与网络查找后,就有了第二个代码)
【编程思维】:
#include <stdio.h>
int main() {
printf("输出1-10000之内的红玫瑰数\n");
for (int num = 1; num < 10000; num++)
{
int sum = 0;
int origin = num;//因为下面进行循环后会对原始的num进行篡改,所以要保留原来值
int c = num;//下面会对num进行篡改所以要另取一个值,去进行下面的循环
do
{
int b = c % 10;//取余数——相当于依次取尾数位 eg:1234---->4
int d = b*b*b*b;//进行每个位数的四次方运算 d=4*4*4*4
sum += d;//用于每一位的次方后的相加 ......
c /=10;//除去尾数位 1234---->123
} while (c != 0);//先执行再判断
if(sum==origin)
{
printf("%d\n", origin);
}
}
return 0;
}
小结:
从中学到了思维的转换,尽管不多。
【2】水仙花数练习
题目:水仙花是指一个3位数,他的每一个位数上的数字的立方和等于它本身,例如:153=1^3+5^3+3^3。给定整数l,r,【l,r】方位内的请你输出所有范围内的水仙花数。
(不久后第二个模拟题就来了,有着上次的经验,尽管打出来后的代码还有很多语法毛病,但是依旧十分的有成就感)
#include <stdio.h>
int main()
{
int l = 1; int r = 1;
int muh = 0; int sum = 0;
printf("请输入l与r的值(l<r):");
scanf_s("%d %d",&l,&r);
for (int num = l + 1; num < r; num++)
{
sum = 0;
int origin = num;
int c = num;
while (c != 0)
{
int a = c % 10;
int b = a * a * a;
sum += b;
c /= 10;
}
if (origin == sum)
{
muh++;
}
}
if (muh == 0)
{
printf("no \n");
}
else
{
printf("\n范围内水仙花的个数为:%d\n", muh);
}
return 0;
}
)
取经之路怎么可能这么简单呢?
果不其然,十月八号的真正考试选拔让我真正的看清了自己的水平,考完的那一晚,道心破碎,秋天晚上凛冽的风都熄灭不了内心的狂躁,说实话打击很大,后劲也很大。
(具体题目路径如下:蓝桥云课中的竞赛题)
本人还未搞明白,“C天取经第一难”未完待续......
赠(自己与路过的那个陌生人):
路虽远,行则将至;事虽难;做则必成。
望与诸君共勉之