① c语言 降序排列 快速排序
_q_sortc改为q_sortc即可运行——。-
额···那改下
void q_sortc(struct complex *list,int num1,int num2)
{
int a,p,q; struct complex tmp;
p=num1;
q=num2;
a=sqrt(list[(num1+num2)/2].r * list[(num1+num2)/2].r + list[(num1+num2)/2].i * list[(num1+num2)/2].i);
do{
for( ; sqrt(list[p].r * list[p].r + list[p].i * list[p].i)>a;p++);
for( ; sqrt(list[q].r * list[q].r + list[q].i * list[q].i)<a;q--);
if(p>=q){ //这里改为p <= q
tmp=list[p];
list[p]=list[q];
list[q]=tmp;
p++;
q--;
}
}while(p>=q); //这里改为p <= q
if(num1<q) q_sortc(list,num1,q); if(p<num2) q_sortc(list,p,num2);
}
② 用C语言编写,输入10个数按降序排列
源程序代码如下:
#define _CRT_SECURE_NO_WARNINGS//VS环境下需要,VC不需要
#include<stdio.h>//头文件;
int main()
{
int i = 0;
int j = 0;
double temp = 0;
double a[10] = { 0 };//定义三个变量和一个长度为10的数组;
printf("请输入十个数:
");//显示“请输入十个数”
for (i = 0; i < 10; i++)
{
scanf("%lf", &a[i]);//从键盘上输入十个数送到数组;
}
for (i = 1; i < 10; i++)//for循环,进行9次循环;
{
for (j = i - 1; j >= 0; j--)//for循环,在每次大的循环中,a[i]从a[1]依次与它前面的数比较;
{
if (a[j + 1] > a[j])
{
temp = a[j + 1];
a[j + 1] = a[j];
a[j] = temp;//如果a[j + 1]>a[j],则把这两个数组元素互换,目的把最大的数放到前边;
}
else
{
break;
}
}
}
for (i = 0; i < 10; i++)
{
printf("% lf
", a[i]);//输出排好顺序的十个数;
}
return 0;//返回值为0;
}
程序运行结果如下:
(2)降序法排列c语言扩展阅读:
其他实现方法如下:
#include<stdio.h>
int mysort(int *a, int n)
{
int i, j, temp;
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - 1 - i; j++)
{
if (a[j] > a[j + 1])
{
temp = a[j + 1];
a[j + 1] = a[j];
a[j] = temp;
}
}
}
return 0;
}
int main()
{
int a[10];
int i, j;
printf("input 10 numbers:
");
for (i = 0; i < 10; i++)
{
printf("the number%d is:", i + 1);
scanf("%d", a + i);
fflush(stdin);
}
mysort(a, 10);
for (i = 9; i >= 0; i--)
printf("%3d", a[i]);
printf("
");
return 0;
}
③ c语言 选择法对10个整数降序排列
//选择法排序
#include <stdio.h>
main(void)
{
int a[10],i,j,k,t;
printf("请输入排序数列:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<10-1;j++)
{
k=j;
for(i=j+1;i<10;i++)
if(a[k]>a[i])
k=i;
{
t=a[j];
a[j]=a[k];
a[k]=t;
}
}
printf("从大到小排序:");
for(i=0;i<10;i++)
printf("%d ",a[i]);
getch();
}
④ C语言用排序法给十个数降序排列
#include<stdio.h>
int main()
{
int a[10],temp;
int i,j,k;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;j++)
if(a[j]>a[k])
k=j;
if(i!=k)
{
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
for(i=0;i<10;i++)
printf("%d\n",a[i]);
return 0;
}
不懂可以追问
⑤ c语言 用一个函数实现用冒泡法对十个整数升序和降序排列 麻烦写全些
#include<stdio.h>
voidsort1(inta[],intn)
{inti,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
voidsort2(inta[],intn)
{inti,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(a[j]<a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
intmain()
{inti,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("
");
sort1(a,10);
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("
");
sort2(a,10);
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("
");
return0;
}
⑥ 关于C语言进行降序排列
#include<stdio.h>
#include
<math.h>
//从键盘上输入10个整数,要求用插入法实现对它们进行降序排列。
//(主函数完成输入输出功能,排序用函数sort()来实现)。
void
sort(int
a[],int
n)
{
int
i,j,temp;
for(i=0;i<n-1;i++)
{
temp=a[i+1];
j=i;
while(j>-1&&temp<a[j])
{
a[j+1]=a[j];
j--;
}
a[j+1]=temp;
}
}
int
main()
{
int
i,a[10]={0};
printf("请输入10个数据:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
printf("%d\t",a[i]);
sort(a,10);
for(i=0;i<10;i++)
printf("%d\t",a[i]);
return
0;
}
⑦ 如何用C语言将一组数进行降序排列
假设有n个数。
#include<stdio.h>
void min(int *a,int *b)
{
int data;
if(*a<*b)
{
data=*a;
*a=*b;
*b=data;
}
}
int main()
{
int t[10];//假设n=10,可以设置为其他数
int i,j,n=10;
for(i=0;i<n;i++)
scanf("%d",&t[i]);
for(i=0;i<n-1;i++)
{
for(j=i;j<n-1;j++)
{
min(&t[j],&t[j+1]);
}
}
for(i=0;i<n;i++)
printf("%3d",t[i]);
printf("\n");
return 0;
}
⑧ C语言,给一个数列降序排列
额。。。。你的第二个for循环有问题吧,你应该想控制j的值小于5,而不是i的值小于5,i小于5的话,当j》5,是符合条件的。此时数组越界了(你定义的数组时num【5】),程序自然报错了。而且这也构成死循环了。。。。。。。
⑨ c语言对从键盘输入的十个整数进行降序排序,排序后输出第二大的数,编写fun函数
排序有挺多方法的,例如:冒泡排序法、选择排序法
以下使用选择排序
#include<stdio.h>
voidfun(inta[],intn)
{
inti,j,k,tmp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;++j)
if(a[j]>a[k])k=j;
if(k!=i)
{
tmp=a[k];a[k]=a[i];a[i]=tmp;
}
}
}
intmain()
{
inta[10];
inti;
for(i=0;i<10;i++)scanf("%d",&a[i]);
fun(a,10);
for(i=0;i<10;i++)printf("%d ",a[i]);
printf("第二大的数是:%d",a[1]);
return0;
}
⑩ C语言:随机生成N个四位数并按降序排列,分别输出排序前后的N个数且每行10个;排序用选择法;怎么写
代码文本:
#include "stdio.h"
#include <stdlib.h>
#include "time.h"
#define N 37
int main(int argc,char *argv[]){
int a[N];
void myset(int *,int);
void mysort(int *,int);
void myout(int *,int,int x=0);
myset(a,N);
myout(a,N);
mysort(a,N);
myout(a,N,1);
return 0;
}
void myset(int *p,int n){//随机数生成函数
srand((unsigned)time(NULL));
for(n--;n>=0;p[n--]=rand()%9000+1000);
}
void mysort(int *p,int n){//选择法排序
int i,j,k;
for(i=0;i<n;i++){
for(k=i,j=k+1;j<n;j++)
if(p[k]<p[j])
k=j;
if(k-i)
j=p[k],p[k]=p[i],p[i]=j;
}
}
void myout(int *p,int n,int x=0){//输出函数
int i,k;
puts(x==0 ? "Before ordering:" : "After ordering:");
for(k=i=0;i<n;i++)
printf(++k%10 ? "%5d" : "%5d ",p[i]);
if(k%10)
putchar(' ');
}
供参考……