写C代码的一些感受

大家好,本人刚上大一,就读于一所双非院校的机械类专业,但我对计算机和编程都很感兴趣,为此我在打算在寒假时间自学c语言,在B站上看一些视频,也刷了一些编程题。感觉很有成就感,虽然都是最基础简单的一些代码。就比如下面这道题。

变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。

例如:

655 = 6 * 55 + 65 * 5

1461 = 1*461 + 14*61 + 146*1

求出 5位数中的所有 Lily Number。

我最开始是这样写的

#include<stdio.h>
int sum(int a,int b,int c,int d,int e)
{
    int q = a, w = b, y = c, r = d, t = e;
    return q * 10000 + w * 1000 + y * 100 + r * 10 + t;
}
int main()
{
    int a = 1, b, c, d, e = 0;
    for (a = 1; a < 9; a++)
    {
        for (b = 0; b < 9; b++)
        {
            for (c = 0; c < 9; c++)
            {
                for (d = 0; d < 9; d++)
                {
                    for (e = 0; e < 9; e++)
                    {
                        if (sum(a, b, c, d, e) == a * sum(0, b, c, d, e) + sum(0, 0, 0, a, b)*sum(0, 0, c, d, e) + sum(0, 0, a, b, c)*sum(0, 0, 0, d, e) + sum(0, a, b, c, d)*e)
                            printf("%d ", sum(a, b, c, d, e));
                    }
                }
            }
        }
    }
    return 0;
}

太麻烦了,后来研究了一下发现一个规律🤔例如:12345可分为12345/10,12345%10,得到1234与5,同理12345/100,12345%100...然后得到下面的代码。

#include<stdio.h>
int main()
{
	int number, j;
	for (number = 10000; number < 99999; number++)
	{
		int sum = 0;
		for (j = 10; j <= 10000; j = j * 10)
		{
			sum = sum + (number / j)*(number%j);//灵活运用整除与取模将数字拆分
		}
		if (sum == number)
			printf("%d ", number);
	}
	return 0;
}

这样就简单多了,应充分应用计算机运算速度快的优点,让单调重复的工作让机器去完成。

在学习各种计算机语言时都应该多思多想,培养自己的计算机思维。

我在学习的过程中也感到过迷茫,但我相信只要我们不断努力,就一定能实现我们的理想。拿一个好offer,过上幸福生活。让我们一起努力,加油!🤗

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

...404 Not Found

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值