我想输入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;
}
答案 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)
以下提议的代码:
警告:不检查所有输入的数字是否为正(&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