飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3094|回复: 4

[C/C++] C_19作业数字排序and字符串处理

[复制链接]
  • TA的每日心情
    开心
    2021-3-27 09:12
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2011-1-16 10:34:56 | 显示全部楼层 |阅读模式
    1。数字排序
    =====================================================
    1. #define  TOTAL 10
    2. /*在指针p处,依次输入存放n个int型数*/
    3. void InputNum(int *p,int n)
    4. {
    5.         int i=0;
    6.         for(;i < n;i++)
    7.         {
    8.                 scanf("%d",p+i);
    9.         }
    10. }
    11. /*把指针p指向的n个int型的数依次显示出来*/
    12. void Show(int *p,int n)
    13. {
    14.         int i=0;
    15.         for(;i<n;i++)
    16.         {
    17.                 printf("%d ",*(p+i));
    18.         }
    19.         printf("\n");
    20. }

    21. /*比较两个数大小, a>b返回1 , a<b返回0 */
    22. int NumCmp(int a,int b)
    23. {
    24.         return a>b ? 1:0;
    25. }
    26. /*交换两个数的位置*/
    27. void Change(int *a,int *b)
    28. {
    29.         int t;
    30.         t = *a;
    31.         *a = *b;
    32.         *b =t;
    33. }
    34. /*把指针p指向的n个int型的数进行从大到小排序*/
    35. void LtoS(int *p, int n)
    36. {
    37.         int i,j;
    38.         for(j=0;j<n-1;j++)
    39.         {
    40.                 for(i=0;i<n-1-j;i++)
    41.                 {
    42.                         if(!(NumCmp(*(p+i),*(p+i+1))))
    43.                         {
    44.                                 Change(p+i,p+i+1);
    45.                         }
    46.                 }
    47.         }       
    48. }
    49. /*把指针p指向的n个int型的数进行从小到大排序*/
    50. void StoL(int *p, int n)
    51. {
    52.         int i,j;
    53.         for(j=0;j<n-1;j++)
    54.         {
    55.                 for(i=0;i<n-1-j;i++)
    56.                 {
    57.                         if(NumCmp(*(p+i),*(p+i+1)))
    58.                         {
    59.                                 Change(p+i,p+i+1);
    60.                         }
    61.                 }
    62.         }       
    63. }
    64. /*把指针p指向的n个int型的数进行乱序排序*/
    65. void LX(int *p, int n)
    66. {
    67.         int i,j,t=1;
    68.         for(j=0;j<n-1;j++)
    69.         {
    70.                 for(i=n-2;i>=0;i--)
    71.                 {
    72.                         if(t == 1)
    73.                         {                       
    74.                                 if(NumCmp(*(p+i),*(p+i+1)))
    75.                                 {
    76.                                         Change(p+i,p+i+1);
    77.                                 }
    78.                         }
    79.                         else
    80.                         {
    81.                                 if(!(NumCmp(*(p+i),*(p+i+1))))
    82.                                 {
    83.                                         Change(p+i,p+i+1);
    84.                                 }
    85.                         }
    86.                        
    87.                 }
    88.                 t=t*(-1);
    89.         }       
    90. }
    91. /*        比较两个指针指向的字符串是否相等,相等返回1,不等返回0   */
    92. int MyStrCmp(char *str1,char *str2)
    93. {
    94.         int i=0;
    95.         while(*(str1+i))
    96.         {
    97.                 if(*(str1+i) != *(str2+i))
    98.                 {
    99.                         return 0;
    100.                 }
    101.                 i++;
    102.         }
    103.         return 1;
    104. }
    105. /*根据指针type指向的字符串,判断用哪种排序方法,对指针p指向的n个int型的数进行排序*/
    106. void SortIntList(int *p,int n,char *type)
    107. {
    108.         char fun1[] = {"LtoS"};
    109.         char fun2[] = {"StoL"};
    110.         char fun3[] = {"LX"};
    111.         if(MyStrCmp(fun1,type))
    112.         {
    113.                 LtoS(p,n);       
    114.         }
    115.         else if(MyStrCmp(fun2,type))
    116.         {
    117.                 StoL(p,n);
    118.         }
    119.         else if(MyStrCmp(fun3,type))
    120.         {
    121.                 LX(p,n);
    122.         }

    123. }

    124. int main()
    125. {
    126.         int *p = (int *)malloc(10 * sizeof(int));
    127.         printf("Please Input %d Number:\n",TOTAL);
    128.         InputNum(p,TOTAL);
    129.         SortIntList(p,TOTAL,"LtoS");
    130.         printf("The Large to Small Number:\n");
    131.         Show(p,TOTAL);
    132.         SortIntList(p,TOTAL,"StoL");
    133.         printf("The Small to Large Number:\n");
    134.         Show(p,TOTAL);
    135.         SortIntList(p,TOTAL,"LX");
    136.         printf("The Luan Xu Number:\n");
    137.         Show(p,TOTAL);
    138.         free(p);

    139.         return 0;
    140. }
    复制代码
    ==================================================
    2。字符串处理
    1. #define N 20
    2. /* 指针p指向的字符串小写转大写 */
    3. void MyStrUpper(char *p)
    4. {
    5.         int i=0;
    6.         while(*(p+i))
    7.         {
    8.                 if(*(p+i) >= 'a' && *(p+i) <= 'z')
    9.                 {
    10.                         *(p+i)-=0x20;
    11.                 }
    12.                 i++;
    13.         }
    14. }
    15. /* 指针p指向的字符串大写转小写 */
    16. void MyStrLower(char *p)
    17. {
    18.         int i=0;
    19.         while(*(p+i))
    20.         {
    21.                 if(*(p+i) >= 'A' && *(p+i) <= 'Z')
    22.                 {
    23.                         *(p+i)+=0x20;
    24.                 }
    25.                 i++;
    26.         }
    27. }
    28. void MyStrPJ(char *str1,char *str2)
    29. {
    30.         int i=0,si=0;

    31.         if(strlen(str1) + strlen(str2) > N)
    32.         {
    33.                 printf("Don't PJ!\n");
    34.         }
    35.         else
    36.         {
    37.                 si=strlen(str1);
    38.                 while(*(str2+i))
    39.                 {
    40.                         *(str1+si+i) = *(str2+i);
    41.                         i++;
    42.                 }
    43.                         *(str1+si+i) =0;
    44.                 puts(str1);
    45.                 printf("\n");
    46.         }
    47. }

    48. /* 记录指针str指向的字符串中字符a的个数js,返回js */
    49. int MyStrJS(char *str,char a)
    50. {
    51.         int i=0,js=0;
    52.         while(*(str+i))
    53.         {
    54.                 if(*(str+i) == a)
    55.                 {
    56.                         js++;
    57.                 }
    58.                 i++;
    59.         }
    60.         return js;
    61. }
    62. /*记录指针str指向的字符串中字符串word的个数js,返回js*/
    63. int MyStrWord(char *str,char *word)
    64. {
    65.         int i=0,j,js=0;
    66.         while(*(str+i))
    67.         {
    68.                 if(*(str+i) == *word)
    69.                 {
    70.                         j=0;
    71.                         while(*(word+j))
    72.                         {
    73.                                 if(*(str+i) != *(word+j))
    74.                                 {
    75.                                         break;
    76.                                 }
    77.                                 j++;
    78.                                 i++;
    79.                         }
    80.                         i--;
    81.                         if(j == strlen(word))
    82.                         {
    83.                                 js+=1;
    84.                         }
    85.                 }
    86.                 i++;
    87.         }
    88.         return js;
    89. }
    90. /* 查找字符串str是否是字符串b开头,是返回1,不是返回0 */
    91. int MyStrBeginCmp(char *str,char *b)
    92. {
    93.         int i=0;
    94.         while(*(b+i))
    95.         {
    96.                 if(*(b+i) != *(str+i))
    97.                 {
    98.                         return 0;
    99.                 }
    100.                
    101.                 i++;
    102.         }
    103.         return 1;
    104. }
    105. /* 查找字符串str是否是字符串e结尾,是返回1,不是返回0 */
    106. int MyStrEndCmp(char *str,char *e)
    107. {
    108.         int i=0,len;
    109.         len = strlen(str)- strlen(e);
    110.         while(*(e+i))
    111.         {
    112.                 if(*(e+i) != *(str+i+len))
    113.                 {
    114.                         return 0;
    115.                 }
    116.                
    117.                 i++;
    118.         }
    119.         return 1;
    120. }
    121. main()
    122. {
    123.         char *str1 = (char *)malloc(N * sizeof(char));
    124.         char *str2 = (char *)malloc(N * sizeof(char));
    125.        
    126.         printf("Plsase Input str1: ");
    127.         scanf("%s",str1);                                                                                                /*输入一个字符串*/       
    128.        
    129.         MyStrUpper(str1);                                                                                                /*字符串小写转大写*/
    130.         printf("The Upper str1 : ");
    131.         puts(str1);
    132.        
    133.         printf("Plsase Input str2: ");                       
    134.         scanf("%s",str2);                                                                                                /*输入一个字符串*/       

    135.         MyStrLower(str2);                                                                                                /*字符串小写转大写*/
    136.         printf("The Lower str2 : ");
    137.         puts(str2);
    138.        
    139.         printf("The str1 and str2 PJ(把2个字符串拼接起来) :");
    140.         MyStrPJ(str1,str2);                                                                                                /* 把字符串str1,str2拼接到str1 */       

    141.         printf("Plsase Input str(输入一个字符串查看其中'a'个数): ");
    142.         scanf("%s",str1);                                                                                                /*输入一个字符串*/
    143.         printf(" %d 'a' in The str!\n",MyStrJS(str1,'a'));                                /*查找字符串中'a'的个数*/

    144.         printf("Plsase Input str(输入一个字符串查看其中'hello'个数): ");
    145.         scanf("%s",str1);                                                                                                /*输入一个字符串*/
    146.         printf("%d 'hello' in The str\n",MyStrWord(str1,"hello"));                /*查找字符串中'hello'的个数*/

    147.         printf("Plsase Input str(输入一个字符串查看是否已'begin'开头): ");
    148.         scanf("%s",str1);                                                                                                /*输入一个字符串*/
    149.        
    150.         if(MyStrBeginCmp(str1,"begin"))                                                                        /*查找字符串是否是'begin'开头*/
    151.         {
    152.                 printf("Yes!\n");
    153.         }
    154.         else
    155.         {
    156.                 printf("No!\n");
    157.         }

    158.         printf("Plsase Input str(输入一个字符串查看是否已'end'结尾): ");
    159.         scanf("%s",str1);                                                                                                /* 输入一个字符串 */
    160.        
    161.         if(MyStrEndCmp(str1,"end"))                                                                                /* 查找字符串是否是'end'结尾 */
    162.         {
    163.                 printf("Yes!\n");
    164.         }
    165.         else
    166.         {
    167.                 printf("No!\n");
    168.         }
    169.        
    170.        
    171.         free(str2);
    172.         free(str1);
    173. }
    复制代码
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2021-3-27 09:12
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2011-1-16 10:36:49 | 显示全部楼层
    郁闷。怎么我的代码引用下就显示的这么乱了,大家要看的话,复制到记事本看吧。
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2019-3-12 17:25
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2011-1-16 12:01:29 | 显示全部楼层
    顶贴
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-12-28 01:47
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2011-1-16 20:54:28 | 显示全部楼层
    Z大威武  我还在看书...
    根基没打牢啊...
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-9-12 22:31
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2011-2-14 13:51:57 | 显示全部楼层
    :sleepy:没事,能看懂,乱就乱点,放IDE,自动美化下代码就好了……
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表