C语言 - 利用 汇编思想 写一个数的平方

本文介绍了如何运用汇编思维来快速计算两位数的平方,包括个位为1-3、4-8、5以及9的情况。通过不同的计算公式,简化了平方运算的过程,便于心算。例如,对于个位是1、2、3的数,可以将原数加上个位数再乘以十位数,然后添加个位数的平方。对于个位是5的数,只需将十位数加1后乘以十位数,再添加25。对于个位是9的数,使用(这个数加1)的平方减去(这个数加1)的2倍,再加1即可得到平方结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:如标题,汇编思想的解释在文章的最后
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	int a, b;

	printf("请输入一个两位数:");
	scanf("%d", &a);

	if ((a%10 > 0) && (a%10 <= 3))
	{
		b = ((a + (a%10)) * (a / 10)) * 10 + ((a%10)*(a%10));
	}
	else if ((a%10 != 5) && (a%10 != 9))
	{
		b = (((a + (a%10)) * (a / 10)) + (((a%10)*(a%10)) /10)) * 10 + (((a%10)*(a%10)) % 10);
	}
	else if (a%10 != 9)
	{
		b = (((a/10)+1) * (a/10)) * 100 + 25;
	}
	else
	{
		b = ((a+1) * (a+1)) - ((a+1) * 2) +1;
	}
	if(a%10 == 0)
	{
		(a / 10) * (a / 10) * 100;
	}

	printf("%d", b);

        printf("\n");
        system("pasue");
	return 0;
}



/*
一般两位数的平方,都可以用这样的方法来计算:用这个数加它的个位数再乘以它的十位数,将得数乘10,然后加个位数的平方即可。

  就是所谓的“本数加其尾,乘头居首位,为求平方积,再加尾乘尾。”

  个位为1、2、3的两位数的平方计算方法:
  对于个位是1、2、3的两位数,可以用这个数加它的个位数再乘以它的十位数,最后在算出的得数后面添加个位数的平方即可。
  例如:  求23的平方,将23加3得26,26再乘2得52,52后面添加3的平方9,即可得529,这就是23平方的得数。
  再比如求52的平方,可将52加2得54,再乘以5得270,后面添加2的平方4,即可得2704。

  个位是4、6、7、8的两位数。
  这一组两位数的平方计算法和第一组两位数平方的计算法相似,不同之处是因为这一组两位数个位的平方均超过10,所以在最后添加个位数的平方时须把它的十位数进到末位那个数,再把它的个位数添列到后面。
  例如:  求26的平方,26 + 6 得 32 ,32×2得 64,因为个位数6的平方是36 ,须将3进到末一位,所以,64 + 3得67 ,67后面添加6得676,这就是26的平方结果。
  再比如求48的平方,48 + 8 得56 ,56×4得224,224+6 (64的十位数)得 230 ,230后面添加 4 (64的个位数),即得 2304 。
  
以上算法看似步骤多些,但都是极易心算的,熟练之后会觉得非常的简便快捷。
  对于个位是 5 的两位数,当然也可以用上述方法心算,还有一种更简便的方法: 只须将十位数加1再乘十位数,后边再添加 25 即可得出结果。
  例如求 45 的平方,用4 乘5 (4+1)得 20 ,20 后面添加 25 ,即可得出 2025 ,就是 45 的平方。
  再如求 85 的平方,8×9 得 72,后面添加 25 ,即得 7225 。
  此法还可用于一些易算的三位数的平方,如求 105 的平方,10×11得 110 ,那么 105 的平方就是 11025 了; 求205的平方,20×21得 420 ,那么 205 的平方就是 42025 了。

  最后我们来看个位是9的两位数的平方心算法。
  个位是9的两位数计算平方时,可用“这个数加1”的平方,减去“这个数加1”的2倍,再加1即可得出结果。
  例如求 29 的平方,“ 29+1 ”的平方是 900 ,减去“ 29+1 ”的2倍60 ,得数是 840 ,再加1得 841 。
  再比如求 59 的平方,60的平方是 3600 ,减去60的2倍得3480,最后加1即得 3481 
*/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值