如何使用函数和输出C

时间:2017-11-18 10:18:49

标签: c arrays function sorting

我想输入4个数字并显示最大可能的数字。请问有人可以帮帮我吗?我尝试过不同的方法,所以不要错过为什么有这么多的库。 提前致谢

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <math.h>           //pow
    #include <limits.h>         //char max
    #include <ctype.h>          //


int sort_alg(const void *a, const void *b)
{
    char ab[32], ba[32];
    sprintf(ab, "%d%d", *(int*)a, *(int*)b);
    sprintf(ba, "%d%d", *(int*)b, *(int*)a);
    return strcmp(ba, ab);
}

void max_numb(int *a, int len)
{
    int i;
    qsort(a, len, sizeof(int), sort_alg); 
    for (i = 0; i < len; i++)
        printf("%d", a[i]);
    putchar('\n');
}

int main(void)
{
  int numbers[4];
  for(int count = 0; count < 4; count++)
  {
      scanf("%d", &numbers[count]);
      printf("%d", numbers);
  }

    max_numb(numbers, sizeof(numbers)/sizeof(numbers[0]));

    return 0;
}

3 个答案:

答案 0 :(得分:0)

为什么不尝试一些算法。选择最大值非常容易。你不必对它进行排序 试试这个:

int max(int a[],int len)
{
  int max=a[0];
  for(int i=0;i<len;i++)
  {
    if(max<a[i])
      max=a[i];
  }
  return max;
}

很抱歉,如果我误解了您的查询。我回答了标题。

答案 1 :(得分:0)

如果打印输入的最大数字是您唯一的目的,您可以在没有任何排序算法的情况下进行打印。在获取输入时,只需使用存储到目前为止输入的最大数字的变量,并在输入任何大于格言的新值时更新变量

<强>代码

int main() {
    int numbers[4];
    int maxim = -99999; //any small that you can assue to be minimimum
    for(int count = 0; count < 4; count++) {
        scanf("%d", &numbers[count]);
        printf("%d ", numbers[count]);
        if(numbers[count] > maxim) {
            maxim = numbers[count];
        }
    }
    printf("\n") ;
    printf("Maximum Value : %d\n", maxim) ;
    return 0;
}

很抱歉,如果我误解了你的问题。

答案 2 :(得分:0)

以下提议的代码:

  1. 执行所需的功能。
  2. 干净地编译
  3. 记录每个头文件包含的原因
  4. 正确检查系统功能中的错误
  5. 警告:不检查所有输入的数字是否为正(&gt; = 0)

    请注意,建议的代码无法提示用户输入每个值,因此用户将看到一个空白终端,闪烁的光标(并想知道该怎么做)所以代码应该提示用户输入每个号码。

    现在,建议的代码

    #include <stdio.h>          // scanf(), fprintf(), printf(), putchar(), sprintf()
    #include <stdlib.h>         // exit(), EXIT_FAILURE
    #include <string.h>         // strcmp()
    
    #define MAX_NUMBERS 4
    
    // prototypes
    int sort_alg(const void *a, const void *b);
    void max_numb( int Numbers[] );
    
    
    int main( void )
    {
        int numbers[ MAX_NUMBERS ];
    
        for( int count = 0; count < MAX_NUMBERS; count++ )
        {
            if( 1 != scanf("%d", &numbers[count]) )
            {
                fprintf( stderr, "scanf for number: %d failed\n", count+1 );
                exit( EXIT_FAILURE );
            }
    
            // implied else, scanf successful
    
            printf( " %d", numbers[ count ] );  // leading space for formatting
        }
    
        max_numb( numbers );
    
        return 0;
    }
    
    
    int sort_alg(const void *a, const void *b)
    {
        char ab[32], ba[32];
        sprintf(ab, "%d%d", *(int*)a, *(int*)b);
        sprintf(ba, "%d%d", *(int*)b, *(int*)a);
        return strcmp(ba, ab);
    }
    
    
    void max_numb( int Numbers[] )
    {
        qsort( Numbers, MAX_NUMBERS, sizeof(int), sort_alg);
    
        putchar( '\n' );  // so output from 'max_numb()' will be on a new line
        for (int i = 0; i < MAX_NUMBERS; i++)
            printf( "%d", Numbers[i] );
    
        putchar( '\n' );
    }
    

    建议的代码输出的典型运行:

    1 2 3 4
    1 2 3 4
    4321