获取以0

时间:2015-10-21 13:38:24

标签: c++ arrays

所以,我正在编写一个代码,它创建一个数组,其中包含用户编写的元素和元素数量,然后代码生成一个最大值为零的最大值。所以,我完成了编写一个数组的步骤,该数组是用户输入的元素。最难的部分(对我来说)是完成一个代码,生成最大值为零的最大值。所以,是的,我需要一个建议来完成这段代码。谢谢。

例如:

数组 - 2 20 25 300 55555 最后一位数为零的最大数字是300

所以是的,我需要一个建议来完成这段代码。这是我到目前为止所做的代码:

#include "stdafx.h"
#include <stdlib.h>
#include <windows.h>
#include <time.h>

int GetAmount() {
    int howmany;
    printf("Enter amount of elements - ");
    scanf_s("%i", &howmany);
    return howmany;
}

void GetArray(int a[], int n) {
    printf("Enter elements - \n");
    for (int i = 0; i < n; i++)
    {   printf("%i ->", i);
        scanf_s("%i", &a[i]);

    }
}

int LastDigitZero(int n[], int a) {
    for (int i = 0; i < a; i++)
    {
        if (n[i] % 10 == 0) {
            return 0;
        }
    }
}

int maxvalue(int a[], int n) {
    int temp = 0;
    for (int i = 0; i < n; i++)
    {
        if (a[i] > temp) {
            temp = a[i];
        }   
    }
    return temp;
}



void main() {
    int amount = GetAmount();
    int array[100];
    GetArray(array, amount);
    int max = maxvalue(array, amount);
    printf("Max Value is %i\n", max);
}

感谢您的关注,祝您有个愉快的一天! :)

3 个答案:

答案 0 :(得分:1)

有效!这看起来如何!

#include "stdafx.h"
#include <stdlib.h>
#include <windows.h>
#include <time.h>

int GetAmount() {
    int howmany;
    printf("Enter amount of elements - ");
    scanf_s("%i", &howmany);
    return howmany;
}

void GetArray(int a[], int n) {
    printf("Enter elements - \n");
    for (int i = 0; i < n; i++)
    {   printf("%i ->", i);
        scanf_s("%i", &a[i]);

    }
}


int maxvalue(int a[], int n) {
    int temp = 0;
    for (int i = 0; i < n; i++)
    {
        if (a[i] % 10 == 0 && a[i] > temp) {
            temp = a[i];
        }   
    }
    return temp;
}



void main() {
    int amount = GetAmount();
    int array[100];
    GetArray(array, amount);
    int max = maxvalue(array, amount);
    printf("The biggest number which last digit is zero is %i\n ", max);
    system("pause");

}

谢谢你们的答案!那很快!!! :)

答案 1 :(得分:0)

你几乎拥有它。首先,以0 mod 10结尾的任何数字都是0,这样就可以检查最后一位数是否为0.使用它可以将maxvalue()更改为

int maxvalue(int a[], int n) {
    int temp = a[0];
    for (int i = 1; i < n; i++)
    {
        if (a[i] % 10 == 0 && a[i] > temp) {
            temp = a[i];
        }   
    }
    return temp;
}

我还做了一个更改,将temp设置为a[0]的值,好像你的数组都是负数,然后0就是最大数。由于temp已经a[0],我们可以在1开始for循环。

答案 2 :(得分:0)

你应该检查是否有解决方案,在这个例子中你可以检查maxValue返回的值是否结束0(如果没有任何值结束0然后它将返回[0]):

int maxValue(int a[], int n) {
    int temp= a[0]
    for (int i(1); i<n;i++) {
        if (a[i] % 10 == 0 && (temp % 10 != 0 || a[i] > temp )) temp = a[i];
    }
    return temp;
}