| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 724 人关注过本帖
标题:(急)求高手帮忙编一个程序,万分感激!!
只看楼主 加入收藏
wongkason
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-4-17
结帖率:0
收藏
已结贴  问题点数:20 回复次数:9 
(急)求高手帮忙编一个程序,万分感激!!
编写一个程序实现一些字符串处理功能
1. 编写一个函数,在读入一个文本,可以用函数分别统计字母a,b,e,g,h在文本中出现的次数。
2. 编写一个函数,在程序读入一个文本,可以分别统计单字母单词,双字母单词及三字母单词在文本中出现的次数。
3. 编写一个函数,接受用户输入的字符串,可以统计这个字符串在程序读入的文本中出现的总次数
4. 编写程序,将以上三个功能做成选项单,可以通过在键盘上输入指定字符从而选择相应的功能。
搜索更多相关主题的帖子: 感激 
2010-04-17 22:19
明王朝
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:58
专家分:196
注 册:2009-11-3
收藏
得分:6 
有点麻烦哦,帮顶!
2010-04-17 22:28
wongkason
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-4-17
收藏
得分:0 
高手帮帮忙吧...谢谢
2010-04-17 22:32
hanzhenddd
Rank: 5Rank: 5
等 级:职业侠客
帖 子:90
专家分:361
注 册:2010-3-4
收藏
得分:6 
大晚上的 不愿意弄这么复杂。。这里仅仅提供部分代码。。实现1的要求。。
至于2 3 我想楼主 但凡有点思维应该都可以完成。。  加个 switch语句就可以实现 选择了!!~

程序代码:
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

int main (int argc, char *argv[])
{
    int fd, n;           // fd文件描述符   n read函数返回值
    int i = 0, count = 0; //i buf数组遍历使用  count 计数器
    char buf[1024];        //存放缓冲区内存比如例子中的 4.c  这个最好是使用mmap方式比较好。。 
    char a; 

    fd = open ("4.c", O_RDONLY);    //打开文件..  这里最好写一个 sys_err函数 查看返回值是否错误, 这个楼主可以自己设计成 gets进一个文件名 然后 索引。。这里就不写了!.
    printf ("please input word !");       //提示 输入索引字符
    scanf ("%c", &a);   
               
    while ((n=read (fd, buf, 1 ))!= 0)    //判断是否文件读完。。因为是本地文件所以不考虑阻塞。。默认read读完就是0了.  每次读一个字节。
        {
            printf ("%c", buf[i]);        //打印buf 中的内容。。 便于查看。。
              if(buf[i] == a)            //判断是否同输入的索引相同。。
                    count++;            //计数器自增
        }

    printf ("\nthe word %c  is %d\n", a, count);    //退出循环打印 查找的结果 

    return 0;
}



我已经做好了注释了。。。

里面没有考虑效率的问题。。也没有出错处理 只是简单的实现了相应的功能,其他的就需要你自己完成了!!~~

--------------------------
运行结果:
please input word !a
#include <stdio.h>
sadasdasdasdhahsda121231
                2131231
        qweqweqwe
123123          aa

the word a  is 8

Process returned 0 (0x0)   execution time : 1.406 s
Press any key to continue.



[ 本帖最后由 hanzhenddd 于 2010-4-18 00:16 编辑 ]
2010-04-17 23:50
wongkason
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-4-17
收藏
得分:0 
我一点都不懂的...能不能帮我弄个全的?
2010-04-17 23:53
wongkason
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-4-17
收藏
得分:0 
顶顶
2010-04-18 10:02
wongkason
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-4-17
收藏
得分:0 
请大家帮帮忙
2010-04-18 11:15
wongkason
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-4-17
收藏
得分:0 
顶顶顶
2010-04-18 12:33
wongkason
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-4-17
收藏
得分:0 
顶..........
2010-04-18 16:33
chenzekai
Rank: 2
等 级:论坛游民
帖 子:27
专家分:38
注 册:2010-3-26
收藏
得分:6 
我是新手,自己编了一个,不要嘲笑,有错误请纠正,
代码 如下:

#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
#include <stdlib.h>
void process1(char *p)
{
    int a,b,e,g,h;
    a=b=e=g=h=0;
    while(*p!='\0')
    {
        switch(*p)
        {
        case('a'):a++;break;
        case('b'):b++;break;
        case('e'):e++;break;
        case('g'):g++;break;
        case('h'):h++;break;
        }
        p++;
    }
    printf("字母a在文本中出现的次数为:%d\n",a);
    printf("字母b在文本中出现的次数为:%d\n",b);
    printf("字母e在文本中出现的次数为:%d\n",e);
    printf("字母g在文本中出现的次数为:%d\n",g);
    printf("字母h在文本中出现的次数为:%d\n",h);
}
void process2(char *p)
{
    int s1,s2,s3,k;
    k=s1=s2=s3=0;
    while(*p!='\0')
    {
        int n=0;
        while(isalpha(*(p+k)))
        {
            n++;
            k++;
        }
        switch(n)
        {
        case(1):s1++;break;
        case(2):s2++;break;
        case(3):s3++;break;
        }
        p++;
    }
    printf("单字母单词出现的次数为:%d\n",s1);
    printf("双字母单词出现的次数为:%d\n",s2);
    printf("三字母单词出现的次数为:%d\n",s3);
}
int process3(char *p)
{
    char str1[50];
    int s=0;
    int k;
    printf("请输入字符串:\n");
    gets(str1);
    int len=strlen(str1);
    while(*p!='\0')
    {
        if(*p==str1[0])
        {
            for(k=0;*(p+k)==str1[k];k++);
            if(k==len)
            s++;
        }
        p++;
    }
    printf("用户输入的字符串在文本中出现的次数为:%d\n",s);
    return 0;
}

main()
{
    char str[200],ch;
    printf("请输入文本,回车结束:\n");
    gets(str);
    printf("请选择功能,回车结束程序:\n\n1.可以用函数分别统计字母a,b,e,g,h在文本中出现的次数\n\n");
    printf("2.分别统计单字母单词,双字母单词及三字母单词在文本中出现的次数\n\n");
    printf("3.接受用户输入的字符串,可以统计这个字符串在程序读入的文本中出现的总次数\n");
    ch=getche();
    printf("\n");
    while(ch!='\r')
    {
        switch(ch)
        {
        case('1'):process1(str);break;
        case('2'):process2(str);break;
        case('3'):process3(str);break;
        default:printf("输入指令错误,请重新输入:\n");ch=getche();printf("\n");continue;
        }
        printf("\n请继续输入指令,回车结束程序:\n");
        ch=getche();
        printf("\n");
    }
}
2010-04-18 22:25
快速回复:(急)求高手帮忙编一个程序,万分感激!!
数据加载中...
 
   



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

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