输入为两行,第一行是个正整数N,第二行输入N个整数,然后从小到大排序。
#include <stdio.h>
int main()
{
int n;
int a[10],i,t,j;
printf("请输入n!\n");
scanf("%d",&n);
printf("请输入%d个数!\n",n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
printf("输出结果是:\n");
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
消除重复的值
#include<stdio.h>
int main()
{
int a[2001];
int n,i,j;
printf("请输入n的值\n");
scanf("%d",&n);
printf("请输入n个数\n",n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
for(j=1;j<i;j++)
{
if(a[j]==a[i])
{
i=i-1;
n=n-1;
}
}
}
for(i=1;i<=n;i++)
{
printf("%d ",a[i]);
}
}
问题同上,将这n个数从小到大打印一边,重复的数只打印一次。
#include <stdio.h>
main()
{
int i,j,t;
int a[10];
printf("请输入10个数:\n");
for(i=0;i<10;i++) //输入
scanf("%d",&a[i]);
printf("输入的10个数是:");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
for(i=0;i<10;i++) //排序
{
for(j=i+1;j<10;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
printf("10个数排序后是:");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
for(i=0;i<9;i++) //删除重复数字
{
if(a[i]==a[i+1]) //如果后一个数等于前一个数,就把后一个数删掉(ps:这里已经排过序,所以可以这样做来删除重复数字)
{
for(j=i+1;j<9;j++) //这里的删除用的直接覆盖
a[j]=a[j+1];
}
}
printf("删除重复数字后:");
for(i=0;i<10;i++)
{
if(i>0&&a[i-1]==a[i]) //只输出前面不重复的数
break;
printf("%d ",a[i]);
}
printf("\n");
}