freesoft 发表于 2007-8-16 11:36:40

编程马拉松(7)

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

//自定函数
Function StringContent(TmpString:String):string;
var
i,LenNum,LNum,BNum,SNum,NNum,ONum:integer;
Tmp:char;
begin
LNum:=0;
BNum:=0;
SNum:=0;
NNum:=0;
ONum:=0;
LenNum:=Length(TmpString);
for i:=1 to LenNum do
begin
    Tmp:=TmpString;
    case Tmp of
    'a'..'z':LNum:=LNum+1;
    'A'..'Z':BNum:=BNum+1;
    '0'..'9':NNum:=NNum+1;
            ' ':SNum:=SNum+1;
      else ONum:=ONum+1;
   end;
end;
Result:=Format('字符长度为:%s;小写字母有:%s个;大写字母有:%s;空格有:%s个;其它字符有%s个。',);
end;
//函数调用
procedure TForm1.Button1Click(Sender: TObject);
Var
TmpString1,TmpString2:string;
begin
TmpString1:='123123as dfa#s$d%f';
TmpString2:='a;sdfaf pqweurq]][';
ShowMessage('字符串1:'+StringContent(TmpString1));
ShowMessage('字符串2:'+StringContent(TmpString2));
ShowMessage(TmpString1+TmpString2);
end;

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

#include <iostream>
//#include <string>
using namespace std;

int strle(const char *string)
{//字串长度
    int len=0;
    while(*string)
    {
    len++;
        *string++;
    }
    return len;
}

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

        int i1=0,i2=0;
        char string;
while(str1!='\0')
    {
    string=str1;
    i1++;
      }
while(str2!='\0')
    {
   string=str2;
   i1++;
   i2++;
    }
string='\0';
cout<<"两个字符串合并为:\n"<<string<<endl;
}   

void strcm(const char *str1,const char *str2)
{//比较字串大小
    while((*str1==*str2)&&(*str1))
    {
      *str1++;
      *str2++;
    }
    if ((*str1==*str2)&&(!*str1))
    cout<<"两个字符串一样"<<"\n";
    else if((*str1)&&(!*str2))      
         cout<<"第一个字符串大于第二个字符串"<<"\n";
         else if((*str2)&&(!*str1))
            cout<<"第二个字符串大于第一个字符串"<<"\n";
            elseif((*str1)>(*str2))
                  cout<<"第一个字符串大于第二个字符串"<<"\n";
                  else cout<<"第二个字符串大于第一个字符串"<<"\n";

}

void showall(const char *string)
{
    int num1=0,num2=0,num3=0;
    while(*string)
    {
    if(*string>='a'&&*string<='z')num1++;
    if(*string>='A'&&*string<='Z')num2++;
    if(*string>='0'&&*string<='9')num3++;
        *string++;
    }
    cout<<"你输入的字符串中小写字母"<<num1<<"\n"
      <<"你输入的字符串中大写字母"<<num2<<"\n"
      <<"你输入的字符串中数字"<<num3<<"\n";
   
}
void main()
{
        char str1,str2;
        cout<<"请输入两组字符串用回车分开"<<endl;
        cin>>str1>>str2;
        cout<<"你输入的第一个字符串是:"<<str1<<""<<"长度是:"<<strle(str1)<<"\n";
        showall(str1);
        cout<<"你输入的第二个字符串是:"<<str2<<""<<"长度是:"<<strle(str2)<<"\n";
        showall(str2);
        strcm(str1,str2);
        strca(str1,str2);
}

249142260 发表于 2007-8-16 14:21:45

学习了 `````/:001

天国之翼 发表于 2007-8-16 20:03:54

freesoft 发表于 2007-8-20 16:00:51

主要是学习,现在我停一天,因为要开始说结构体和类的东西。。了
页: [1]
查看完整版本: 编程马拉松(7)