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;