我无法使用C语言编写程序。
控制台收到4个数字。我想更改第一个数字并与其他数字相乘。
示例输入:1260
期望输出:将12更改为21,并将它们乘以60乘以->这样输出将为1260
(如21 * 60
)
这是我当前的代码:
int main() {
int number, temp;
int newnumber[4];
int n = 3;
printf("put the number");
scanf("%d", &number);
do {
newnumber[n] = number % 10;
number = number / 10;
n--;
} while (n >= o);
temp = newnumber[1];
newnumber[1] = newnumber[2];
newnumber[2] = temp;
}
知道我怎么做21与60相乘吗?
答案 0 :(得分:1)
我会采用略有不同的方法:首先将数字分开。然后调用函数以更改数字顺序。
如果您始终获得两位数字,则可以执行以下操作:
int first = number / 100;
int second = number % 100;
还有一个交换数字的功能:
function swapDigits(int num) {
int ans = 0;
while (num > 0) {
ans = ans * 10 + num % 10;
num /= 10;
}
return ans;
}
现在只需执行second * swapDigits(first)
即可得到结果。
我不是c
专家,因此请在使用前验证我的代码...
答案 1 :(得分:1)
如果我们看您的示例: 1260 =>将2换成1,再将21换成60。
主函数的排列错误,导致您更改了索引1(第二位置)和2(第三位置)的数字。
回到您的问题,通过对获取单位(数十和数百)所做的操作进行反驳,可以获得所需的结果。
int main() {
int number, temp1, temp2;
int newnumber[4];
int n = 3;
printf("put the number");
scanf("%d", &number);
do {
newnumber[n] = number % 10;
number = number / 10;
n--;
} while (n >= 0);
temp1 = newnumber[0];
newnumber[0] = newnumber[1];
newnumber[1] = temp1;
temp1 = newnumber[0] * 10;
temp1 += newnumber[1];
temp2 = newnumber[2] * 10;
temp2 += newnumber[3];
printf("%d", temp1 * temp2);
}
答案 2 :(得分:0)
如果您的条件始终成立,则可以保持简单并执行以下操作:
int main() {
int number;
int newnumber[4];
int n = 3;
printf("put the number");
scanf("%d", &number);
do {
newnumber[n] = number % 10;
number = number / 10;
n--;
} while (n >= 0);
printf("And the result: %d\n", (newnumber[1] * 10 + newnumber[0]) * (newnumber[2] * 10 + newnumber[3]));
}
答案 3 :(得分:0)
然后,您得到的不是单个数字,而是对等。只需一枪即可获得最后两位数:
int rem = number % 100; /* last two digits */
number /= 100;
int msd = number % 10; /* next, third digit */
number /= 10;
int lsd = number % 10; /* most significant digit */
/* I don't assume you have more digits, because you are doing different
* operations with them, no pattern up to here, but you should continue
* your approach here. */
int out = (msd * 10 + lsd) * rem;
应该给您解决方案。不需要数组。