请大侠帮帮忙,这是我们期末考试题,最好多几种解法
全班同学作同一道题目,按照交作业的先后顺序上台讲解,大家为上台讲解者打分。具体要求如下: 【题目】 定义一个整型数组,从键盘输入它的各个元素的值;接着输出各个元素的值;然后编写一个函数,删除所有出现次数多于1次的元素,剩余的元素按照原顺序集中到数组的前部;然后将该数组输出到屏幕上。
【输出结果格式示例】 本程序是由 *** 编写的 用户输入的数组含有10个元素: 1 35 1 8 5 5 7 2 8 125 删除出现次数多于1次的所有元素之后,还有4个元素: 35 7 2 125 上台讲解要求】 ; 算法简单说明; 程序展示 ; 程序运行,输进去一些数据,看运行结果 ; 回答简单的提问
以下代码除外的新代码?
#include<stdio.h> int fun(int[]); int main() { int a[10],i,len ; clrscr(); printf("this command is written by zhang shengjun");/*程序制作人*/ for(i=0;i<10;i++)/*循环输入10个元素*/ { printf("\nplease enter %d numbers",i+1); scanf("%d",&a[i]); } printf("\nyou input 10 numbers\n"); for(i=0;i<10;i++) { printf("%d ",a[i]);/*输出元素*/ } fun(a); getch();
} int fun(int a[])/*函数*/ { int i,j,b[10],len=0 ; for(i=0;i<10;i++)/*把a中元素全放到b中*/ { b[i]=a[i]; } for(i=0;i<10;i++)/*核心算法*/ { for(j=0;j<10;j++) { if(i!=j&&b[i]==b[j])/*用b中元素和除自己以外的所有b中元素比较,一旦有相等就中断循环*/ { break ; }
} if(j==10)/*如果循环未中断则满足此条件*/ { a[len]=b[i]; len++; } } printf("\n"); printf("\nwe delete the numbers which appears more than one times,and %d numbers left:",len); for(i=0;i<len;i++)/*打印需要元素*/ { printf("%d ",a[i]); } }