這是一個家庭作業C程序沒有輸入任何for循環?
我的程序似乎沒有輸入任何for循環。在某一點上,我有main
中的所有函數,並且在2個全局變量上運行,而無需通過引用或值傳遞,並且所有內容都正常工作。從那時起我已經將我的函數移出main
,並且通過引用傳遞一個數組並將該數組的長度傳遞給每個函數,我得到了printf
語句,這些語句在循環之外,但除此之外沒有任何其他語句執行。
根據GDB,我的程序退出,退出代碼爲046
。
該程序很簡單,它需要一個值來設置我的數組長度,然後提示用戶輸入整數值來填充該數組。然後我排序數組,然後打印數組,最後我打電話getMax(int *array, int n)
將最大的值打印到屏幕上。
輸出的一個例子是:
Enter the number of elements to be sorted:
3
Enter 10 integers in any order:
2
1
4
Inside sortArray
Inside sort and print
inside setMAx
The largest value in the array is: 0
我似乎已經打破了東西,我從未與它搞砸。這是我的嘗試。
謝謝你的任何幫助,我會坐在這裏試圖找到我的錯誤。
#include <stdio.h>
void printArray (int *array, int n);
void sortArray (int *array, int n);
void fillArray (int *array, int n);
void getMax (int *array, int n);
int main(void){
int array[10],n = 0;
fillArray (array, n);
sortArray (array, n);
printArray (array, n);
getMax (array, n);
return 0;
}
void sortArray(int *array,int n){
printf("Inside sortArray\n");
int temp, c = 0, c2;
for(c=0;c<n;c++){
printf("inside for loop SA\n");
for(c2=c;c2<n;c2++){
if(array[c]>array[c2]){
temp=array[c];
array[c]=array[c2];
array[c2]=temp;
}
}
}
}
void printArray (int *array, int n){
int c = 0;
printf("Inside sort and print\n");
for(c=0;c<n;c++){
printf("\t%d",array[c]);
}
printf("\n");
}
void fillArray (int *array, int n){
int c = 0;
printf("Enter the number of elements to be sorted:\n");
scanf("%d",&n);
printf("Enter 10 integers in any order: \n");
for(c=0;c<n;c++){
scanf("%d", &array[c]);
}
}
void getMax (int *array, int n){
printf("inside setMax\n");
int temp = 0, i = 0;
for (i = 0;i<n;i++){
printf("temp: %d", temp);
if(array[i]>temp)
temp=array[i];
}
printf("\nThe largest value in the array is: %d\n", temp);
}
或者在'返回返回'N'值'語句,並更改'fillArry()'函數的類型,以便返回一個'int'。 –
這兩個答案都對我有幫助,但我遇到了另一個問題,再次閱讀這個答案時也解決了這個問題,所以這是我選擇的答案。感謝大家!我已經修好了。 –