c语言利用数组的知识实现计算123456789987654321与987654321123456789的乘积,编程软件为devc
时间: 2023-03-24 19:02:22 浏览: 63
可以使用C语言中的数组和循环结构来实现这个乘法运算。具体实现步骤如下:
1. 定义两个数组分别存储两个乘数,例如:
int num1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 8, 7, 6, 5, 4, 3, 2, 1};
int num2[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9};
2. 定义一个数组用于存储乘积,数组长度为两个乘数长度之和,例如:
int result[36] = {};
3. 使用两层循环遍历两个乘数数组,将每一位相乘的结果累加到对应的乘积数组中,例如:
for (int i = ; i < 18; i++) {
for (int j = ; j < 18; j++) {
result[i + j] += num1[i] * num2[j];
}
}
4. 处理进位,将乘积数组中每一位的值对10取余并向高位进位,例如:
for (int i = ; i < 35; i++) {
result[i + 1] += result[i] / 10;
result[i] %= 10;
}
5. 去除前导零,将乘积数组中前导的去除,例如:
int i = 35;
while (i > && result[i] == ) {
i--;
}
6. 输出结果,将乘积数组中的数字倒序输出即可,例如:
for (; i >= ; i--) {
printf("%d", result[i]);
}
完整的代码如下:
#include <stdio.h>
int main() {
int num1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 8, 7, 6, 5, 4, 3, 2, 1};
int num2[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int result[36] = {};
for (int i = ; i < 18; i++) {
for (int j = ; j < 18; j++) {
result[i + j] += num1[i] * num2[j];
}
}
for (int i = ; i < 35; i++) {
result[i + 1] += result[i] / 10;
result[i] %= 10;
}
int i = 35;
while (i > && result[i] == ) {
i--;
}
for (; i >= ; i--) {
printf("%d", result[i]);
}
return ;
}