我编写了一个程序,它应该采用一组数字并找到最小数字的数组索引。但是,当我输入数字之间的空格然后按回车键时,程序会继续运行。可能是什么原因?这是代码:
#include<stdio.h>
//read numbers to an array
//find minimum
//print the index of minimum
double findMinimum(int size,double array[]){
int n;
int minIndex=0;
for(n=1;n<size;size++){
if(array[n]<array[n-1]){
minIndex=n;
}
}
return minIndex;
}
int main(){
setvbuf(stdout,NULL,_IONBF,0);
int size=0;
double inArray[size];
printf("Enter an array of numbers:");
int k=0;
char c;
while(c!='\n'){
c=getchar();
if(c=='\n'){
break;
}
scanf("%lf",&inArray[k]);
k++;
size++;
};
int minIndex=0;
minIndex=findMinimum(size,inArray);
printf("The index of minimum number is %i",minIndex);
return 0;
}
我还将扫描数字的代码部分用于数组。我试图改变while循环并使用&#34; break&#34;语句,但输出给出了除第一个数组之外的数组中的所有数字。这是代码:
#include<stdio.h>
//read numbers to an array
int main(){
setvbuf(stdout,NULL,_IONBF,0);
int size=0;
double inArray[size];
printf("Enter an array of numbers ending with question mark:\n");
int k=0;
char c;
while(1){
c=getchar();
if(c=='?'){
break;
}
scanf("%lf",&inArray[k]);
k++;
size++;
};
int n;
for(n=0;n<size;n++){
printf("%f\n",inArray[n]);
}
return 0;
}
提前感谢您的帮助!
答案 0 :(得分:3)
for(n=1;n<size;size++){
if(array[n]<array[n-1]){
minIndex=n;
}
}
您的代码中的问题是您正在递增size
,这就是您的循环未终止的原因。增量n
修改强>
你已经用1初始化你的'n',但是数组以零索引开始,这就是为什么它错过了第一个元素,
for(n=0;n<size;n++){
if(array[n]<array[minIndex]){
minIndex=n;
}
}
答案 1 :(得分:0)
试试这个:
for(n=1; n < size; n++){
if(array[n]<array[minIndex]){
minIndex=n;
}
}