飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3806|回复: 3

编程马拉松(7)

[复制链接]

该用户从未签到

发表于 2007-8-16 11:36:40 | 显示全部楼层 |阅读模式
引自第八阁论坛:http://bbs.chinadbg.cn/forum-7-1.html
飞翔技术论坛:http://www.powk.net/bbs/forumdisplay.php?fid=4&page=1
输入二组文字,输出每组的长度,其中大写字母,小写字母,空格,数字及其它字符各有多少?比较大小,关连接两组到一组输出。
要求用通用指针自定义字串函数。
天圆地方的delphi代码:

  1. //自定函数
  2. Function StringContent(TmpString:String):string;
  3. var
  4.   i,LenNum,LNum,BNum,SNum,NNum,ONum:integer;
  5.   Tmp:char;
  6. begin
  7. LNum:=0;
  8. BNum:=0;
  9. SNum:=0;
  10. NNum:=0;
  11. ONum:=0;
  12. LenNum:=Length(TmpString);
  13.   for i:=1 to LenNum do
  14.   begin
  15.     Tmp:=TmpString[i];
  16.     case Tmp of
  17.     'a'..'z':LNum:=LNum+1;
  18.     'A'..'Z':BNum:=BNum+1;
  19.     '0'..'9':NNum:=NNum+1;
  20.             ' ':SNum:=SNum+1;
  21.         else ONum:=ONum+1;
  22.      end;
  23.   end;
  24.   Result:=Format('字符长度为:%s;小写字母有:%s个;大写字母有:%s;空格有:%s个;其它字符有%s个。',[IntToStr(LenNum),IntToStr(LNum),IntToStr(BNum),IntToStr(SNum),IntToStr(ONum)]);
  25. end;
  26. //函数调用
  27. procedure TForm1.Button1Click(Sender: TObject);
  28. Var
  29. TmpString1,TmpString2:string;
  30. begin
  31. TmpString1:='123123as dfa#s$d%f';
  32. TmpString2:='a;sdfaf pqweurq]][';
  33. ShowMessage('字符串1:'+StringContent(TmpString1));
  34. ShowMessage('字符串2:'+StringContent(TmpString2));
  35. ShowMessage(TmpString1+TmpString2);
  36. end;
复制代码

freesoft的C++代码:
C++代码:

  1. #include <iOStream>
  2. //#include <string>
  3. using namespace std;

  4. int strle(const char *string)
  5. {//字串长度
  6.     int len=0;
  7.     while(*string)
  8.     {
  9.     len++;
  10.         *string++;
  11.     }
  12.     return len;
  13. }

  14. void strca(const char *str1,const char *str2)
  15. {//字串连接

  16.         int i1=0,i2=0;
  17.         char string[255];
  18. while(str1[i1]!='\0')
  19.     {
  20.     string[i1]=str1[i1];
  21.     i1++;
  22.         }
  23. while(str2[i2]!='\0')
  24.     {
  25.      string[i1]=str2[i2];
  26.      i1++;
  27.      i2++;
  28.     }
  29. string[i1]='\0';
  30. cout<<"两个字符串合并为:\n"<<string<<endl;
  31. }   

  32. void strcm(const char *str1,const char *str2)
  33. {//比较字串大小
  34.     while((*str1==*str2)&&(*str1))
  35.     {
  36.         *str1++;
  37.         *str2++;
  38.     }
  39.     if ((*str1==*str2)&&(!*str1))
  40.     cout<<"两个字符串一样"<<"\n";
  41.     else if((*str1)&&(!*str2))        
  42.          cout<<"第一个字符串大于第二个字符串"<<"\n";
  43.          else if((*str2)&&(!*str1))
  44.               cout<<"第二个字符串大于第一个字符串"<<"\n";
  45.               else  if((*str1)>(*str2))
  46.                     cout<<"第一个字符串大于第二个字符串"<<"\n";
  47.                     else cout<<"第二个字符串大于第一个字符串"<<"\n";

  48. }

  49. void showall(const char *string)
  50. {
  51.     int num1=0,num2=0,num3=0;
  52.     while(*string)
  53.     {
  54.     if(*string>='a'&&*string<='z')num1++;
  55.     if(*string>='A'&&*string<='Z')num2++;
  56.     if(*string>='0'&&*string<='9')num3++;
  57.         *string++;
  58.     }
  59.     cout<<"你输入的字符串中小写字母"<<num1<<"\n"
  60.         <<"你输入的字符串中大写字母"<<num2<<"\n"
  61.         <<"你输入的字符串中数字"<<num3<<"\n";
  62.    
  63. }
  64. void main()
  65. {
  66.         char str1[255],str2[255];
  67.         cout<<"请输入两组字符串用回车分开"<<endl;
  68.         cin>>str1>>str2;
  69.         cout<<"你输入的第一个字符串是:"<<str1<<"  "<<"长度是:"<<strle(str1)<<"\n";
  70.         showall(str1);
  71.         cout<<"你输入的第二个字符串是:"<<str2<<"  "<<"长度是:"<<strle(str2)<<"\n";
  72.         showall(str2);
  73.         strcm(str1,str2);
  74.         strca(str1,str2);
  75. }
复制代码
PYG19周年生日快乐!

该用户从未签到

发表于 2007-8-16 14:21:45 | 显示全部楼层
学习了 `````/:001
PYG19周年生日快乐!

该用户从未签到

发表于 2007-8-16 20:03:54 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2007-8-20 16:00:51 | 显示全部楼层
主要是学习,现在我停一天,因为要开始说结构体和类的东西。。了
PYG19周年生日快乐!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表