| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1309 人关注过本帖
标题:额,加上一点运行结果,看看有没有帮助。有关指针,实参与形参的问题.怎么改 ...
只看楼主 加入收藏
百里
Rank: 2
等 级:论坛游民
帖 子:34
专家分:66
注 册:2016-10-1
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:2 
额,加上一点运行结果,看看有没有帮助。有关指针,实参与形参的问题.怎么改才是形参改变实参???
输入一串字符(字符数小于80),以回车表示输入结束,编程计算并输出这串字符中连续重复次数最多的字符和重复次数。如果重复次数最多的字符有两个,则输出最后出现的那一个。
已知函数原型:
//函数功能:统计字符串中连续重复次数最多的字符及其重复的次数
//函数参数:str指向待统计的字符串,指针形参tag返回重复字符最后出现的下标位置
//函数返回值:返回字符重复的次数
int CountRepeatStr(char str[], int *tag);
求解思路:设置一个计数器,遍历字符串中的所有字符,若str[i] == str[i+1],则计数器加1,同时判断计数器的值是否大于记录的最大重复次数max,若大于,则用计数器的值更新max,并记录该字符最后出现的位置i+1.若str[i] != str[i+1],则计数器重新初始化为1。遍历结束时,函数返回max的值。
////////////////////////////////////////////////////
程序运行结果示例1:
Input a string:
2344455555↙
5:5

程序运行结果示例2:
Input a string:
sgf222257↙
2:4
////////////////////////////////////////////////////
#include"stdio.h"
#define N 80
#define Null 0
int CountRepeastStr(char str[], int *tag) ;
int main()
{
    char a[N] ;
    int ret, *p ;
    printf("Input a string:\n") ;
    p=gets(a) ;
    ret=CountRepeastStr(a, p) ;
    printf("%c:%d\n", *p, ret) ;
    return 0 ;
}
int CountRepeastStr(char str[], int *tag)
{
    int Max=1, i,count=1;
    for(i=0 ;str[i+1]!='\0' ;i++)
    {
        if(str[i]==str[i+1])
        {
            count++ ;
        }
        else
        {
            tag=&str[i+1] ;
            count=1 ;
        }
        if(count>=Max)
        {
            Max = count ;
        }
    }
    return Max ;
}

[此贴子已经被作者于2016-10-26 19:59编辑过]

搜索更多相关主题的帖子: 计数器 字符串 统计 
2016-10-26 16:48
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
收藏
得分:10 
#include"stdio.h"
#define N 80
#define Null 0
int CountRepeastStr(char str[], int *tag) ;
int main()
{
    char a[N] ;
    int ret, p ;
    printf("Input a string:\n") ;
    gets(a) ;
    ret=CountRepeastStr(a, &p) ;
    printf("%d:%d\n", p, ret) ;
    return 0 ;
}
int CountRepeastStr(char str[], int *tag)
{
    int Max=1, i,count=1;
    for(i=0 ;str[i+1]!='\0' ;i++)
    {
        if(str[i]==str[i+1])
        {
            count++ ;
        }
        else
        {
            if(count>=Max)
            {
                Max = count ;
                *tag=i+1 ;
            }
            count=1 ;
        }
        
    }
    return Max ;
}
2016-10-26 19:01
百里
Rank: 2
等 级:论坛游民
帖 子:34
专家分:66
注 册:2016-10-1
收藏
得分:0 
谢谢,尽管最后与例题的不对,但是这是我没有将样例发上,不过,看了你的代码,我的思路顿时开阔了,也弄明白了。&.&
2016-10-26 20:38
快速回复:额,加上一点运行结果,看看有没有帮助。有关指针,实参与形参的问题. ...
数据加载中...
 
   



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

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