C语言程序:冒泡排序(降序,从大到小) 选择排序

2024-12-01 04:49:32
推荐回答(3个)
回答1:

#include
#include
#include
int sort1(int *d,int n)
{
int i,j,temp;
for(i=0;i {
for(j=0;j {
if(d[j+1]>d[j])
{
temp=d[j+1];
d[j+1]=d[j];
d[j]=temp;
}
}
}
return 0;
}
int sort2(int *d,int n)
{
int i,j,temp;
for(i=0;i {
for(j=i;j {
if(d[j]>d[i])
{
temp=d[j];
d[j]=d[i];
d[i]=temp;
}
}
}
return 0;
}
int common_divisor(int m,int n)
{
int i,temp;
if(m>n)
{
temp=m;
m=n;
n=temp;
}
for(i=m;i>=1;i--)
{
if(m%i==0&&n%i==0)
{
printf("\n%d是%d和%d的最大公约数\n",i,m,n);
break;
}
}
printf("%d是%d和%d的最最小公倍数\n",(m*n)/i,m,n);
return 0;
}
int diff12()
{
int i,j,k,m;
//int d[4];
for(i=1;i<=9;i++)
for(j=i;j<=9;j++)
for(k=j;k<=9;k++)
for(m=k;m<=9;m++)
{
if(i!=j&&i!=k&&i!=m&&j!=k&&j!=m&&k!=m&&i+j+k+m==12)
{
printf("%d+%d+%d+%d=12\n",i,j,k,m);
}
}
return 0;
}
float sum20()
{
int n,t,a=2,b=1,number=20;
float s=0;
for(n=1;n {
s=s+a*1.0f/b;
t=a;//保留前一项的分子,因为前一项的分子是后一项的分母
a=a+b;//a要发生变化,所以前面用t保留前一项的分子
b=t;//前一项的分子存储在t中,这里赋值给下一项的分母
}
printf("前%d项之和为%f\n",number,s);
return s;
}
int main()
{
int data[10];
int i;
srand(time(NULL));
for(i=0;i<10;i++)
{
data[i]=rand()%100;
}
printf("原来的数组为:\n");
for(i=0;i<10;i++)
{
printf("%-4d",data[i]);
}
sort1(data,10);
printf("\n冒泡法数组为:\n");
for(i=0;i<10;i++)
{
printf("%-4d",data[i]);
}
sort2(data,10);
printf("\n选择法数组为:\n");
for(i=0;i<10;i++)
{
printf("%-4d",data[i]);
}
common_divisor(10,4);
diff12();
sum20();
return 0;
}

回答2:

t就是一个中间变量 用来交换位置用的

回答3:

t是保存原来的变量 a,b经过运算已经变了