标题:字符串判等的问题,输出超奇怪
只看楼主
B_soldier
Rank: 2
等 级:论坛游民
帖 子:38
专家分:41
注 册:2016-10-20
得分:0 
回复 10楼 B_soldier
我的想法是:进入循环i=0,如果str1[0]=' ',那么while自动i++,i=1,然后判断str1[1],以此类推
2016-12-18 21:38
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:10 
如果是想在输入时就过滤掉空格,同时还可以将小写字母全部转换为大写字母,代码科这样写:
程序代码:
#include<stdio.h>
#include <string.h>

void main()
{
    char str1[80],str2[80];
    int i;
    i=0;
    while((str1[i++]=getchar())!='\n')
    {
        if(str1[i-1]>='a' && str1[i-1]<='z')str1[i-1]-=32;
        if(str1[i-1]==' ')i--;
    }
    str1[i]=0;
    i=0;
    while((str2[i++]=getchar())!='\n')
    {
        if(str2[i-1]>='a' && str2[i-1]<='z')str2[i-1]-=32;
        if(str2[i-1]==' ')i--;
    }
    str2[i]=0;
    if(strcmp(str1,str2))printf("NO\n");
    else printf("YES\n");
}
2016-12-18 21:51
B_soldier
Rank: 2
等 级:论坛游民
帖 子:38
专家分:41
注 册:2016-10-20
得分:0 
回复 12楼 xzlxzlxzl
我用了一个更傻逼的方法,判断之前就把空格先删掉,然后再判定,不过,代码的执行效率明显差多了
    for(i=0, j=0; str1[i]!='\0'; i++)
        if(str1[i]!=' '){
            s1[j]=str1[i];
            j++;
        }
    s1[j]='\0';
    for(i=0, j=0; str2[i]!='\0'; i++)
        if(str2[i]!=' '){
            s2[j]=str2[i];
            j++;
        }
    s2[j]='\0';
2016-12-19 18:19
B_soldier
Rank: 2
等 级:论坛游民
帖 子:38
专家分:41
注 册:2016-10-20
得分:0 
回复 12楼 xzlxzlxzl
你这样也行的,我昨天没看清题目,一直以为要原样输出数组的,其实不用,那就可以改动数组,直接在输入的时候把空格删掉了
2016-12-19 18:23



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-472557-1-1.html




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

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