c-free下编译通过,已优化!
#include
"stdioh"
void
fun(int
m)
{
int
i,j=0;
for(i=2;i<=m;i++)
{
while(m%i==0)
{
j++;
if(j==1)
printf("=%d",i);
else
printf("%d",i);
m=m/i;
}
}
}
int
main()
{
int
i,j,k,t,num[4],s[100],temp;
printf("按从大到小顺序输入4个不同的整数(1~9):\n");
scanf("%d%d%d%d",&num[0],&num[1],&num[2],&num[3]);
for(i=0;i<4;i++)
for(j=0;j<4;j++)
for
(k=0;k<4;k++)
{
if
(num[i]!=num[k]&&num[i]!=num[j]&&num[j]!=num[k])
{
printf("%d%d%d",num[i],num[j],num[k]);
temp=100num[i]+10num[j]+num[k];
fun(temp);
printf("\n");
}
}
}
#include<stdioh>
int main()
{int i,j,t,n,a[100];
printf("请输入有几个整数(<=100):du");
scanf("%d",&n);
printf("请输入这%d个整数:zhi\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[j]<a[k])
k=j;
t=a[i];a[i]=a[k];a[k]=t;
}
printf("排序以后的数:\n");
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
扩展资料:
在简单选择排序过程中,所需移动记录的次数比较少。最好情况下,即待排序记录初始状态就已经是正序排列了,则不需要移动记录。
最坏情况下,即待排序记录初始状态是按第一条记录最小,之后的记录从小到大顺序排列,则需要移动记录的次数最多为3(n-1)。
简单选择排序过程中需要进行的比较次数与初始状态下待排序的记录序列的排列情况无关。当i=1时,需进行n-1次比较;当i=2时,需进行n-2次比较;依次类推,共需要进行的比较次数是(n-1)+(n-2)+…+2+1=n(n-1)/2,即进行比较 *** 作的时间复杂度为O(n^2),进行移动 *** 作的时间复杂度为O(n)。
参考资料来源:百度百科-简单选择排序
int a[10];
int i, j, k;
int t;
(输入10个数字到a中,略过)
for (i=0; i<9; i++) {
k = i;
for (j=i+1; j<10; j++) {
if (a[k] < a[j]) // 现在这样是降序排列,将<改成>,就变成升序排列
k = j;
}
if (k != i) {
t = a[k];
a[k] = a[i];
a[i] = t;
}
}
循环的边界需要修改,冒泡排序外循环从第1个到倒数第二个,内循环从外循环+1到最后一个,修改为:
for(int i=0;i<99;i++){for(int j=i+1;j<100;j++){
if(a[i]<a[j]){
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
#include <stdioh>
#include <mathh>
int isResult(int n,int number)
{
int sum = 0;
while(number>0)
{
sum += pow(number%10,n);
number/=10;
}
return sum;
}
int main()
{
int n;
scanf("%d",&n);
int i = 0;
for(i=pow(10,n-1);i<pow(10,n);i++)
{
if(isResult(n,i) == i)
{
printf("%d ",i);
}
}
printf("\n");
return 0;
}
CTestPermutation::~CTestPermutation()
{
cout<<">>>>>>>>>>>>>>>>>>>>>>>>CTestPermutation::~CTestPermutation()"<<endl;
}
void CTestPermutation::DoTest()
{
cout<<"-------将N个数进行排列组合-------"<<endl<<endl;
vector<int> vecNums,vecPermutated;
cout<<"示例数据:";
for(int i = 1; i < 5;i++)
{
vecNumspush_back(i);
cout<<i<<" ";
}
cout<<endl;
cout<<"排列组合结果:"<<endl;
Permutation(vecPermutated,vecNums);
}
void nn(char c,char cc[])
{//对于有重复的数据这就不行了
//虽然可以都列出来,中间有重复的可能
char tmp,qc;
if(c=='#')printf("%s",cc);
else {
for(qc=c;qc!='#';qc++){
tmp=c;
c=qc;
qc=tmp;
cc++;
nn(qc,cc);
cc--;
tmp=c;
c=qc;
qc=tmp;
}
}
}
main()
{
char cc[100];//请以#结束
scanf("%s",&cc);
nn(cc,cc);
}
以上就是关于三位数排列的C语言程序全部的内容,包括:三位数排列的C语言程序、编一程序用简单选择排序方法对n个整数排序(从大到小)。 对n个数进行降序排列,简单选择排序的算法思、C语言编程 将a[10]数组中10个数分别按升序和降序排列的程序。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)