C语言的一道编程题

来源:百度知道 编辑:UC知道 时间:2024/05/31 13:49:11
从键盘上给一维数组a[N]任意输入N个正整数,若输入了小于等于0的整数,必须提示重新录入该数,然后调用函数fun实现删去a数组中所有重复的元素,比如a数组中如果存放的是3,2,6,2,198,56,6,则删除以后a数组中的内容为3,2,6,198,56,其中,fun函数的返回值是a数组中删除重复元素以后的有效元素个数,在main函数中还要显示出删除了重复元素以后的a数组及剩下的有效元素个数,另外,N呗宏定义为15

#include <stdio.h>
#define N 15

int fun(int a[])
{
int cnt=0;
int i,j,k;
int n=N;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(a[i]==a[j])
{
for(k=j;k<n-1;k++)
a[k]=a[k+1];
cnt++;
n--;
}
return N-cnt;
}

int main()
{
int a[N],i,cnt;
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}

cnt=fun(a);
for(i=0;i<cnt;i++)
printf("%d ",a[i]);
printf("\n%d \n",cnt);

return 0;
}

我们学的没宏定义,

我比较懒,只编写了一部分,呵呵。
#include <stdio.h>
#define N 15
getnumbers (int *a)
{
int k,i;
printf("Please input 15 numbers bigger than 0.\n");
for (i=0;i<N;i++)
{
scanf("%d",&k);
while (k<=0)
{
printf("The number inputed is less than 0,