1. 程式人生 > 其它 >統計字元,逆序,正前負後儲存

統計字元,逆序,正前負後儲存

3(1)

寫一個演算法統計在輸入字串中各個字元出現的頻度並將結構存入檔案(字串中的合法字元為A~Z這26個字母和0~9這10個數字)

 1 //演算法:
 2 /*
 3 void cnout()
 4 {
 5     for(int i=0;i<36;i++)
 6     {
 7         num[i]=0;
 8     }
 9     while(ch=getchar()!='\n')
10     {
11         if(ch>='0'&&ch<='9')
12         {
13             i=ch-48;
14             num[i]++;
15 } 16 else if(ch>='A'&&ch<='Z') 17 { 18 i=ch-65+10; 19 num[i]++; 20 } 21 } 22 for(int i=0;i<10;i++) 23 { 24 cout<<"數字"<<char(i+48)<<"的個數為"<<num[i]<<endl; 25 }
26 for(int i=10;i<36;i++) 27 { 28 cout<<"字母"<<char(i+65-10)<<"的個數為"<<num[i]<<endl; 29 } 30 } 31 */
 1 //原始碼:
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 int num[50];
 5 char ch;
 6 void cnout()
 7 {
 8     int i;
 9     for
(int i=0;i<36;i++) 10 { 11 num[i]=0; 12 } 13 ch=getchar(); 14 while(ch!='\n') 15 { 16 if(ch>='0'&&ch<='9') 17 { 18 i=ch-48; 19 num[i]++; 20 } 21 else if(ch>='A'&&ch<='Z') 22 { 23 i=ch-65+10; 24 num[i]++; 25 } 26 ch=getchar(); 27 } 28 for(int i=0;i<10;i++) 29 { 30 cout<<"數字"<<char(i+48)<<"的個數為"<<num[i]<<endl; 31 } 32 for(int i=10;i<36;i++) 33 { 34 cout<<"字母"<<char(i+65-10)<<"的個數為"<<num[i]<<endl; 35 } 36 } 37 int main() 38 { 39 cnout(); 40 return 0; 41 }

3(2)

寫一個遞迴演算法來實現字串中逆序儲存,要求不另設字串儲存空間。

 1 //演算法:
 2 /*
 3 char cc(char a[])
 4 {     
 5      char ch;
 6      ch=getchar();
 7      static i=0;
 8      if(ch!='\n')
 9      {
10      cc(a);
11      a[i]=ch;
12      i++;
13      }
14      a[i]='\0';
15 }
16 */
 1 //原始碼:
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 int i=0;
 5 char a[1000];
 6 char cc(char a[])
 7 {
 8     char ch;
 9     ch=getchar();
10     if(ch!='\n')
11     {
12         cc(a);
13         a[i]=ch;
14         i++;
15     }
16     a[i]='\0';
17 }
18 int main()
19 {
20     cc(a);
21     int j=0;
22     while(a[j]!='\0')
23     {
24         cout<<a[j]<<" ";
25         j++;
26     }
27     return 0;
28 }

3(6)

設任意n個整數存放於陣列A【1…n】中,試編寫演算法,將所有正數排在所有負數前面(要求:演算法時間複雜度為O(n))

 1 //演算法:
 2 /*
 3 void cc(int a[],int n)
 4 {
 5 int i=0,j<=n-1,x;
 6 while(i<j)
 7 {
 8 while(i<j&&a[i]>0) i++;
 9 while(i<j&&a[j]<0) j--;
10 if(i<j) 
11 {
12 x=a[i];
13 a[i]=a[j];
14 a[j]=x;
15 }
16 }
17 }
18 */
 1 //原始碼:
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 int a[1000];
 5 void cc(int a[],int n)
 6 {
 7     int i=0,j=n-1,x;
 8     while(i<j)
 9     {
10         while(i<j&&a[i]>0) i++;
11         while(i<j&&a[j]<0) j--;
12         if(i<j) 
13         {
14             x=a[i];
15             a[i]=a[j];
16             a[j]=x;
17         }
18     }
19 }
20 int main()
21 {
22     int n;
23     cin>>n;
24     for(int i=0;i<n;i++)
25     {
26         cin>>a[i];
27     }
28     cc(a,n);
29     for(int i=0;i<n;i++)
30     {
31         cout<<a[i]<<" ";
32     }
33     return 0;
34 }