c语言排序后删除数组中重复的数字再排序输出

来源:互联网 发布:电视播放软件破解版 编辑:程序博客网 时间:2024/04/30 18:57
用c语言编一个程序,要求输入5(用户自定义)个数字,用数组接收,然后进行冒泡法排序,接着如果有重复的数字,则删除重复的数字,只留一个再与其它不重复的数字排序后再输出!比如输入2 5 6 3 4,则输出2 3 4 5 6;输入4 2 2 3 5,则输出2 3 4 5。不要太复杂,最好用for循环,也不要用函数调用。
#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");
}
#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");
}
0 0
原创粉丝点击