c - 如何处理整数中的小数?CS50 卢恩算法
问题描述
我想添加一个数组的所有数字并从中获取总和。我正在努力解决的问题是我必须将我从输入中得到的数字乘以这使得一个数组有可能在一个数组中有两位数。一个示例数字是 8346761。挑战要求我取每隔一个数字 (6,6,3),然后将它们相乘 (12,12,6) 并将第一个数字加在一起,如 (1+2+1+2+ 6)=12。我只知道如何做 12+12+6=30 并且在这个特定部分寻求帮助。我是编程新手,而且堆栈溢出,所以如果我做错了什么,请告诉我,以便我可以解决它。谢谢
#include <cs50.h>
#include <stdio.h>
int main(void)
{
long long cardNum = get_long_long("What is your credit card number?\n");
printf("Number: %lld\n", cardNum);
long long cardNumz = cardNum;
long long Multnumbers[20];
cardNum /= 10;
for (long long i=0; i < 20; i++)
{
Multnumbers[i] = cardNum % 10;
Multnumbers[i] *= 2;
cardNum /= 100;
}
int sum = 0;
int loop;
for(loop = 0; loop < 20; loop++)
{
printf("%lld ", Multnumbers[loop]);
}
printf("\n");
long long number=Multnumbers[0];
for (long long rz=1;rz<11;rz++)
{
number = number*10+Multnumbers[rz];
}
printf("Big multiple number is %lld\n ", number);
long long Nonmultnumbers[20];
for (long long i=0; i < 20; i++)
{
Nonmultnumbers[i] = cardNumz % 10;
cardNumz /= 100;
}
int loopn;
for(loopn = 0; loopn < 20; loopn++)
printf("Non multnumbers%lld ", Nonmultnumbers[loopn]);
printf("\n");
解决方案
如果我理解正确,您想在两位数(12)中取数字(1 和 2)来计算总和。最简单的方法可能是将这些数字除以 10 来计算第一位。并使用余数运算符计算第二位数。
第一个数字的计算。(只要数字是整数,这个除法就不会给出 1.2)。
int n = 12 / 10 // n will be 1 (1st digit).
第二位数的计算。使用余数运算符,%
.
int rem = 12 % 10 // rem will be 2 (2nd digit).
推荐阅读
- python-3.x - ChatterBox 生成 spacy 错误 - 找不到模型“en”
- debugging - 使用 lldb 和 cppvsdbg 进行 VSCode Rust 调试时出现“未找到”消息
- python - 在 DataFrame 中插入额外记录时,索引必须单调递增或递减?
- python - 如何根据另一个数据帧中定义的行/列缩放因子缩放熊猫数据帧?
- python - 了解对数比例并实际获取数据的 np.log
- python - 我在我的 python getter/setter 类中做错了什么?
- python-3.x - 使用 XOR 查找数组中的重复项
- ios - 尝试从 objects[1]' 中插入 nil 对象
- python - Pygame 问题:Progectiles/Bullets 正在删除并影响其他 Sprite
- python - 使用 spacy 构建词汇