| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3460 人关注过本帖
标题:目的是要将字符串中所有下标为偶数且ASCII码值为奇数的字母删除
只看楼主 加入收藏
K1396
Rank: 1
等 级:新手上路
帖 子:15
专家分:4
注 册:2018-5-25
结帖率:71.43%
收藏
已结贴  问题点数:20 回复次数:5 
目的是要将字符串中所有下标为偶数且ASCII码值为奇数的字母删除
#include  <stdio.h>
#define N 100

void luan(char a[],char b)
{
int h,r=0;
for(h=0;h<=b;h++)
    if(h%2==0&&
    ((a[h]>='a'&&a[h]<='z')&&
    (a[h]>='A'&&a[h]<='Z')))
        if(a[h]%2!=0)
            a[r++]=a[h];
a[r]='\0';
}

int main()
{
int x;
char a[N];
char *p;
p=a;
gets(a);
while(*p)
p++;
p--;
luan(a,*p);
printf("%s\n",a);
};
搜索更多相关主题的帖子: 字符串 字母 删除 char int 
2018-08-03 09:17
K1396
Rank: 1
等 级:新手上路
帖 子:15
专家分:4
注 册:2018-5-25
收藏
得分:0 
能跑起来 但输出结果跟预期有 大佬给看看吧
2018-08-03 09:18
幻紫灵心
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山咔咔里面
等 级:贵宾
威 望:53
帖 子:395
专家分:2640
注 册:2018-3-30
收藏
得分:8 
程序代码:
#include  <stdio.h>
#define N 100

void luan(char a[],char b)
{
    int h,r=0;
    for(h=0;h<b;h++)
        if( h%2==0  &&
            ((a[h]>='a'&&a[h]<='z') ||//这里改为||
               (a[h]>='A'&&a[h]<='Z')))
                    if(a[h]%2!=0)
                    a[r++]=a[h];
    a[r]='\0';
}

int main()
{
    int x;
    char a[N];
    int p=0;//指针改为int 计数即可,你那么用指针是错的吧...
    gets(a);
    while(a[p]!=EOF)//末尾跳出
        p++;
    luan(a,p);
    printf("%s\n",a);
} 

你试试看,暂时就改了这么多...

saber,别哭.
2018-08-03 09:51
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:3 
以下是引用K1396在2018-8-3 09:18:45的发言:

能跑起来 但输出结果跟预期有 大佬给看看吧
听不懂,为什么不直接说 输入了什么、输出什么、期待输出什么

我也不知道你要干什么,瞎写的
程序代码:
#include  <stdio.h>

char* foo( char* s )
{
    for( size_t i=0,j=0; s[i]; ++j )
        if( j%2!=0 || s[j]%2==0 || !((s[j]>='A'&&s[j]<='Z')||(s[j]>='a'&&s[j]<='z')) )
            s[i++] = s[j];
    return s;
}

int main( void )
{
    {
        char s[] = "abcde";
        puts( foo(s) );
    }
    {
        char s[] = "11111";
        puts( foo(s) );
    }
}

2018-08-03 10:00
no1xijin
Rank: 9Rank: 9Rank: 9
来 自:江西
等 级:贵宾
威 望:20
帖 子:211
专家分:1207
注 册:2015-7-8
收藏
得分:5 
在三楼的基础上修改了if的判断条件;思想为:a中存的是最终结果,那么就查找满足条件的留下,满足的条件为:下标为偶数ASCII码值为奇数的字母保留
程序代码:
#include  <stdio.h>
#define N 100

void luan(char a[],char b)
{
    int h,r=0;
    for(h=0;h<b;h++)
        if( h%2!=0  &&
            ((a[h]>='a'&&a[h]<='z') ||//这里改为||
            (a[h]>='A'&&a[h]<='Z')))   
            a[r++]=a[h];  // 下标为奇数的保留
        else if(a[h]%2==0 &&
            ((a[h]>='a'&&a[h]<='z') ||
            (a[h]>='A'&&a[h]<='Z')))  //  下标为偶数,但ASCII码值不为奇数的保留
            a[r++]=a[h];
        a[r]='\0';
}

int main()
{
    int x;
    char a[N];
    int p=0;//指针改为int 计数即可,你那么用指针是错的吧...
    gets(a);
    while(a[p])//末尾跳出直接a[p]即可
        p++;
    luan(a,p);
    printf("%s\n",a);
}


[此贴子已经被作者于2018-8-3 11:07编辑过]


126邮箱联系方式:no1xijin@126. com
2018-08-03 10:34
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:4 
回复 楼主 K1396
a[h]>='a'&&a[h]<='z')&&
    (a[h]>='A'&&a[h]<='Z')

这个逻辑错了,是
a[h]>='a'&&a[h]<='z')||
    (a[h]>='A'&&a[h]<='Z')
2018-08-03 10:56
快速回复:目的是要将字符串中所有下标为偶数且ASCII码值为奇数的字母删除
数据加载中...
 
   



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

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