yrf1998 2016-12-06 05:33 采纳率: 25%
浏览 1043

fun函数意思是将一个数组中为0的项删除。该代码输出新数组的各元素,同时输出元素个数

#include
int fun(int ,int);
int main()
{
int n,i,p,s,a[100];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
p=fun(a,n);
printf("%d\n",p);
for(i=0;i<p;i++)
printf("%d ",a[i]);
return 0;
}
int fun(int *a,int s)
{
while(
(a+s-1)==0) s--;
int i,j,t=s;
for(i=0;i<s-1;i++)
if(*(a+i)==0)
{
for(j=i;j<s-1;j++)
(a+j)=(a+j+1);
t--;
i--;
}
*(a+t-1)='\0';
return t;

}

若将
p=fun(a,n);
printf("%d\n",p);
for(i=0;i<p;i++)
原本输入

5
1 1 0 0 1
输出
3
1 1 1
改为
printf("%d\n",fun(a,n));
for(i=0;i<fun(a,n);i++)后
输入
5
1 1 0 0 1
输出
3
1 1 1 1 1
这到底是为什么啊??求大神解释 拜托了

  • 写回答

1条回答 默认 最新

  • shen_wei 2016-12-06 06:40
    关注
     int fun(int *a,int s)
    {
        int i = 0,j = 0;
        int *pArr = a;
        while(s --)
        {
            if (*pArr != 0)
            {
                a[i ++] = *pArr; 
            }
            *pArr ++;
        }
        a[i] = '\0';
        return i;
    }
    
    int main()
    {
        int n,i,p,s,a[100] = {0};
        scanf("%d",&n);
        for(i=0;i<n;i++)
            scanf("%d",&a[i]);
        p = fun(a,n);
        printf("%d\n",p);
        for(i=0;i<p;i++)
            printf("%d ",a[i]);
        return 0;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果