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

C语言程序:冒泡排序(降序,从大到小)
选择排序
输入两个正整数m和n,求 最大公约数和最小公倍数
任取1~9中四个互不相同的数,使它们和为12

请不要网上查,我会在这里问就说明我查过了。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int sort1(int *d,int n)
{
int i,j,temp;
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;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<n;i++)
{
for(j=i;j<n;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<number;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;
}

追问

看的不是很清楚,能写的条理清晰些吗?

追答

里面有注释

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-02
t就是一个中间变量 用来交换位置用的追问

下面的也是一个程序,源程序是错的。要看的是题目

第2个回答  2014-12-02
t是保存原来的变量 a,b经过运算已经变了追答

保存后再复制给b