此程序的目的是检测命名数组中的最大数量。目前,它只检测数组的最后一位数。如果else if被删除或注释掉,那么它可以正常检测除最后一位数之外的所有数字。
#include <stdio.h>
int main(){
int c,i,max;
printf("Enter the size of the array.");
scanf("%d",&c);
int array[c];
printf("Enter the integers to fill the array.\n");
for(i=0;i<c;i++){
scanf("%d",&array[i]);
}//end for
int last_element = array[c-1];
for(i=0;i<c;i++){
printf("%d",array[i]);
if(array[i-1] > array[i]) //This if statement detects greatest
{ //index of array for all but last index
max = array[i-1];
}//end if
else if(last_element > array[i-1]) //This else if detects greatest
{ //index of array in last index
max = last_element; //This statement is always eval
}//end if //uating true.
}//end for
printf("\n%d",max);
return 0;
}//end main
答案 0 :(得分:1)
$sqlquery="SELECT * FROM tableusers WHERE status = 'off' IN (SELECT DATE(mydate) AS mydate FROM tableusers where mydate < CURDATE()) ";
试试这个
答案 1 :(得分:0)
逐点纠正错误:
for(i=1;i<c;i++)
i
需要设置为1.因此,当您执行数组[i-1]时,它从i = 1开始,以便array[1-1]
发生。 否则,如果i
设置为0
,则结果为array[0-1]
,即数组[-1],因为没有定义这个值,它可以指向 堆栈内存中的任何值。- 醇>
if(array[i-1] > array[i])
这个if语句只是检查,如果前一个值大于它的下一个值,即,如果有一个数组1 2 3 4 5 6 7
,它只会看到。那么if (array[0]>array[1] )
if(array[1] > array[2] )
。在示例数组1 2 3 4 5 6 7
中, 这是升序,它永远不会进入if条件。 因为,1 > 2
不是真的。2 > 3
不是真的,依此类推。因此 正确的检查方法是检查当前的数组索引 使用现有的最大值。即,
if(array[i-1] > max) { max = array[i-1] ;}
这将继续取代 如果遇到更大的数字,则为max
值。然后检查一下 下一个最大数字
- 醇>
else if(last_element > array[i-1]) //This else if detects greatest { //index of array in last index max = last_element; //This statement is always eval }//end if //uating true. }//end for
现在这又是一个错误的陈述。考虑示例数组
5 4 3 2 1' .Here the last element is always smaller than
array [i-1]`,表示最后一个元素总是小于全部 以前的元素。所以这种情况永远不会进入。最后,正确的代码:声明一个变量
检查下一个数组值int max = 0
这样,如果 array [i]&gt; max,然后将max值替换为该数组的值。和 然后使用新声明的最大值int max =0; for(int i=0; i<c; i++){ if(array[i] > max){ max=array[i]; } }