統計字串的相關操作
統計字符出現次數
/*統計串S中字符的種類和個數*/
#include<cstring>
#include<iostream>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
#define MAXSTRLEN 255 //用戶可在255以內定義最長串長
//typedef char SString[MAXSTRLEN+1]; //0號單元存放串的長度
typedef struct{
char ch[MAXSTRLEN+1]; //若是非空串,則按串長分配存盤區,否則ch為NULL
int length; //串長度
}SString;
typedef struct {
char ch;//存放出現的字符
int num;//出現的個數
} mytype;
Status StrAssign(SString &T, char *chars) { //生成一個其值等于chars的串T
int i;
if (strlen(chars) > MAXSTRLEN)
return ERROR;
else {
T.length = strlen(chars);
for (i = 1; i <= T.length; i++)
T.ch[i] = *(chars + i - 1);
return OK;
}
}
void StrAnalyze(SString S)//統計串S中字符的種類和個數
{char c;
mytype T[20]; //用結構陣列T存盤統計結果
int i,j;
for (i=0;i<=20;i++) {T[i].ch='\0',T[i].num=0;};
for(i=1;i<=S.length;i++)
{
c=S.ch[i];j=0;
while(T[j].ch&&T[j].ch!=c) j++; //查找當前字符c是否已記錄過
if(T[j].ch) T[j].num++;
else {T[j].ch=c;T[j].num++;}
}//for
for(j=0;T[j].ch;j++)
cout<<T[j].ch<<":"<<T[j].num<<endl;
}//StrAnalyze
int main()
{SString S;
char *T="sasdddas1111as";
StrAssign(S,T);
StrAnalyze(S);
return 0;
}
統計字符出現次數的另一種情況
/*統計串S中字符的種類和個數*/
#include<cstring>
#include<iostream>
using namespace std;
void count()//統計輸入字串中數字字符和字母字符的個數,
{ int i,num[36];
char ch;
for (i=0;i<36;i++) num[i]=0;
while ((ch=getchar())!='#')
{
if('0'<=ch&&ch<='9')
{i=int(ch)-48;num[i]++;}
else if('A'<=ch&&ch<='Z')
{i=ch-65+10;num[i]++;}}
for(i=0;i<10;i++)
cout<<"數字"<<i<<"的個數"<<num[i]<<endl;
for(i=10;i<36;i++)
cout<<"字母"<<char(i+55)<<"的個數"<<num[i]<<endl;
}
int main()
{cout<<"請輸入字串:('#'結束)";
count();
}
排正負(與本章主題無關)
#include<iostream>
using namespace std;
void Arrange(int A[],int n){
int i= 0,j=n-1,x,k=0;
while(i<j){
while(i<j&&A[i]>0) i++;
while(i<j&&A[j]<0) j--;
if(i<j){
x=A[i];
A[i]=A[j];
A[j]=x;
i++;
j--;
}
}
while(k<n){
cout<<A[k]<<" ";
k++;
}
}
int main(){
int a[100];
int i=0,x,n;
cout<<"輸入陣列的個數:" ;
cin>>n;
while(i<n){
cin>>x;
a[i++]=x;
}
Arrange(a,n);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/135935.html
標籤:其他
上一篇:mysql – 使用Galera multi-master減少100倍的插入性能
下一篇:歸并排序
