www.zhnq.net > C语言对n个数从小到大排序

C语言对n个数从小到大排序

#include<stdio.h> main() { int a[10],i,j,t; printf("Input 10 numbers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("before sorting:\n"); for(i=0;i<10;i++) printf("%d ",a[i]); for(j=0;j<9;j++) for(i=0;i<9-j;i++) if(a[i]>a[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t;}

#include<stdio.h>#include<stdlib.h> int main() { int n,a[100],i=0,j,temp; printf("请输入数的个数:"); scanf("%d",&n); printf("\n请输入要排序的数:\n"); for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n;i++) for(j=i;j<n;j++) if(a[j]<a[i]) temp=a[i],a[i]=a[j],a[j]=temp; printf("排序后:\n"); for(i=0;i<n;i++) printf("%d ",a[i]); return 0; }

这个程序思路是对的,只是有两个地方出了问题!一是 if(x>a[z]) 这条语句意味着只要输入的 x 大于 11 就成立 所以你要找的是第一个比 x 大的数而不是比 x 小的数 if(x>a[z])应改为if(x还有 a[y]=x; 应改为 a[y+1]=x; 因为在 for(y=7;y>=z;y--) 语句的最后一次循环中,再将比 x 大的第一个数向后存放一个单位时, y 又自减了一次.这时的 a[y] 是比 x 小的最后一个数 所以你将 x 赋给 a[y] 实际上是将原数组中比 x 小的最后一个数覆盖了 所以 a[y]=x; 应改为 a[y+1]=x; 你运行一下试试看!

定义一个较大的数组,如int a[1000]; //1000个足够了吧,不够可以再加输入数据时,增加一个记数器,如:int num,cnt=0;while( scanf("%d",&num ) == 1 ){ a[cnt]=num ; cnt++ ;}这样,你就知道输入多少个数了,然后,排序时,也就是知道排多少个数了.

#includeint main(){int i,j,t,n,a[100]; printf("请输入有几个整数( 评论0 0 0

n个值记入数组,可选用任意一种排序方法(选择、冒泡、快速等),完成排序.

#include<stdio.h>#define N 5void main(){ int i,j,k,a[N],t; printf("请输入%d个整数:",N); for(i=0;i<N;i++) scanf("%d",&a[i]); for(i=0;i<N-1;i++) { k=i; for(j=i+1;j<N;j++) if(a[k]<a[j]) k=j; if(a[i]!=a[k]) {t=a[i];a[i]=a[k];a[k]=t;} } for(i=0;i<N;i++) printf("%3d",a[i]); putchar('\n');}

#define N=10;//对10个数排序 main() { int a[N]; int i,j,t; printf("input 10 numbers:\n"); for(i=1;i<=10;i++) scanf("%d",&a[i]); printf("\n"); for(j=1;j<=9;j++) for(i=1;i<=10-j;i++) if(a[i]>a[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t;} printf("the sorted numbers is:\n"); for(i=1;i<=10;i++) printf("%d",a[i]); }

http://zhidao.baidu.com/question/508227874.html?sort=6&old=1&afterAnswer=1#answer-1279924204你们是在一起考试?排序的算法有很多,对空间的要求及其时间效率也不尽相同.下面列出了一些常见的排序算法.这里面插入排序和冒泡排

从题目猜是C语言,以下代码供参考#include <stdlib.h>#include <stdio.h>#define m 1000 //定义数组最大容量int main(void){int a[m];//int a[]={5,12,10,78,41,20,30,10,8};int n; int i,j,*p,*q,t;printf("输入个数n:");scanf("%d",&n);p=a;q=a;printf

网站地图

All rights reserved Powered by www.zhnq.net

copyright ©right 2010-2021。
www.zhnq.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com