【发布时间】:2017-11-18 10:18:48
【问题描述】:
我想输入 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;
}
【问题讨论】:
-
将
printf("%d", numbers);更改为printf("%d\n", numbers[count]) -
关于这一点:
printf("%d", numbers);numbers是一个由 4 个整数组成的数组,所以这一行应该类似于:printf( "%d", numbers[ count ] ); -
在调用任何
scanf()系列函数时,始终检查返回值(而不是参数值)以确保操作成功。在当前场景下,建议:if( 1 != scanf("%d", &numbers[count]) ) { fprintf( stderr, "scanf failed\n" ); exit( EXIT_FAILURE ); } -
发布的代码包含一些“神奇”数字。 “魔术”数字是没有基础的数字。 IE。 4.“神奇”数字使代码更难理解、调试等。建议使用
enum语句或#define语句为“神奇”数字赋予有意义的名称,然后在整个代码中使用这些有意义的名称. -
变量(和参数)名称应指示
content或usage(或更好,两者兼有)。像a这样的参数名称是没有意义的,即使在当前上下文中也是如此。