A. c语言程序排序没成功,它跳过了排序那步,只执行了输入输出
你看下你自己i的值,你这样写的话i的值在排序前就是7了,不满足排序for循环的条件,自然跳过了
稍微改了下就可以了,你看看吧
#include <stdio.h>#include <stdlib.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int a[8],i,j,k,t;
for(i=0;i<8;i++)
scanf("%d",&a[i]);
for(i=0;i<7;i++){
for(j=i+1;j<8;j++)
{
if(a[i]>a[j]){
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(i=0;i<8;i++)
printf("%d\t",a[i]);
return 0;
}
B. c语言 为什么我的这个排序不能实现呢
逻辑问题。
if(p1==p2)
{
t->next=p1;
head=t;
}
这里出现了断层。如果第一次 while(t->hode_date<p1->hode_date&&p1!=NULL)就不成立;
就会出现 p1=p2=head的情况,而且p1->next也就是head->next=NULL;你这里就出现断层了,一个链表一旦断链,又没有存储断链地址,你就链不上了。
C. 我的C语言排序代码无法实现排序算法
在Entropy(message);
之前加一句:
buttle(message, strlen(message));
另外将float log(float);这句去掉,否则编译由错误
D. C语言选择法排序错误
你少加了一对大括号,就是在第二个for语句应该包括两个if语句,
if(array[j]<array[i])
k=j;
if(k!=i)
{t=array[i];array[i]=array[k];array[k]=t;}
这个外面再加一对{}
E. c语言为什么我这个程序不能进行排序
#include<stdio.h>
int main()
{
int i,j,n;
int a[100];
int m;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++)
{
for(j=0;j<n-(i+1);j++)
{
if(a[j]<a[j+1])
{
m=a[j];
a[j]=a[j+1];
a[j+1]=m;
}
}
}
for(i=0;i<n;i++)
printf("%4d",a[i]);
return 0;
}
冒泡排序j也是从0开始,你有个for后面打了分号,打印数据的循环你放在排序循环里面。
上面是修改好的代码。
F. C语言数组排序出错如何解决
一、merge(a[10], 5, 5); 改成:merge(a, 5, 5);
二、看不懂你的void merge(int A[10], int m, int n)函数!
G. C语言中对数组排序出现错误怎么解决
可以使用下面五种方法解决:
(1)插入排序函数
void insertion_sort(int[],int);/*插入排序*/
(2)希尔排序函数
void shell_sort(int[],int);/*希尔排序*/
(3)冒泡排序函数
void bubble_sort(int[],int);/*冒泡排序*/
(4)选择排序函数
void select_sort(int[],int);/*选择排序*/
(5)将数据调整为堆的函数
void adjust(int,int);/*将数据调整为堆树*/
H. C语言直接选择排序运行失败
你的选择排序的函数传参,传错了,select_sort(a[8],8);应该是select_sort(a,8);
a[8]在C语言中是数组a的第9个元素,而a数组只有8个元素,所以你传了一个越界的数组元素,因此出运行错误
a在C语言中是数组a的第1个元素的指针,所以可以在函数中访问到整个a数组
还有函数的定义那一句voidselect_sort();应该改成voidselect_sort(inta[],intn);
还有需要把if(min!=i)语句移到for-j循环外面,for-i循环里面
还有把printf("%d",a[i]); 改成printf("%d ",a[i]);每输出一个元素加一个空格
完整的C语言程序如下
#include<stdio.h>
voidselect_sort(inta[],intn);
intmain(){
inti;inta[8];
printf("请输入8个整数,将为您从小到大排序。 ");
for(i=0;i<8;i++){
scanf("%d",&a[i]);
}
select_sort(a,8);
for(i=0;i<8;i++){
printf("%d",a[i]);
}
return0;
}
voidselect_sort(inta[],intn){
inti,j,t,min;
for(i=0;i<n-1;i++){//n-1次排序(移动)
min=i;
for(j=i+1;j<n;j++){//n-i次比较
if(a[min]>a[j])min=j;
}
if(min!=i){//最小值不在i处的情况
t=a[min];
a[min]=a[i];
a[i]=t;
}
}
}
运行结果
请输入8个整数,将为您从小到大排序。
871163543332618
816182633354371
I. C语言 冒泡排序我想用下沉的方法排序,但总是不成功,求大神改错
{k=*(a+j);
*(a+j+1)=*(a+j);
*(a+j)=k;}
您这一段逻辑有问题,K = *(a+j); *(a+j+1) =*(a+j); too ,*(a+j)=k;后,
你原来的*(a+j+1)的值去哪了?
貌似应该是K=*(a+j+1);
*(a+j+1)=*(a+j);
*(a+j)=k;