CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

呵呵帮我用C语言实现下面两个问题

楼主laolaoliu2002(老刘----狂热的热爱人民币)2005-04-01 10:45:59 在 C/C++ / C语言 提问

1、有一篇文章存储在数组中统计出现的单词并按照出现次数排序  
  2、将一个存储在数组中的英文句子的单词倒排例如“my   name   is   laolaoliu2002"变成”laolaoliu2002   is   name   my“不要使用额外的数组存储空间  
  是一个朋友的问题由于我最近比较忙(要出差)没有时间写了。 问题点数:100、回复次数:10Top

1 楼llf_hust()回复于 2005-04-01 11:19:38 得分 20

2、将一个存储在数组中的英文句子的单词倒排例如“my   name   is   laolaoliu2002"变成”laolaoliu2002   is   name   my“不要使用额外的数组存储空间  
  是一个朋友的问题由于我最近比较忙(要出差)没有时间写了。  
   
  char   *rev(char   *src)  
  {  
      char   *b,   *e,ch;  
      b   =   src;  
      strrev(src);  
      while   (*b)  
      {  
            while   (isspace(*b))  
                    ++b;  
                e   =   b;  
            while   (*e   &&   !isspace(*e))  
                        ++e;  
                ch   =   *e,*e   =   '\0';  
                    strrev(b);  
                  b   =   e,*e   =   ch;  
        }  
        return   src;  
  }  
   
      这是一个算法,主程序自己写一个调用一下就OK了Top

2 楼du51(郁郁思扬)回复于 2005-04-01 11:39:39 得分 30

#include<iostream>  
  using   namespace   std;  
  char*   change(char   *str)  
  {  
          char   *p=str,*q=str,*str1,*q1;  
          int   len=strlen(str)-1;  
          str1=new   char[len+2];  
  //if(!str1)cout<<"ERROR!"<<endl;  
          while(*p)  
          {  
                  if(*p!='   ')  
                  {  
                          if(*q=='   '||*q==0)  
                          {  
                                  q1=q;  
                                  do  
                                  {  
                                          str1[len]=*(--q);  
                                          len--;  
                                  }while(p!=q);  
                                  p=q=q1;  
                          }  
                          else   q++;  
                  }  
                  else    
                  {  
                          str1[len]='   ';len--;p++;q++;  
                  }  
          }  
          str1[strlen(str)]=*p;  
          return   str1;    
  }  
  int   main()  
  {  
          cout<<"请输入你要转换的字符串!"<<endl;  
          char   str[80];  
          cin.getline(str,80);  
          cout<<change(str)<<endl;  
          system("PAUSE");  
          return   0;  
  }Top

3 楼laolaoliu2002(老刘----狂热的热爱人民币)回复于 2005-04-01 11:52:54 得分 0

llf_hust()   老兄写程序实现不了Top

4 楼xuelong_zl(点雨点[我身上咋就没MM的香水味涅??#-_-])回复于 2005-04-01 12:44:58 得分 10

第二题的搞笑版  
   
  #include   "stdio.h"  
  int   main(void)  
  {  
          char*   word[4]={"my",   "name",   "is",   "laolaoliu2002"};  
          char**   p;  
          int   i;  
          p   =   &word[3];  
          for   (i=0;i<4;i++)  
                  printf   ("%s   ",p[-i]);  
  }Top

5 楼xuelong_zl(点雨点[我身上咋就没MM的香水味涅??#-_-])回复于 2005-04-01 12:47:08 得分 0

可以定为灌水程序Top

6 楼bingsejian(抽不死你丫的~)回复于 2005-04-01 14:50:31 得分 10

汗~~~  
      ~~~~你用了最简单的方法实现了~~~~牛~~~  
      拉出去   抽100次   以表示奖励~~~Top

7 楼xuelong_zl(点雨点[我身上咋就没MM的香水味涅??#-_-])回复于 2005-04-01 14:58:17 得分 0

我的方法不是最简单的,如果最简单可以直接输出的,嘿嘿  
   
  不过我的程序也可以改为任意输入的^_^Top

8 楼zhousqy(标准C匪徒)(甩拉,甩拉)回复于 2005-04-01 15:30:14 得分 0

markTop

9 楼du51(郁郁思扬)回复于 2005-04-01 16:47:07 得分 30

1、有一篇文章存储在数组中统计出现的单词并按照出现次数排序  
  ----------------------------------------------------------  
  #include<iostream>  
  using   namespace   std;  
  struct   node{  
  char   *s;  
  int   num;  
  node   *next;  
  };  
  node*   orderInsertnode(node   *&head,node   *p)             //排序  
  {  
          node   *p1,*p2;  
          if(!head)                                                           //建头  
          {  
                  head=p;  
                  p->next=0;  
                  return   head;  
          }  
          if(head->num>=p->num)                                   //插入头之前  
          {  
                  p->next=head;  
                  head=p;  
                  return   head;  
          }  
          p1=p2=head;  
          while(p2->next&&p2->num<=p->num)                      
          {  
                  p1=p2;p2=p2->next;  
          }  
          if(p2->num<=p->num)                                         //插入中间  
          {  
                  p2->next=p;  
                  p->next=0;  
          }  
          else                                                                     //插入尾.  
          {  
                  p->next=p2;  
                  p1->next=p;  
          }  
          return   head;  
  }  
  node   *Insertnode(node   *&head,node   *p)                             //构建链表  
  {  
          node   *q,*q1;  
          if(!head)                                                             //建头  
          {  
                    head=p;  
                    p->next=0;  
  p->num=1;  
                    return   head;  
          }  
  q1=q=head;  
          while(q)                                                     //处理中间情况  
          {  
  if(strcmp(q->s,p->s))  
  {  
  q1=q;q=q->next;  
  }  
  else    
  {  
  q->num+=1;  
  return   head;  
  }  
          }  
          if(!q)q1->next=p;                                   //插入尾部  
          return   head;  
  }                    
  node   *filespik(char   *file)  
  {  
  char   *p=file,*q=p,*q1,e;  
  node   *head=0,*head1=0,*word;  
  while(*p)  
  {  
  while(!isalpha(*p))++p;                     //指向单词开始处  
  q1=p;  
  while(isalpha(*q1)&&*q1)++q1;                   //指向单词尾处  
  e=*q1;                                                         //留COPY  
  *q1='\0';                                                       //置结尾符  
  word=new   node;  
  word->s=new   char[strlen(p)+1];  
  strcpy(word->s,p);                                           //放入单词  
  word->num=1;  
  word->next=0;  
  head=Insertnode(head,word);                           //插成无序表  
  word=0;p=q1;   *p=e;  
  }                                                                   //完成循环后所有单词被无序插入head中.  
  node   *hh=head;  
  while(hh)  
  {  
  word=new   node;  
  word->s=new   char[strlen(hh->s)+1];  
  strcpy(word->s,hh->s);  
  word->num=hh->num;  
  word->next=0;  
  head1=orderInsertnode(head1,word);  
  hh=hh->next;  
  }                                                                             //完成排序  
                    while(head)                                                         //回收空间  
  {  
  hh=head;  
  head=hh->next;  
  delete   hh->s;  
  delete   hh;  
  }  
  return   head1;  
  }  
  int   main()  
  {  
  char   test[]="aa   aa   bb   bb   bb   bb   test   i   love   you   but   do   you   love   me?   so   big   disgrace!   good   luck";  
  node   *result=filespik(test);  
  node   *p=result;  
  while(p)  
  {  
  cout<<p->s<<"         "<<p->num<<endl;  
  p=p->next;  
  }  
  while(result)  
  {  
  p=result;  
  result=result->next;  
  delete   p->s;  
  delete   p;  
  }  
  system("PAUSE");  
  return   0;  
  }Top

10 楼llf_hust()回复于 2005-04-01 17:31:29 得分 0

llf_hust()   老兄写程序实现不了  
   
   
  不会吧,你自己写个主程序呀Top

相关问题

  • prim的c语言实现
  • 用C语言怎么实现改变当前路径(请看下面代码)
  • 求HDLC协议的C语言实现
  • 帮我用汇编语言实现下面这个编程。 A+B=C 要求有输入、输入的提示。
  • 如何实现C语言与CG语言的连接?
  • 怎样用C语言实现C++中的class和virtual方法?
  • 更改系统日期在DOS下用C/C++语言实现
  • 如何在C语言中实现C++中的容器
  • 问两个C语言的语句在C#中如何实现
  • 求如何用汇编语言实现C语言中的malloc指令

关键词

  • word
  • 数组
  • laolaoliu2002
  • 单词
  • head
  • 插入
  • node
  • num
  • next
  • hh

得分解答快速导航

  • 帖主:laolaoliu2002
  • llf_hust
  • du51
  • xuelong_zl
  • bingsejian
  • du51

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo