| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1970 人关注过本帖
标题:随意输入字符串,按字母大小排序,如:abcABC,输出CcBbAa.
只看楼主 加入收藏
_Strike
Rank: 2
等 级:论坛游民
帖 子:133
专家分:72
注 册:2016-3-22
结帖率:90.63%
收藏
已结贴  问题点数:15 回复次数:8 
随意输入字符串,按字母大小排序,如:abcABC,输出CcBbAa.
#include<stdio.h>
#include<string.h>
void sort(char a[], int n)
{
    int i, j;
    for (i = 0; i < n - 1; i++)
    {
        for (j = i + 1; j< n; j++)
        {
            if (a[i] < a[j])
            {
                char temp;
                if ((a[j] >= 'a') && (a[i] <= 'a'))
                {
                    if ((a[i] - 'A') < (a[j] - 'a'))
                    {
                        continue;
                    }
                }
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
            else
            {
                char temp;
                if ((a[i] >= 'a') && (a[j] <= 'a'))
                {
                    if ((a[i] - 'a') <= (a[j] - 'A'))
                    {
                        temp = a[i];
                        a[i] = a[j];
                        a[j] = temp;
                    }
                }
               
            }
        }
    }
}

int main()
{
    char a[] = "ageAGE";

    sort(a, strlen(a));
   
    printf("%s\n",a);
    return 0;


}
搜索更多相关主题的帖子: continue include 字符串 字母 
2016-05-25 18:59
_Strike
Rank: 2
等 级:论坛游民
帖 子:133
专家分:72
注 册:2016-3-22
收藏
得分:0 
刚才发过一贴,不小心结贴了,可能没人回答,所以再发一次
2016-05-25 19:00
_Strike
Rank: 2
等 级:论坛游民
帖 子:133
专家分:72
注 册:2016-3-22
收藏
得分:0 
上面那个程序是一个版主写的,把字符串改成ABCabc就错了。
2016-05-25 19:01
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

void do_deal(char*);
void bubbling(char*);

main()
{
  char somecase[100];
  scanf("%s",somecase);
  do_deal(somecase);
  return 0;
}

void do_deal(char *s)
{
  size_t length=strlen(s)+1;
  char left[length+1],right[length+1];
  int i,j,k=0,l=0;
  for(i=0;i<length;i++)
    if(isupper(s[i]))
    left[k++]=s[i];
    else
    right[l++]=s[i];
  left[k++]='\0';
  right[l++]='\0';
  bubbling(left);
  bubbling(right);
  i=0,j=0;
  int m;
  for(m=0;m<length;m++)
      if(left[i]==right[j]-32&&left[i]!='\0')
      s[m]=left[i++];
      else
      s[m]=right[j++];
  printf("%s\n",s);

}

void bubbling(char *p)
{
  char tmp;
  int i,j,l=strlen(p); 
  for(i=0;i<l-1;i++)
      for(j=1;j<l-i;j++)
      if(p[j]>p[j-1]) {
          tmp=p[j];
          p[j]=p[j-1];
          p[j-1]=tmp;
      }
}


[此贴子已经被作者于2016-5-25 20:58编辑过]


未佩好剑,转身便已是江湖
2016-05-25 20:57
_Strike
Rank: 2
等 级:论坛游民
帖 子:133
专家分:72
注 册:2016-3-22
收藏
得分:0 
还是错了,你输入:WHTjiHi,输出是:jii
2016-05-25 21:36
_Strike
Rank: 2
等 级:论坛游民
帖 子:133
专家分:72
注 册:2016-3-22
收藏
得分:0 
回复 4楼 alice_usnet
还是错了,你输入:WHTjiHi,输出是:jii
2016-05-25 21:36
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
收藏
得分:12 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

void do_deal(char*);
void bubbling(char*);

main()
{
  char somecase[100];
  scanf("%s",somecase);
  do_deal(somecase);
  return 0;
}

void do_deal(char *s)
{
  size_t length=strlen(s);
  char left[length+1],right[length+1];
  int i,j,k=0,l=0;
  for(i=0;i<length;i++)
    if(isupper(s[i]))
    left[k++]=s[i];
    else
    right[l++]=s[i];
  left[k++]='\0';
  right[l++]='\0';
  bubbling(left);
  bubbling(right);
  i=0,j=0;
  int m;
  for(m=0;m<length;m++)
      if(left[i]>=right[j]-32&&left[i]!='\0')
      s[m]=left[i++];
      else
      s[m]=right[j++];
  printf("%s\n",s);

}

void bubbling(char *p)
{
  char tmp;
  int i,j,l=strlen(p); 
  for(i=0;i<l-1;i++)
      for(j=1;j<l-i;j++)
      if(p[j]>p[j-1]) {
          tmp=p[j];
          p[j]=p[j-1];
          p[j-1]=tmp;
      }
}

要求真多。。。

未佩好剑,转身便已是江湖
2016-05-25 21:38
_Strike
Rank: 2
等 级:论坛游民
帖 子:133
专家分:72
注 册:2016-3-22
收藏
得分:0 
回复 7楼 alice_usnet
谢啦
2016-05-25 21:40
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:3 
程序代码:
#include <stdio.h>
#include <ctype.h>

main()
{
    char s[20], *i, *j, tmp;
    gets(s);
    for (i=s; *i!=0; i++)
    {
        if (!isalpha(*i)) continue; //只处理英文字母 
        for (j=i+1; *j!=0; j++)
        {
            if (!isalpha(*j)) continue;
            if (toupper(*i) < toupper(*j)) 
            {
                tmp = *i;
                *i = *j;
                *j = tmp;
            }
            else
            {
                if (toupper(*i) == toupper(*j))
                {
                    if (*i > *j)
                    {
                        tmp = *i;
                        *i = *j;
                        *j = tmp;
                    }
                }
            }
        }
    }
    printf("%s\n", s);
}
2016-05-25 21:41
快速回复:随意输入字符串,按字母大小排序,如:abcABC,输出CcBbAa.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.055286 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved