C语言将10个数字从小到大排列,为什么我的代码输入是1,2,3,4,5,6,7,8,9,10输出是1,10,9,8,7,6,5,4,3,2呢? 编写C语言程序,把一个数组按从小到大的次序排列起来

C\u8bed\u8a00\u7a0b\u5e8f\u8bbe\u8ba1\uff1a \u4ece\u7528\u6237\u8f93\u516510\u4e2a\u6574\u6570\uff0c\u5bf9\u5176\u6309\u7167\u4ece\u5c0f\u5230\u5927\u7684\u987a\u5e8f\u6392\u5e8f\uff0c\u5e76\u8f93\u51fa\u7ed3\u679c\u3002

//\u8981\u6c42\u4efb\u610f\u8f93\u516510\u4e2a\u6570\uff0c\u7136\u540e\u6309\u4ece\u5c0f\u5230\u5927\u987a\u5e8f\u8f93\u51fa
#include<stdio.h>
int main()
{
int a[10];
int i,j;
int temp;
printf("\u8bf7\u8f93\u516510\u4e2a\u6574\u6570\uff1a");
for(i=0;i<10;i++)
{
scanf("%d",&a<i>);
}
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
printf("\u6392\u5217\u540e\u987a\u5e8f\u4e3a\uff1a");
for(i=0;i<10;i++)
{
printf("%d",a<i>);
}
printf("\n");
return 0;
}

\u6269\u5c55\u8d44\u6599\uff1a\u2460printf()\u51fd\u6570\u662f\u683c\u5f0f\u5316\u8f93\u51fa\u51fd\u6570,\u4e00\u822c\u7528\u4e8e\u5411\u6807\u51c6\u8f93\u51fa\u8bbe\u5907\u6309\u89c4\u5b9a\u683c\u5f0f\u8f93\u51fa\u4fe1\u606f\u3002
\u683c\u5f0f\u8f93\u51fa\uff0c\u5b83\u662fc\u8bed\u8a00\u4e2d\u4ea7\u751f\u683c\u5f0f\u5316\u8f93\u51fa\u7684\u51fd\u6570\uff08\u5728stdio.h\u4e2d\u5b9a\u4e49\uff09\u3002\u7528\u4e8e\u5411\u7ec8\u7aef\uff08\u663e\u793a\u5668\u3001\u63a7\u5236\u53f0\u7b49\uff09\u8f93\u51fa\u5b57\u7b26\u3002\u683c\u5f0f\u63a7\u5236\u7531\u8981\u8f93\u51fa\u7684\u6587\u5b57\u548c\u6570\u636e\u683c\u5f0f\u8bf4\u660e\u7ec4\u6210\u3002
\u8981\u8f93\u51fa\u7684\u6587\u5b57\u9664\u4e86\u53ef\u4ee5\u4f7f\u7528\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7a7a\u683c\u548c\u4e00\u4e9b\u6570\u5b57\u7b26\u53f7\u4ee5\u5916\uff0c\u8fd8\u53ef\u4ee5\u4f7f\u7528\u4e00\u4e9b\u8f6c\u4e49\u5b57\u7b26\u8868\u793a\u7279\u6b8a\u7684\u542b\u4e49\u3002
\u7b80\u5355\u70b9\u7406\u89e3\u5c31\u662f\uff0c\u5728\u4e00\u6bb5\u7a0b\u5e8f\u4e2d\u4f60\u6b63\u786e\u4f7f\u7528\u8be5\u51fd\u6570\uff0c\u53ef\u4ee5\u5728\u8be5\u7a0b\u5e8f\u8fd0\u884c\u7684\u65f6\u5019\u8f93\u51fa\u4f60\u6240\u9700\u8981\u7684\u5185\u5bb9\u3002
\u2461printf\u51fd\u6570\u662f\u4e00\u4e2a\u6807\u51c6\u5e93\u51fd\u6570\uff0c\u5b83\u7684\u51fd\u6570\u539f\u578b\u5728\u5934\u6587\u4ef6\u201cstdio.h\u201d\u4e2d\u3002\u4f46\u4f5c\u4e3a\u4e00\u4e2a\u7279\u4f8b\uff0c\u4e0d\u8981\u6c42\u5728\u4f7f\u7528printf\u51fd\u6570\u4e4b\u524d\u5fc5\u987b\u5305\u542bstdio.h\u6587\u4ef6\u3002
printf()\u51fd\u6570\u7684\u8c03\u7528\u683c\u5f0f\u4e3a:printf("<\u683c\u5f0f\u5316\u5b57\u7b26\u4e32>",<\u53c2\u91cf\u8868>)\u3002
\u5176\u4e2d\u683c\u5f0f\u5316\u5b57\u7b26\u4e32\u7528\u4e8e\u6307\u5b9a\u8f93\u51fa\u683c\u5f0f\u3002\u683c\u5f0f\u63a7\u5236\u4e32\u53ef\u7531\u683c\u5f0f\u5b57\u7b26\u4e32\u548c\u975e\u683c\u5f0f\u5b57\u7b26\u4e32\u4e24\u79cd\u7ec4\u6210\u3002

\u6e90\u7a0b\u5e8f\u4ee5\u53ca\u7b97\u6cd5\u6ce8\u91ca\u5982\u4e0b\uff1a
#define _CRT_SECURE_NO_WARNINGS//VS\u7f16\u8bd1\u73af\u5883\u9700\u8981\u8fdb\u884c\u5b8f\u5b9a\u4e49\uff0cVC6.0\u53ef\u5ffd\u7565
#include//\u8f93\u5165\u8f93\u51fa\u5934\u6587\u4ef6
int main()
{
int number[10], New_number[10];//\u5b9a\u4e49\u6570\u7ec4\u7684\u6570\u636e\u7c7b\u578b\u4e3a\u6574\u578b
int i, j, m, n, k;//\u5b9a\u4e49\u53d8\u91cf\u7684\u6570\u636e\u7c7b\u578b\u4e3a\u6574\u578b
printf("input 10 number\uff1a");//\u6587\u5b57\u63d0\u793a
for (i = 0; i <= 9; i++)//\u7528\u5faa\u73af\u8f93\u5165\u6570\u503c\u7ed9\u6570\u7ec4number\u5e76\u8d4b\u7ed9\u6570\u7ec4New_number
{
scanf("%d", &number[i]);//\u8f93\u516510\u4e2a\u6574\u5f62\u6570\u5b57\u5230\u6570\u7ec4\u4e2d
New_number[i] = number[i];//\u6570\u7ec4number\u5143\u7d20\u8d4b\u7ed9\u6570\u7ec4New_number
}
for (n = 0; n <= 8; n++)//\u8981\u8fdb\u884c(10-1)\u7ec4\u6bd4\u8f83
for (j = 0; j <= 8 - n; j++)//\u6bcf\u7ec4\u8fdb\u884c(10\u51cf\u7b2c\u51e0\u7ec4)\u6b21\u6bd4\u8f83
{
if (number[j] > number[j + 1])//\u6bd4\u8f83\u5927\u5c0f\u5e76\u5c06\u5c0f\u7684\u8d4b\u7ed9\u524d\u9762\u7684\u6570\u7ec4
{
k = number[j];//\u5c06\u76f8\u5bf9\u8f83\u5927\u7684\u5143\u7d20\u8d4b\u503c\u7ed9\u4e2d\u95f4\u5143\u7d20
number[j] = number[j + 1];//\u5c06\u76f8\u5bf9\u8f83\u5c0f\u7684\u5143\u7d20\u9001\u8fbe\u524d\u9762\u4e00\u4e2a\u4f4d\u7f6e
number[j + 1] = k;//\u5c06\u4e2d\u95f4\u53d8\u91cf\u5143\u7d20\u9001\u7ed9\u540e\u9762\u4e00\u4e2a\u4f4d\u7f6e
}
if (New_number[j] < New_number[j + 1])//\u6bd4\u8f83\u5927\u5c0f\u5e76\u5c06\u5927\u7684\u8d4b\u7ed9\u524d\u9762\u7684\u6570\u7ec4
{
k = New_number[j + 1];//\u5c06\u76f8\u5bf9\u8f83\u5c0f\u7684\u5143\u7d20\u8d4b\u503c\u7ed9\u4e2d\u95f4\u5143\u7d20
New_number[j + 1] = New_number[j];//\u5c06\u76f8\u5bf9\u8f83\u5927\u7684\u5143\u7d20\u9001\u8fbe\u524d\u9762\u4e00\u4e2a\u4f4d\u7f6e
New_number[j] = k;//\u5c06\u4e2d\u95f4\u53d8\u91cf\u5143\u7d20\u9001\u7ed9\u540e\u9762\u4e00\u4e2a\u4f4d\u7f6e
}
}
printf("min-->max\uff1a\n");//\u6587\u5b57\u63d0\u793a
for (m = 0; m <= 9; m++)//\u4f9d\u6b21\u4ece\u5c0f\u5230\u5927\u8f93\u51fa
printf("%d ", number[m]);//\u8f93\u51fa\u5143\u7d20
printf("\n");
printf("max-->min\uff1a\n");//\u6587\u5b57\u63d0\u793a
for (m = 0; m <= 9; m++)//\u4f9d\u6b21\u4ece\u5927\u5230\u5c0f\u8f93\u51fa
printf("%d ", New_number[m]);//\u8f93\u51fa\u5143\u7d20
printf("\n");
return 0;
}
\u7a0b\u5e8f\u8fd0\u884c\u7ed3\u679c\u5982\u4e0b\uff1a



\u6269\u5c55\u8d44\u6599\uff1a
\u5176\u4ed6\u7b80\u5355\u5b9e\u73b0\u7a0b\u5e8f\uff1a
#include
int main()
{
int a[10]={0};
int i,j,temp;
for(i = 0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i = 0;i<10;i++)
{
for(j = 0;j<10-i-1;j++)
{
if(a[j]>a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(i = 0;i<10;i++)
printf("%d ",a[i]);
return 0;
}

程序
#include<stdio.h>
#include<conio.h>
int main()
{
int a[10],i,n;
printf("请输入数字:\n");
for(i=0;i<=9;i++)
{
scanf("%d",&a[i]);
}
void array(int x[],int n);
array(a,10);
printf("从小到大排列为:\n");
for(i=0;i<=9;i++)
{
printf("%d ",a[i]);
}
getch();
return 0;
}
void array(int x[],int n)
{
int i,j,t;
for(i=0;i<=8;i++)
{
for(j=i+1;j<=9;j++)
{
if(x[i]>x[j])
{
t=x[i];
x[i]=x[j];
x[j]=t;
}
}
}
}

这种问题一般是边界定义出错,就是for()里面的循环的条件定义出错,用冒泡去排序效果会好一点,我把你的程序改了改,现在可以完成你的排序要求了
#include<stdio.h>
#include<conio.h>
void array(int x[],int n)
{
int i,j,t;
for(i=0;i<=9;i++)
{
for(j=i+1;j<=9;j++)
{
if(x[i]<x[j])
{
t=x[i];
x[i]=x[j];
x[j]=t;
}
}
}
}
int main()
{
int a[10],i,n;
printf("请输入数字:\n");
for(i=0;i<=9;i++)
{
scanf("%d",&a[i]);
}
array(a,10);
printf("从小到大排列为:\n");
for(i=0;i<=9;i++)
{
printf("%d ",a[i]);
}
getch();
return 0;
}

1. void array中的参数int n没用到,删去吧。

2. 冒泡排序有问题,从大到小,应为:
for( i = 0; i < 10; i++)
for( j = 0 ; j < 9 - i; j++)
if( x[j] < x[j + 1] ) {
t = x[j];
x[j] = x[j + 1];
x[j + 1] = t;
}

最后一个for循环   j=0  而不是j=1

 给你标上了 



#include<stdio.h>

#include<conio.h>

int main()

{

int a[10],i,n;

printf("请输入数字:
");

for(i=0;i<=9;i++)

{

scanf("%d",&a[i]);

}

void array(int x[],int n);

array(a,10);

printf("从小到大排列为:
");

for(i=0;i<=9;i++)

{

printf("%d ",a[i]);

}

getch();

return 0;

}

void array(int x[],int n)

{

int i,j,t;

for(i=0;i<=9;i++)

{

{

if(x[i]>x[j])

{

t=x[i];

x[i]=x[j];

x[j]=t;

}

}

}

}


而且 n是多余的  有没有不影响    还占用资源!



排序排错了
第一轮:i=0判断 1>2false 1>3false.........1>9false
第二轮:i=1判断 2>2 false 2>3false...........2>9false
第三轮:i=2判断 3>2true交换 3>3false.....
.......
第十轮:i=9判断 10>2turn交换........
明白没,

  • ...浠庣敤鎴疯緭鍏10涓鏁存暟,瀵瑰叾鎸夌収浠庡皬鍒板ぇ鐨勯『搴鎺掑簭,骞惰緭鍑虹粨鏋溿俖鐧惧害...
    绛旓細鍦C璇█绋嬪簭璁捐涓紝涓涓父瑙佺殑浠诲姟鏄姹傜敤鎴疯緭鍏10涓鏁存暟锛岀劧鍚庢寜鐓浠庡皬鍒板ぇ鐨勯『搴杩涜鎺掑簭骞惰緭鍑虹粨鏋溿備互涓嬫槸濡備綍瀹炵幇杩欎釜鍔熻兘鐨勪唬鐮佺墖娈碉細棣栧厛锛屾垜浠渶瑕佸寘鍚ご鏂囦欢锛屼互渚夸娇鐢ㄦ爣鍑嗚緭鍏ヨ緭鍑哄嚱鏁般傚湪涓诲嚱鏁癿ain()涓紝鎴戜滑瀹氫箟涓涓暱搴︿负10鐨勬暣鏁版暟缁刟锛屽苟璁剧疆涓や釜鍙橀噺i鍜宩鏉ヨ緟鍔╂帓搴忚繃绋嬶紝浠ュ強涓涓复鏃跺彉...
  • 杈撳叆10涓鏁存暟,鎸夌収鐢卞ぇ鍒板皬鐨勯『搴忚緭鍑C璇█缂栧啓
    绛旓細void main() { int i,j,k,a[NUM]; printf("璇疯緭鍏10涓暟瀛杩涜浠庡ぇ鍒板皬鐨鎺掑簭:"); for(i=0;i<NUM;i++) { scanf("%d",&a[i]); } for(i=0;i<NUM;i++) { for(j=0;j<NUM;j++) { if(a[i]>a[j]) { k=a[i]; a[i]=a[j]; a[j]=k; } } } for(i=0;i<NUM;i++...
  • ...鐢ㄥ啋娉℃帓搴忔硶瀵硅繖浜涙暣鏁拌繘琛浠庡皬鍒板ぇ鎺掑簭,杈撳嚭鎺掑簭鍓嶅拰鎺掑簭鍚庣殑...
    绛旓細int a[10];int b[10]={9,10,11,12,1,2,3,4,0,1};int c[10]={1,2,3,4,13,14,15,16,2,3};int i;printf("璇疯緭鍏ュ緟鎺掑簭鐨10涓暟锛");for(i=0;i<10;i++){ scanf("%d",&a[i]);} fun(a);printf("\n鎺掑簭鍚庣殑鏁板垪濡備笅锛歕n");for(i=0;i<10;i++){ printf("...
  • ...浠庣敤鎴疯緭鍏10涓鏁存暟,瀵瑰叾鎸夌収浠庡皬鍒板ぇ鐨勯『搴鎺掑簭,骞惰緭鍑虹粨鏋溿俖鐧惧害...
    绛旓細//瑕佹眰浠绘剰杈撳叆10涓暟锛岀劧鍚庢寜浠庡皬鍒板ぇ椤哄簭杈撳嚭 include<stdio.h> int main(){ int a[10];int i,j;int temp;printf("璇疯緭鍏10涓暣鏁帮細");for(i=0;i<10;i++){ scanf("%d",&a);} for(i=0;i<9;i++){ for(j=0;j<9-i;j++){ if(a[j]>a[j+1]){ temp=a[j];a[j]...
  • C璇█ 浠庨敭鐩樿緭鍏10涓鏁存暟,灏嗚繖10涓暣鏁版寜浠庡皬鍒板ぇ鐨勯『搴忚緭鍑恒
    绛旓細1銆佹墦寮杞欢杩涘叆椤甸潰锛岀偣鍑绘枃浠-鏂板缓-鏂囦欢-C++ Source File銆2銆佽緭鍏ラ澶勭悊鍛戒护鍜屼富鍑芥暟锛#include<stdio.h>/*杈撳叆杈撳嚭澶存枃浠*/void main()/*绌虹被鍨嬶細涓诲嚱鏁*/銆3銆佸畾涔夊彉閲忓拰鏁扮粍鐨勬暟鎹緭鍏10涓暟锛歩nt a[10],i,t;/*瀹氫箟鍙橀噺鍜屾暟缁勬暟鎹被鍨嬩负鏁村瀷*/printf("杈撳叆10涓暣鏁帮細");/*杈撳嚭鏂囧瓧...
  • 缂栧啓绋嬪簭,鐢ㄩ夋嫨娉曞10涓鏁存暟鎸浠庡皬鍒板ぇ椤哄簭鎺掑簭
    绛旓細sort(a,10); printf("\nafter\n"); for(i=0;i<10;i++) { printf("%d ",a[i]); } return 0;} 杩介棶 鎬庝箞缁撴灉涓嶆槸杈撳叆鐨10涓暟鐨勬纭鎺掑簭,鑰屾槸涓鍫嗗緢鎬殑鏁? 鏇村杩介棶 鏈洖绛旂敱鎻愰棶鑰呮帹鑽 涓炬姤| 绛旀绾犻敊 | 璇勮 15 9 鍊掗湁鐔妉ujin 閲囩撼鐜:59% 鏉ヨ嚜:鑺濋夯鍥 鎿呴暱: C/C++ 缂栫▼璇█ 鏁欒偛...
  • 鐢C璇█缂栧啓浠庨敭鐩樹笂浠绘剰杈撳叆10鏁存暟,瑕佹眰鎸浠庡皬鍒板ぇ鐨勯『搴忓湪灞忓箷涓婃樉绀...
    绛旓細main(){ int a[10],i,j,q;printf("input ten num:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){ q=a[i];a[i]=a[j];a[j]=q;} for(i=0;i<10;i++)printf("%d",a[i]);getch();return 0;} ...
  • C璇█:瀵硅緭鍏ョ殑鍗佷釜鏁杩涜浠庡皬鍒板ぇ鎺掑簭
    绛旓細鐒跺悗鐢╯canf鎺ュ彈鏁扮粍锛岀敤鎴疯緭鍏10涓暟浠ュ悗锛屼細灏嗘暟瀛樺湪鏁扮粍array涓紝鐒跺悗璋冪敤涓婇潰澶勭悊鎺掑簭鐨勫嚱鏁帮紝鍑芥暟鐨勮緭鍏ュ氨鏄垰鎵嶈緭鍏ョ殑鏁帮紝鏈鍚庡湪鎶婃帓搴鐨勭粨鏋滆緭鍑哄嵆鍙細4銆佹渶鍚庣紪璇戣繍琛岋紝杈撳叆10涓暟锛屾渶鍚庢帶鍒跺彴杈撳嚭浜嗘帓搴忕殑缁撴灉锛岃瘉鏄庣▼搴忕殑閫昏緫鏄病鏈夐棶棰樼殑銆備互涓婂氨鏄C璇█杈撳叆10涓暟鎺掑簭鐨勬紨绀猴細...
  • C璇█~鍗佷釜鏁板瓧浠庡皬鍒板ぇ鎬庝箞鎺掑垪~浠庡ぇ鍒板皬鍛
    绛旓細鐢ㄦ暟缁勬潵瀛樻斁鍗佷釜鏁板瓧锛屼娇鐢ㄢ滃啋娉鎺掑簭鈥濇潵瀹炵幇鎺掑簭銆10涓暟瀛闇杩涜9杞壂鎻忥紝姣忔鎵弿鏃舵瘮杈冪浉閭荤殑浜屼釜鏁帮紝濡傚畠浠笉绗﹀悎瑕佹眰鐨勫ぇ灏忓叧绯伙紝灏变氦鎹㈠畠浠殑浣嶇疆銆傜涓杞壂鎻忕粨鏉熸椂锛屾渶澶х殑鏁板氨鈥滄矇鈥濆埌鏈鍚庛備簬鏄浜岀殑鑼冨洿灏卞皯浜嗕竴涓暟銆傚啀杩涜绗簩涓ゆ爾鍨嬨佺涓夎疆锛屸︹斺旂洿鍒扮9杞氨瀹屾垚浜嗐傛渶鍚庤緭鍑...
  • c璇█ 杈撳叆鍗佷釜鏁存暟,浠庡ぇ鍒板皬鎺掑簭,骞惰緭鍑烘潵銆傛眰瑙i鎬濊矾
    绛旓細int arr[10] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };int sz = sizeof(arr) / sizeof(arr[0]);BubbleSort(arr, sz);PrintArr(arr, sz);system("pause");return 0;} 2銆佹寚閽堝舰寮忋傚垱寤轰袱涓彉閲弒tart銆乪nd锛岃浣忔暟缁勮捣濮嬩笌缁撴潫浣嶇疆鍏冪礌鐨勫湴鍧锛屽簲鐢ㄤ袱娆 while 寰幆浜ゆ崲鍦板潃 鎸...
  • 扩展阅读:从小c到大 ... c语言3个数字从小到大 ... 小学生学python还是c++ ... c++和python先学哪个 ... 1-9的数字从小到大 ... c语言按从小到大输出 ... 迷你小数字0-9 ... c++从小到大输出三个数 ... c语言1-100猜数字游戏代码 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网