平时碰到的一些编程题

把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,不能申请额外的空间。

大写字母置后
 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 //大致思路是从最后一个字符开始判断是不是大写字母,如果是就和后面的i个小写字母冒泡交换,如果不是大写字母就令小写字母的数目i++
 5 //判断是不是大写字母 
 6 int isUpperAlpha(char c)
 7 {
 8     if(c >= 'A' && c <= 'Z')
 9      {
10         return 1;
11     }
12     return 0; 
13 }
14 
15 //交换两个字母 
16 void swap(char *a, char *b)
17 {
18     char temp = *a;
19     *a = *b;
20     *b = temp;
21 } 
22 
23 char * mySort(char *arr, int len)
24 {
25     if(arr == NULL || len <= 0)
26     {
27         return NULL;
28     }
29     
30     int i = 0, j = 0, k = 0, m = 0;
31     for(j = len-1; j >=0; j--)
32     {
33             if(isUpperAlpha(arr[j]))
34             {
35                 m=j;k=i;  //i为小写字母的数目
36                 while(k--)
37                 {  
38                     swap(&arr[m++], &arr[m]);
39                 }        
40             }
41             else i++;
42     }    
43     return arr;
44 }
45 
46 int main()
47 {
48     char arr[] = "GaaaaBGaaaAbcAdeBbDAcSSs";
49     printf("%s\n", mySort(arr, strlen(arr)));
50     return 0;
51 }

 

螺旋矩阵

螺旋矩阵
 1 #include<iostream>
 2 using namespace std;
 3 void main()
 4 {
 5     int N,i=-1,j,n,num=1;  
 6     int a[10][10]={0};  
 7     cout<<"输入矩阵的阶数:"<<endl;
 8     cin>>N;
 9     for(n=0;n<N/2;n++)
10     {
11         for(j=n;j<N-n-1;j++)    a[i+1][j]=num++;
12         for(i=n;i<N-n-1;i++)    a[i][j]=num++;    
13         for(j=N-n-1;j>n;j--)    a[i][j]=num++;
14         for(i=N-n-1;i>n;i--)    a[i][j]=num++;
15     }
16     if(0==a[n][n])    a[n][n]=num++;
17     for(i=0;i<N;i++)
18     {    
19         for(j=0;j<N;j++)
20             cout<<a[i][j]<<'\t';
21     cout<<endl;
22     }
23 }

 

》》》 

posted on 2012-09-30 14:04  月流霜  阅读(254)  评论(0编辑  收藏  举报