赞
踩
将两个两位的正整数a,b合并成一个整数c,将a的十位和个位一次放在c的千位和十位,将b的十位和个位放在c的的百位和个位上。
例:a=45,b=12,则c=4152
我们会用到除法运算和求模运算
/ :除法,整型数除以整型数,结果一定是整数
% : 求模(余数)
例:x%y求的就是x除以y余数是多少
大体思路:
求出数字c每个数位上的数字,再相加。
a的十位就是c的千位,因为a是一个两位的整数,所以我们直接用a除以10 ,得数就是c千位数位上的数字
b的十位就是c的百位,同样b也是一个两位整数,直接用b除以10,得数就是c百位数位上的数字
a的个位就是c的十位,直接模以10,取余数,得数就是c的十位数位上的数字
b的个位就是c的个位,也是直接模以10,取余数,得数就是c的个位上的数字
求每个数位上的数字的详细内容请参考“水仙花数”
理论存在,演练一下
- #include <stdio.h>
- int main()
- {
- //变量c_q代表c的千位,变量c_b代表c的百位,十位个位以此类推
- int a, b, c, c_q, c_b, c_s, c_g;
- printf("请输入a的值: ");
- scanf("%d", &a);
- printf("请输入b的值: ");
- scanf("%d", &b);
- c_q = a / 10; //c的千位
- c_b = b / 10; //c的百位
- c_s = a % 10; //c的十位
- c_g = b % 10; //c的个位
- c = c_q + c_b + c_s + c_g;
- printf("c的值是: %d\n", c);
- }
运行结果:
恭喜你成功的跳进了我精心准备的大坑。
a和b每个数位上的数字以及相加的和确实求出来了,但这不是我们想要的结果。
权值:权值是指在进位计数制中,每个数码处于某个数位上所代表的数值,是数码本身的数值乘上与所处数位有关的一个固定常数
举个栗子:在一个三位数345中,3在百位,就表示有3个100;4在十位,就表示有4个10;5在个位,就表示有5个1,所以有:3*100+4*10+5*1=345。
所以我们也要给每个数位乘上相应的权值,然后再相加才是正确结果
再次实践
- #include <stdio.h>
- int main()
- {
- //变量c_q代表c的千位,变量c_b代表c的百位,十位个位以此类推
- int a, b, c, c_q, c_b, c_s, c_g;
- //打印提示信息
- printf("请输入a的值: ");
- scanf("%d", &a);
- printf("请输入b的值: ");
- scanf("%d", &b);
- //a的十位数字是c的千位数字,a除以10乘以1000就是c的千位数字
- c_q = a / 10 * 1000;
- //b的十位数字是c的百位数字,b除以10乘以100就是c的百位数字
- c_b = b / 10 * 100;
- //a的个位数字是c的十位数字,a模以10乘以10就是c的十位数字
- c_s = a % 10 * 10;
- //b的个位数字是c的个位数字,b模以10乘以10就是c的个位数字
- c_g = b % 10;
- //最后把这四个数字加到一起就是c的值
- c = c_q + c_b + c_s + c_g;
- printf("c的值是: %d\n", c);
- }
运行结果
这次就正确了
欢迎指正
声明:文章属作者原创,禁止抄袭搬运,转载请注明作者
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。