| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3191 人关注过本帖
标题:字符串判等的问题,输出超奇怪
只看楼主 加入收藏
B_soldier
Rank: 2
等 级:论坛游民
帖 子:38
专家分:41
注 册:2016-10-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:13 
字符串判等的问题,输出超奇怪
#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
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
重点找设置字符结尾的语句。
2016-12-18 18:08
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:0 
改的不知道和楼主想干的事情是不是有偏差了
#include<stdio.h>
#include <string.h>
int main(){
    int i, j, result;
    int l1, l2;
    int b1, b2;
    //char s1, s2, s;
    char 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++;        
    }
    str2[i]='\0';
    l2=i;
    printf("l1=%d, l2=%d, b1=%d, b2=%d\n", l1, l2, b1, b2);
    i=0;
    if(l1!=l2||b1!=b2)    //不一样直接pass
    result=1;
    else if(l1==l2&&b1==b2){
        while(str1[i]!='\0')
        {
            if(str1[i]!=str2[i]){
                result=1;
                break;
            }
            else
            result=0;   
            i++;
        }
    }
     printf("Output str1&&str2:\n");                 
       puts(str1);  
       puts(str2);
     
    printf("result=%d\n", result);
    if(result==0)
        printf("YES");
    else
        printf("O");
    return 0;   
}
收到的鲜花
  • B_soldier2016-12-18 19:28 送鲜花  5朵   附言:我很赞同

Code is my life.
2016-12-18 18:47
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
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:0 
for(i=0, j=0; i<80, j<80; i++, j++){
            while(str1[i]==' ') i++;
            while(str2[j]==' ') j++;

这样的循环肯定是不行的

Code is my life.
2016-12-18 19:40
B_soldier
Rank: 2
等 级:论坛游民
帖 子:38
专家分:41
注 册:2016-10-20
收藏
得分:0 
回复 7楼 bjut_Allen
这个的意思是遇到空格就直接调用下一个数组元素,如果下一个还是空格,再下一个,直到不是空格为止
2016-12-18 20:20
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:10 
回复 8楼 B_soldier
进入循环时i=0;假设第一个元素为‘ ’此时i++,i=1;  括号中还有一次i++,i=2;那么第一个元素就被跳过去了

Code is my life.
2016-12-18 21:28
B_soldier
Rank: 2
等 级:论坛游民
帖 子:38
专家分:41
注 册:2016-10-20
收藏
得分:0 
回复 9楼 bjut_Allen
但是外层for语句里面的i++在for语句内部不会体现啊,我的初衷是想用while循环来过滤掉字符串里面的空格,但是运行起来不行,我再改改看看
2016-12-18 21:35
快速回复:字符串判等的问题,输出超奇怪
数据加载中...
 
   



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

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