一道c语言编程题,求大佬解答,求代码
一道c语言编程题,求大佬解答,求代码编程实现:从键盘上给一维数组a[N]任意输入N个正整数,若输入了小于等于0的整数,必须提示重新录入该数;然后调用函数fun实现删去a数...
一道c语言编程题,求大佬解答,求代码编程实现:从键盘上给一维数组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 i,j,k,m=N;
for(i=0;i<m-1;i++)
for(j=i+1;j<m;j++)
if(a[j]==a[i])
{
for(k=j;k<m-1;k++)
a[k]=a[k+1];
m--;i--;
}
return m;
}
void main()
{
int i,k,a[N];
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
if(a[i]<=0)
{
printf("输入的第%d个数不是正整数,请重新输入第%d个数:\n",i+1,i+1);
i--;
}
}
k=fun(a);
for(i=0;i<k;i++)
printf("%d ",a[i]);
printf("\n有效元素个数: %d",k);
}
//运行示例:
展开全部
#include<stdio.h>
#define N 15
int fun(int a[])
{int i,j,k,n=N;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[j]==a[i])
{for(k=j;k<n-1;k++)
a[k]=a[k+1];
n--;
j--;
}
return n;
}
int main(void)
{int i,n,a[N];
for(i=0;i<N;i++)
do
{scanf("%d",&a[i]);
if(a[i]<=0)printf("请重新输入一个正数:");
}while(a[i]<=0);
printf("数组a中有%d个非重复元素:\n",n=fun(a));
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询