原谅我,我是C编程新秀。我需要做的是从标准输入中获取值并将它们存储在一个数组中,该数组稍后将在线上进行排序。
用户的输入方法是一次一行一个号码(即输入一个号码,按回车键,输入号码,按回车键等)。当用户输入数字后,他们会按ENTER
而不提供数字。
我接受值并存储它们的代码如下。您可能会立即看到问题,但我没有看到它。
#include <stdio.h>
#define MAX 100
int main()
{
int n, i, array[MAX];
printf("Enter a list of integers\n");
for(i = 0; i <= MAX; ++i){
printf("> ");
if (scanf("%d", &n) == -1)
break;
else
scanf("%d", &n);
array[i] = n;
}
printf("The array is %d", *array);
return 0;
}
下图是程序应该如何运行。我已经有了排序代码,它看起来效果很好。非常感谢您的帮助。
答案 0 :(得分:2)
你有它做你想要的,你只需要一些调整。首先,输入不返回-1,为了简单起见,您需要输入ctrl+d
来停止输入。在最后输入之后,只需点击ctrl+d
。看看:
#include <stdio.h>
#define MAX 100
int main()
{
int n, i, array[MAX];
printf("Enter a list of integers [ctrl+d] to end\n");
for(i = 0; i <= MAX; ++i){
printf("> ");
if (scanf("%d", &n) == -1)
break;
array[i] = n;
}
puts ("");
int z;
for (z = 0; z < i; z++)
printf("The array is %d\n", array[z]);
return 0;
}
输出:
Enter a list of integers [ctrl+d] to end
> 1
> 2
> 3
> 4
> 5
>
The array is 1
The array is 2
The array is 3
The array is 4
The array is 5
答案 1 :(得分:1)
以下是输入时退出的更新前一个答案。
#include <stdio.h>
#define MAX 100
int main()
{
int n, i, array[MAX];
char num[MAX];
int res;
printf("Enter a list of integers [ctrl+d] to end\n");
for(i = 0; i <= MAX; ++i){
printf("> ");
fgets(num, sizeof(num), stdin);
res = sscanf(num, "%d", &n);
if(res != 1)
break;
n = atoi(num);
array[i] = n;
}
puts ("");
int z;
for (z = 0; z < i; z++)
printf("The array is %d\n", array[z]);
return 0;
}