|
发表于 2022-10-21 12:39:28
|
显示全部楼层
本帖最后由 howzyao 于 2022-10-21 12:44 编辑
完成了,方法未提练,献丑了:
图:
码:
- #include <iostream>
- #include <conio.h>
- using namespace std;
- void choice_a_same_type(char*,int);
- void process_string(char*,char*,char*,char*,int);
- void char_swap(char*,char*);
- void head_max_arr(char*,int);
- void head_min_arr(char*,int);
- void collect_three_to_one(char*,char*,char*,char*,int);
- void remove_space(char*,int);
- int main()
- {
- int len=1024;
- char ch[len];
- cout<<"输入要处理的字符串:\n";
- cin>>ch;
- char AZ[len],az[len],zn[len];
- process_string(ch,AZ,az,zn,len);
- choice_a_same_type(AZ,len);
- choice_a_same_type(az,len);
- choice_a_same_type(zn,len);
- remove_space(AZ,len);
- remove_space(az,len);
- remove_space(zn,len);
- remove_space(AZ,len);
- head_min_arr(AZ,len);
- //head_max_arr(AZ,len);
- head_min_arr(az,len);
- //head_max_arr(az,len);
- head_min_arr(zn,len);
- //head_max_arr(zn,len);
- collect_three_to_one(ch,AZ,zn,az,len);
- return 0;
- }
- void collect_three_to_one(char*a,char*b,char*c,char*d,int e)
- {
- int bl=0;
- for(int i=0;i<e;i++)
- {
- bl++;
- if(b[i]=='\0')
- break;
- }
- bl--;
- int ai=0;
- for( ;ai<bl;ai++)
- {
- a[ ai ]=b[ ai ];
- }
- int cl=0;
- for(int i=0;i<e;i++)
- {
- cl++;
- if(c[i]=='\0')
- break;
- }
- cl--;
- int ci=0;
- for(;ci<cl;ci++)
- {
- a [ai+ci] = c[ci];
- }
- int dl=0;
- for(int i=0;i<e;i++)
- {
- dl++;
- if(d[i]=='\0')
- break;
- }
- dl--;
- int di=0;
- for(; di<dl; di++)
- {
- a [ ai+ci+di ] = d[di];
- }
- a[ai+ci+di]='\0';
- cout<<"完成字符串: "<<a<<endl;
- }
- void remove_space(char*a,int b)
- {
- int tlen=0;
- int space=0;
- for(int i=0;i<b;i++)
- {
- tlen++;
- if(a[i]=='\0')
- break;
- if(a[i]==32)
- space++;
- }
- tlen--;
- int word_i = tlen - space;
- char t[word_i+1];
- int ti=0;
- for( int i=0;i<b; i++)
- {
- if(a[i]!=32)
- {
- if(a[i]=='\0')
- break;
- t[ ti ] = a[i];
- ti++;
- }
- }
- t[ti]='\0';
- for(int i=0;i<b;i++)
- {
- a[i]=t[i];
- if(a[i]=='\0')
- break;
- }
- cout<<"排好的字符串: "<< a <<endl;
- }
- void char_swap(char *a,char *b)
- {
- char t = *a;
- *a = *b;
- *b = t;
- }
- void head_max_arr(char*a,int b)
- {
- int tlen=0;
- for(int i=0;i<b;i++)
- {
- tlen++;
- if(a[i]=='\0')
- break;
- }
- tlen--;
- for(int i=0;i<tlen;i++)
- {
- for(int j=0; j+1 < tlen; j++)
- {
- if( a[j] < a[j+1] )
- char_swap(&a[j],&a[j+1]);
- }
- }
- cout<<"大到小排序: "<<a<<endl;
- }
- void head_min_arr(char*a,int b)
- {
- int tlen=0;
- for(int i=0;i<b;i++)
- {
- tlen++;
- if(a[i]=='\0')
- break;
- }
- tlen--;
- for(int i=0;i<tlen;i++)
- {
- for(int j=0; j+1 < tlen; j++)
- {
- if( a[j] > a[j+1] )
- char_swap(&a[j],&a[j+1]);
- }
- }
- cout<<"小到大排序: "<<a<<endl;
- }
- void process_string(char*a,char*b,char*c,char*d,int e)
- {
- int i=0;
- while(a[i] != '\0')
- {
- if( a[i]>=65 && a[i]<= 90)
- b[i] = a[i];
- else
- b[i] = 32;
- if( a[i] >= 97 && a[i]<=122)
- c[i]= a[i];
- else
- c[i] = 32;
- if( a[i] >= 48 && a[i]<= 57 )
- d[i]=a[i];
- else
- d[i] = 32;
- i++;
- }
- b[i]='\0';
- c[i]='\0';
- d[i]='\0';
- cout<<a <<" 有 " << i <<"个字符"<<endl;
- }
- void choice_a_same_type(char *a,int b)
- {
- char t[b];
- int j=0;
- for(int i=0;i<b;i++)
- {
- if(a[i]!=32)
- {
- t[j]=a[i];
- j++;
- }
- }
- t[j]='\0';
- if( t[0]>=65 && t[0]<= 90)
- cout<<"大写段字符串: "<<t<<endl;
- if( t[0]>=97 && t[0]<= 122)
- cout<<"小写段字符串: "<<t<<endl;
- if( t[0]>=48 && t[0]<= 57)
- cout<<"数字段字符串: "<<t<<endl;
- }
复制代码 |
|