问题
返回一个数组每个元素都整除第一个元素的数组结果
思考过程
- 输入数组的每个元素是什么类型?
- 输出数组的每个元素又是什么类型?
- 数组的第一个元素为0怎么处理?
- 数组元素的第一个元素为1怎么处理?
- 应用场景是什么?
- 最终要达到的目的?
- 计算运行耗时多少?
- 占用多大的内存空间?
- 测试用例的准备?
最终搞清楚了情况,然后再动手,比如以下假定:
应用场景不复杂,输入数组为不超过10个的整数,为0的时候不处理,除法为整除,结果不保留小数位
解决
#include <stdio.h>
/**
* int arr[] 数组
* int size 数组长度
* return 0 为成功, 1为失败
* */
int divideArray(int arr[], int size) {
if (size < 0 || arr[0] == 0) { //除数一定要大于0
return 1;
}
if (arr[0] == 1) {
return 0;
}
for (int i = size -1; i >= 0; i-- ) {
arr[i] /= arr[0];
}
return 0;
}
void printArray(int a[], int len) {
for (int i = 0; i < len; i++) {
printf("%d ", a[i]);
}
}
int main() {
int a[3][8] = {
{0, 1, 2, 3, 4, 5, 6, 7},
{1, 2, 4, 5, 6, 7, 8, 9},
{2, 4, 5, 6, 7, 8, 9, 12},
};
int res = 0;
for (int i = 0; i < 3; i++) {
printArray(a[i], 8);
res = divideArray(a[i], 8);
printf("执行结果:");
switch(res) {
case 0: printArray(a[i], 8);
break;
case 1: printf("数组第一个数0,不能进行运算");
break;
}
printf("\n");
}
return 0;
}