我被要求编写一个程序,接受一个数字列表,直到遇到非数字(最多30个数字),将数字放入数组,并跟踪插入的数字。然后它应该扫描数组以找到最大的数字,并打印最大的数字。
这就是我想出来的:
#include<stdio.h>
int main()
{
const int INPUT = 30 ;
int size [INPUT];
int i, big;
printf("Type integer numbers, followed by q to quit: ");
while (scanf("%d", &size[INPUT]) != 'q')
{
for(i=0;i<size;i++)
scanf("%d",&INPUT[i]);
big = INPUT[0];
for(i=1;i<size;i++)
{
if(big<INPUT[i])
big=INPUT[i];
}
printf("The largest number is %d",big);
return 0;
}
答案 0 :(得分:1)
除了问题,我在评论中列出。你似乎对变量名称感到困惑〜无论如何,我为你做了一些代码。
#include<stdio.h>
int main()
{
const int MAX_INPUT = 30 ;
int input[MAX_INPUT];
int size=0, big;
printf("Type integer numbers, followed by q to quit: ");
while(size < MAX_INPUT){
if(scanf("%d", &input[size]) != 1){
break;
}
++size;
}
if(size ==0){
return 0;
}
big = input[size-1];
while( size-- > 0)
{
if(big<input[size]){
big=input[size];
}
}
printf("The largest number is %d\n",big);
return 0;
}
使用GCC 4.1.2和Linux进行测试。
答案 1 :(得分:0)
成功完成后,这些函数返回 已成功匹配和分配的输入项目的数量
此外,您正在混合大小和输入,您实际上希望大小为常量并输入为数组:
const int SIZE = 30 ;
int input[SIZE];
所以while循环应该如下所示:
while (scanf("%d", &input[some_index]) == 1)
当然这是错误的:
scanf("%d",&INPUT[i]); // should be ==> &input[i]