| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1830 人关注过本帖
标题:求助各位大佬:删除n个数中的0元素
只看楼主 加入收藏
Emmaer123
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2019-9-20
结帖率:66.67%
收藏
 问题点数:0 回复次数:9 
求助各位大佬:删除n个数中的0元素
#include <stdio.h>
int main()
{
    int i,n,j,flag,count=0,MAX=0;
    char a[1000]={0};char b[1000]={0};
    scanf("%d",&n);
    for (i=0;i<n;i++)   //依次输入数组   
     {    scanf("%s",&a[i]);
          if(a[i]==0) MAX++;  //记录这串数中所有0的个数
          b[i]=a[i];
     }
   
    for(i=n-1;i>=0;i--) //倒着从这串数组开始,例如从最后一个a[i-1]开始,将它的下标改变 i-1减去它的前面所有0的个数即count,为了不覆盖掉前面 还没改下标的元素,因此赋给了b数组
    {
        if(a[i]!=0)
        {
            for(j=0;j<i-1;j++)
            if(a[i]==0)        { count++; }
        }
        b[i-count]=a[i];
        count=0;   //count重置归零,因为每个元素前的0元素个数count不同
    }
    for(i=0;i<n-MAX;i++)
    {
        printf("%d",b[i]);
    }
    return 0;   
}
   
    请教各位大神,为什么编译不出来?感谢路过的大神花时间进贴指教


[此贴子已经被作者于2019-10-15 16:47编辑过]

搜索更多相关主题的帖子: 元素 count 个数 for 删除 for 个数 元素 删除 count 
2019-10-14 22:17
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:0 
因为  x=0; 中 x没有定义。
2019-10-14 22:34
Emmaer123
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2019-9-20
收藏
得分:0 
回复 2楼 自学的数学
sorry,这个错误实在太低级了哈哈,但我改了以后还是编译不了
2019-10-14 23:06
bcbbcclbbc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:194
专家分:528
注 册:2019-8-15
收藏
得分:0 
表示看不懂第二个for语句,理解不了程序的逻辑
for(i=n-1;n>=0;i--)

判断语句“n>0”而在之后的循环体中,n没有任何变化,也没有break语句,怎么退出循环?
2019-10-15 06:14
Emmaer123
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2019-9-20
收藏
得分:0 
回复 4楼 bcbbcclbbc
抱歉我看了下n应该改成i,可是改过之后还是错了
2019-10-15 16:51
Emmaer123
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2019-9-20
收藏
得分:0 
#include <stdio.h>
int main()
{
    int i,n,j,flag,count=0,MAX=0;
    char a[1000]={0};char b[1000]={0};
    scanf("%d",&n);
   
    for (i=0;i<n;i++)   //依次输入数组   
     {    scanf("%d",&a[i]);
          if(a[i]==0) MAX++;  //记录这串数中所有0的个数
          b[i]=a[i];
     }
    for(i=n-1;i>=0;i--) //倒着从这串数组开始,例如从最后一个a[i-1]开始,将它的下标改变 i-1减去它的前面所有0的个数即count,为了不覆盖掉前面 还没改下标的元素,因此赋给了b数组
    {
        if(a[i]!=0)
        {         // 7 8 0 9 3 4  0 5          7 8 9 3 4 5
                  //b[5]=a[7]    b[4]=a[5] b[3]=a[4]   b[2]=a[3]
            for(j=0;j<i-1;j++)   
            {
               if(a[j]==0)     count++;
            }
        
           b[i-count]=a[i];printf("%d",b[i]);
           count=0;j=0;   //count重置归零,因为每个元素前的0元素个数count不同
           continue;
       }
    }
    printf("\n");
    for(i=0;i<n-MAX;i++)  printf("%d",b[i]);  
}
2019-10-15 19:28
bcbbcclbbc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:194
专家分:528
注 册:2019-8-15
收藏
得分:0 
回复 6楼 Emmaer123
懂了,简化了一下第二个for循环
count=MAX;
    for(i=n-1;i>=0;i--)
    {
        if(a[i]==0) count--;   
        else b[i-count]=a[i];
    }

char a[1000]={0};char b[1000]={0};
   

这个定义字符数组,首先字符的'0'与整数的0是不相等的,如果你输入的都是数字则应该定义为int类型。

你说的错了是指什么,编译有问题,还是结果不对,这个要说清楚,不方便可以粘贴相应的错误或截图

[此贴子已经被作者于2019-10-16 02:45编辑过]

2019-10-16 02:30
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
看过程不象是删除数中的0,是删除字符数组中元素为'0'的元素?
2019-10-16 10:42
bcbbcclbbc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:194
专家分:528
注 册:2019-8-15
收藏
得分:0 
回复 8楼 吹水佬
楼主的程序有点前后矛盾,输入输出的格式符都是整型,但是定义的是字符数组,这样能正常读入数据吗?
2019-10-17 01:30
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:570
专家分:3727
注 册:2019-7-29
收藏
得分:0 
#include <stdio.h>
int main()
{
    int i,n,j,count=0,MAX=0;
    char a[1000]={0};
    char b[1000]={0};
    scanf("%d",&n);
    for (i=0;i<n;i++)   //依次输入数组
     {    scanf("%d",&a[i]);
          if(a[i]==0) MAX++;  //记录这串数中所有0的个数
     }

     j=0;
    for(i=n-1;i>=0;i--)
    {
        if(a[i]!=0)
        {
            b[j]=a[i];
            j++;
        }
    }
    for(i=0;i<n-MAX;i++)
    {
        printf("%d\t",b[i]);
    }
    return 0;
}
你scanf("%s",&a[i]);;输入中用的是%s所以输入的会被解析成ASCII码。后面的也比较乱,可以简化一下,你试试我这个

[此贴子已经被作者于2019-10-17 18:32编辑过]


一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2019-10-17 18:30
快速回复:求助各位大佬:删除n个数中的0元素
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018186 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved