我在查找具有最大偶数位的元素时遇到问题 在一组数组中。我写的代码只接受正数 考虑。所有负值都被完全忽略。
int main() {
int ary1[] = { 123, 456, -7890, 12 };
int ary2[] = {-123, 654, 78, 15, 189};
int ary3[] = {9, 9};
int ary4[] = {123, 123, 0, 12};
int ary5[] = {24, 45, -789, 24, 1};
int ary6[] = {-749, -241, 1, 45};
int ary7[] = {1, 3, 5};
digitExtract(ary1, 4);
}
void digitExtract(int Array[], int array_size) {
int max = Array[0];
for (int i = 1; i < array_size; i++)
{
if (Array[i] > max)
max = Array[i];
}
printf("\nThe largest element is: %d\n", max);
}
我有一个基本思路,就是循环遍历每个元素 并将其变成正数(获取绝对值以便对其进行处理),但我不确定如何 实现代码。
有什么提示或想法吗?
最佳答案
我认为这段代码应该可以满足您的需求。
#include <stdio.h>
void digitExtract(int Array[], int array_size);
int main() {
int ary1[] = { 123, 456, -7890, 12 };
int ary2[] = { -123, 654, 78, 15, 189 };
int ary3[] = { 9, 9 };
int ary4[] = { 123, 123, 0, 12 };
int ary5[] = { 24, 45, -789, 24, 1 };
int ary6[] = { -749, -241, 1, 45 };
int ary7[] = { 1, 3, 5 };
digitExtract(ary1, 4);
digitExtract(ary2, 5);
digitExtract(ary3, 2);
digitExtract(ary4, 4);
digitExtract(ary5, 5);
digitExtract(ary6, 4);
digitExtract(ary7, 3);
}
void digitExtract(int Array[], int array_size) {
int maxDigitNumber;
int maxDigitFound = -1;
int tmp;
for (int i = 0; i < array_size; i++) {
tmp = Array[i] < 0 ? -Array[i]: Array[i];
do {
if (tmp % 2 == 0 && maxDigitFound < (tmp % 10)) {
maxDigitFound = tmp % 10;
maxDigitNumber = Array[i];
}
tmp /= 10;
} while (tmp > 0)
}
if (maxDigitFound > -1)
printf("\nThe largest digit is: %d and the element is: %d\n", maxDigitFound, maxDigitNumber);
else
printf("\nThere is not an even number in the array\n");
}
希望对你有帮助
关于c - 在多个数组中查找具有最大偶数位的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30338977/