| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 569 人关注过本帖, 1 人收藏
标题:字符串函数问题
只看楼主 加入收藏
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
结帖率:95.45%
收藏(1)
已结贴  问题点数:5 回复次数:5 
字符串函数问题
循环输入文本行,找出文本行中字符'a'最多的文本行,并输出
当空文本行时结束输入;
程序代码:
#include <stdio.h>
#include <string.h>
int main()
{
    char array[80];
    char line[80];
    int max=0;
    int i=0;
    int count=0;
    int m,n;
    do{
        gets(array);   //输入字符串 
        n=strlen(array);  //计算长度 为了跳出循环做准备 
        while(array[i++]!='\0')   //找到最多a 
        {
            if(array[i]=='a')
            count++;
            m=count;
        }
        if(m>max)
        {
            max=m;
            while(array[i++]!='\0')
            {
                line[i]=array[i];    //记录最多a字符串; 
            }
        }
    }while(n>0); 
        puts(line);
        return 0;
}

这个代码哪错了?
搜索更多相关主题的帖子: 字符串 color 
2016-11-05 14:26
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:5 
修改完毕,主要是数据重置问题,和原来的代码对比一下,修改还是不多不少的
程序代码:
#include <stdio.h>
#include <string.h>
int main()
{
    char array[80];
    char line[80];
    int max=0;
    int i=0int count=0;
    int m,n;
    do
    {
        i=0;
        count=0;//i和count要重置
        gets(array);   //输入字符串 
        n=strlen(array);  //计算长度 为了跳出循环做准备 
        while(array[i++]!='\0')   //找到最多a 
        {
            if(array[i]=='a')
            count++;//count记录a的值
        }
        m=count;//m可以放到内循环外边
        if(m>max)
        {
            i=0;//由于重新读入数据,i要重置
            max=m;
            do//为了防止出现line[-1]的bug,改用了do while结构
            {
                line[i]=array[i];//记录最多a字符串;
                i++; 
            }while(array[i-1]!='\0');
        }
    }while(n>0); 
    puts(line);
    return 0;
}

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-05 17:12
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:0 
回复 2楼 九转星河
非常感谢您的回答,我局部变量那块学的不好,还得再看看

Code is my life.
2016-11-06 08:55
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:0 
回复 2楼 九转星河
do//为了防止出现line[-1]的bug,改用了do while结构
            {
                line[i]=array[i];//记录最多a字符串;
                i++;
            }while(array[i-1]!='\0');
您说这句话不太懂,如果用while循环,i=0的时候进入循环了, 为什么会出现-1?

Code is my life.
2016-11-06 22:34
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 4楼 bjut_Allen
你可以试试用while结构做做看,因为循环结束判断时输入空格要作为增量处理。
也许while也能行得通

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-06 23:51
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:0 
回复 5楼 九转星河
while行不通,输出不了,用do while可以具体什么原理我不了解

Code is my life.
2016-11-07 17:26
快速回复:字符串函数问题
数据加载中...
 
   



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

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