| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3077 人关注过本帖
标题:字符串判等的问题,输出超奇怪
取消只看楼主 加入收藏
B_soldier
Rank: 2
等 级:论坛游民
帖 子:38
专家分:41
注 册:2016-10-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
字符串判等的问题,输出超奇怪
#include<stdio.h>
int main(){
    int i, j, result;
    int l1, l2;
    int b1, b2;
    char s1, s2, s;
    int str1[80], str2[80];
   
    result=0;
    b1=b2=0;
   
    printf("Input the first string(only letter and blank permitted, end with 'Enter'):");
   
    i=0;
    while((str1[i]=getchar())!='\n'){
        if(str1[i]==' ') b1++;   
        i++;

    }
    str1[i]='\0';
    l1=i;
   
    printf("Input the other string(only letter and blank permitted, end with 'Enter'):");
   
    i=0;
    while((str2[i]=getchar())!='\n'){
        if(str2[i]==' ') b2++;
        i++;        
    }

    str1[i]='\0';
    l2=i;
   
    printf("l1=%d, l2=%d, b1=%d, b2=%d\n", l1, l2, b1, b2);
    if(l1!=l2||b1!=b2) result=1;
    else
        for(i=0, j=0; i<80, j<80; i++, j++){
            while(str1[i]==' ') i++;
            while(str2[j]==' ') j++;
            putchar(str1[i]); putchar(str2[j]);
            printf("\n");
            printf("result=%d\n", result);
            if(str1[i]==str2[j]||(str1[i]-32)==str2[j]||str1[i]==(str2[j]-32));
            else {
                result=1;
                break;
            }
        }
   
    for(i=0; str1[i]!='\0'; i++)
        putchar(str1[i]);
    printf("\n");
    for(j=0; str2[j]!='\0'; j++)
        putchar(str2[j]);
    printf("\n");

   
    printf("result=%d\n", result);
    if(result==0)
        printf("YES");
    else
        printf("O");

    return 0;   
}

输入数据我用的:"www"和"www",最后输出一步,设置的状态变量result的值莫名其妙的变成了1,不懂了,求指导
图片附件: 游客没有浏览图片的权限,请 登录注册

搜索更多相关主题的帖子: blank include letter result 字符串 
2016-12-18 17:56
B_soldier
Rank: 2
等 级:论坛游民
帖 子:38
专家分:41
注 册:2016-10-20
收藏
得分:0 
回复 3楼 bjut_Allen
其实就是在练这个题目http://bailian.

主要是不清楚我的代码为什么在顺利退出了第一个for循环过后,然后我都输出result=0了,然后输出两个数组过后,result的值莫名其妙变成1 了
2016-12-18 19:19
B_soldier
Rank: 2
等 级:论坛游民
帖 子:38
专家分:41
注 册:2016-10-20
收藏
得分:0 
回复 3楼 bjut_Allen
没有的,我又加了一句验证语句,result在退出循环的时候已经变成1了,循环设置有问题,我再看看
2016-12-18 19:27
B_soldier
Rank: 2
等 级:论坛游民
帖 子:38
专家分:41
注 册:2016-10-20
收藏
得分:0 
回复 2楼 xzlxzlxzl
http://bailian.
题目是这个,感觉我的代码逻辑还没理清楚
2016-12-18 19:36
B_soldier
Rank: 2
等 级:论坛游民
帖 子:38
专家分:41
注 册:2016-10-20
收藏
得分:0 
回复 7楼 bjut_Allen
这个的意思是遇到空格就直接调用下一个数组元素,如果下一个还是空格,再下一个,直到不是空格为止
2016-12-18 20:20
B_soldier
Rank: 2
等 级:论坛游民
帖 子:38
专家分:41
注 册:2016-10-20
收藏
得分:0 
回复 9楼 bjut_Allen
但是外层for语句里面的i++在for语句内部不会体现啊,我的初衷是想用while循环来过滤掉字符串里面的空格,但是运行起来不行,我再改改看看
2016-12-18 21:35
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
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
快速回复:字符串判等的问题,输出超奇怪
数据加载中...
 
   



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

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