刚接触c语言感觉有点难,有没有人可以帮帮我sos,留的练习题,有点不会做啊,函数题感觉没问题,没有输出
然后第36行 if (0==i) 改为 if (array[i]==0),即当输入的数为0时,退出while循环;
第40行 n++改为 i++,即让数组下标变量i指向下一个数组下标位置;
在while循环与第42行之间插入一行代码,n=i,即将数组元素非零值的个数i赋值给n。
修改如下:
#include <stdio.h>
void sortArray(int array[], int n){
int i=0,j=0;
int tmp=0;
for(j=n-1;j>0;j--){
for(i=0;i<j;i++){
if(array[i]>array[i+1]){
tmp=array[i];
array[i]=array[i+1];
array[i+1]=tmp;
}
}
}
}
int main(void){
int array[32]={0};
int i=0,n=0;
while(1){
scanf("%d",&array[i]);
// 这里由 0==i 改为 0==array[i],即当输入的数为0时,退出while循环
if(0==array[i]){
break;
}
i++; // 这里由 n++改为i++, 即让数组下标变量i 指向下一个数组下标 位置
}
n=i; // 循环结束,n赋值为i,用于记录数组的长度
sortArray(array,n);
for(i=0;i<n;i++){
printf("%d ",array[i]);
}
return 0;
}
i赋值成1,不然while循环执行不了
不知道你这个问题是否已经解决, 如果还没有解决的话:答案:
根据你提供的代码,问题可能出在你的冒泡排序函数bubbleSort
中。在你的代码中,你只定义了bubbleSort
函数的函数原型,但是缺少了具体的排序逻辑。因此,当你调用bubbleSort(arr, size)
时,程序并没有执行任何排序操作,导致无法输出正确的结果。
为了解决这个问题,你需要在bubbleSort
函数中添加冒泡排序的逻辑。冒泡排序的逻辑如下: 1. 使用两个嵌套的循环,外循环用于控制每一轮的排序,内循环用于遍历数组并进行比较。 2. 在每一轮的排序中,内循环遍历数组,并比较相邻两个元素的大小。如果前一个元素比后一个元素大,则交换它们的位置。 3. 继续进行内循环,直到所有相邻元素都被比较,这时最大的元素会被移动到数组的末尾。 4. 外循环继续下一轮的排序,但这次内循环不再考虑已经排序好的最后一个元素。 5. 重复步骤2-4,直到所有元素都按照从小到大的顺序排序。
以下是一个实现冒泡排序的示例代码:
#include <stdio.h>
void bubbleSort(int arr[], int size){
for(int i=0; i<size-1; i++){
for(int j=0; j<size-i-1; j++){
if(arr[j] > arr[j+1]){
// 交换位置
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main(){
int arr[] = {5, 2, 7, 1, 3};
int size = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, size);
for(int i=0; i<size; i++){
printf("%d ", arr[i]);
}
return 0;
}
这样,当你运行上面的代码时,输出的结果应该是 1 2 3 5 7
。
希望这个解决方案能够帮助到你解决问题!如果你有任何疑问,请随时提问。