C功能可以打印最大和最小数字

时间:2018-02-25 20:35:05

标签: c

目前正在编写一个C程序,提示用户输入五个数字并显示最大数字。所以这就是我想出来的

    var services = new ServiceCollection();

    services.AddEntityFramework()
        .AddInMemoryDatabase()
        .AddDbContext<ApplicationDbContext>(options => options.UseInMemoryDatabase());

    serviceProvider = services.BuildServiceProvider();

感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

对于输入小于0的数字,您的函数不起作用,因为函数没有返回任何内容,因此int类型错误。这是一个更好的版本:

void max_num(float num_arr[], int size)
{
    if(size>0) float max = num_arr[0];
    for (int k = 0; k <= size; k++) {
        if (max < num_arr[k]) {
            max = num_arr[k];
        }    
    }
    printf("The maximum number is %f\n", max);
}

如果你需要返回max:

float max_num(float num_arr[], int size)        
{
    if(size>0) float max = num_arr[0];
    for (int k = 0; k <= size; k++) {
        if (max < num_arr[k]) {
            max = num_arr[k];
        }    
    }
    return max;
}

答案 1 :(得分:1)

您正在设置

for(int k = 0;k<5;k++)
{
    if(num_arr[k] > max)
        max = num_arr[k];
}

printf("The maximum number is is %d\n", max);

在每次循环迭代中,每次都丢失最大值并设置它 到数组中的第一个值。

正确的版本是:

<=

条件中=不正确,但它也不是很易读, 很难错过<的标志。在这种情况下,使用k<5总是更好 #include <stdio.h> float max_num(float *array, size_t len) { if(array == NULL) { fprintf(stderr, "invalid argument, array == NULL\n"); return 0; } if(len == 0) { fprintf(stderr, "Invalid array size, cannot be 0\n"); return 0; } float max = array[0]; for(size_t i = 0; i < len; ++i) { if(array[i] > max) max = array[i]; } return max; } int main(void) { float nums[] = { 1.1, -2.2, 8, 6, 99 , -12 }; float max = max_num(nums, sizeof nums / sizeof *nums); printf("The maximal number in the array is: %f\n", max); return 0; }

将数组的大小传递给函数也是一种更好的做法,所以你 不必硬编码要循环的最大项目数(就像你一样) 在你的代码中做了)。像这样:

Date                   Crime
2015-12-17 07:26:00    Vandalism
2015-12-17 11:04:00    Theft 
2015-06-18 12:32:00    Murder
.
.
.

答案 2 :(得分:0)

而不是if(max > num_arr[k])它应该是if(num_arr[k] > max)