gpt4 book ai didi

C 程序没有进入任何 for 循环?

转载 作者:太空宇宙 更新时间:2023-11-04 00:50:04 25 4
gpt4 key购买 nike

这是家庭作业

我的程序似乎根本没有进入任何 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 的地址传递给 fillArray() 函数,以便在 main() 中获得用户想要输入的元素数量。

称它为

fillArray  (array, &n);

定义为

void fillArray (int *array, int *ptr_n){
int c = 0, n =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]);
}
//set ptr_n
*ptr_n = n;
}

您还可以从 fillArray() 返回 n 而不是为其传递指针。

n = fillArray  (array, n);

定义为

int 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]);
}
return n;
}

关于C 程序没有进入任何 for 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22188376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com