gpt4 book ai didi

c - 如何从 C 中的矩阵打印排序列

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:47:59 25 4
gpt4 key购买 nike

我是 C 编程语言的新手,我尝试用这门语言练习我的技能。

我正在编写一个关于矩阵的练习,用户在其中输入要排序的列的编号并打印已排序的列(我使用的是冒泡排序),但程序没有显示回答。

这是我对问题的实现。-

#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

void bubble(int *array);
void print(int *array);

int main(){

/*Este programa toma una columna y la ordena*/

int fil=4, col=4;

int matrix[fil][col];

for(int i=0;i<fil;i++){
for(int j=0;j<col;j++){

matrix[i][j]=rand()%10+1;
}
}

for(int i=0;i<fil;i++){
for(int j=0;j<col;j++){
printf("%d\t",matrix[i][j]);
}
printf("\n");
}

int a, aux[col];

printf("\nColumna a ordenar: ");
scanf("%d",&a);

for(int i=0;i<fil;i++){
for(int j=0;j<col;j++){
if(j==a){
aux[j]=matrix[0][j];
}
bubble(aux);
}
}

getche();

}

void bubble(int *array){

int length= sizeof(array)/sizeof(array[0]);
int aux;

for(int i=length-2;i>=0;i--){
for(int j=0;j<=i;j++){
if(array[j]>array[j+1]){
aux=array[j];
array[j]=array[j+1];
array[j+1]=aux;
print(array);
}
}
}
}

void print(int *array){

int length= sizeof(array)/sizeof(array[0]);

for(int i=0;i<length;i++){
printf("%d",array[i]);
}
}

还有,我应该看哪本书或教程来掌握c语言(C)?

最佳答案

首先:使用

int length= sizeof(array)/sizeof(array[0]);

不能给你数组元素的数量。实际上,sizeof(array) 会为您提供指针在内存中的大小。在 C/C++ 中,您必须将数组元素的数量作为参数传递给使用它的函数。所以你的功能应该是这样的:

void bubble(int *array, int size);
void print(int *array, int size);

第二:你的循环

for(int i=0;i<fil;i++){
for(int j=0;j<col;j++){
if(j==a){
aux[j]=matrix[0][j];
}
bubble(aux);
}
}

不太可能正确填充 aux 数组。也许是这样的:

int a, aux[fil];

printf("\nColumna a ordenar: ");
scanf("%d",&a);

for(int i=0;i<fil;i++){
aux[i] = matrix[i][a];
}
bubble(aux, fil);
print(aux, fil);

而不是这个双循环?

关于c - 如何从 C 中的矩阵打印排序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17542764/

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