19 个解决方案
#1
用字母对应的ASCII码进行排序。。。
#2
举个例子先。
#3
假设str为你的那个字符串 islower为判断是不是小写字母,isupper判断是不是大写字母,都是api
for(int i=0; i<n; ++i)
if(islower(str[i]))
str[i] -= 32;
else if(isupper(str[i]))
str[i] += 32;
#4
楼上各位都没有理解楼主的意思就发表高见了。。。。
#5
楼主是作业题,好像 问题没有说清楚
楼上是把 字母大小写反过来
楼上是把 字母大小写反过来
#6
这题是谁出给楼主的?
要么多几次循环,要么视字符串长度分配空间,楼主那么苛刻的要求,我算是没法子了
要么多几次循环,要么视字符串长度分配空间,楼主那么苛刻的要求,我算是没法子了
#7
我都没看懂 有什么要求
#8
就是诸如将“qGrWfUs”变成“GWUqrfs"之类……
#9
我理解是将“qQsSwW”变成“QqSsWw"……
#10
aAbBcC --> ABCabc?
#11
那不就是一次排序就完了么?
#12
有个思路:
1.遍历所有元素,小写的存到 a, 大写存到b, 然后b+a。。。不过 这个 违背了 不开辟空间的要求。
2.不开辟空间。如aAbBcC 字符串,遍历一遍,依次把小写字母放到最后去,其他所有字母向前移一位。
for(i=0;i!=5;i++)
{
if(a[i]>=97)
{
int j = i; x = a[i];
while(j<=4)
{
a[j]=a[j+1];
++j;
}
}
}
不过这里 就有了for 和while 两个循环了。。又违背 要求了。。
没辙了。。阿门
1.遍历所有元素,小写的存到 a, 大写存到b, 然后b+a。。。不过 这个 违背了 不开辟空间的要求。
2.不开辟空间。如aAbBcC 字符串,遍历一遍,依次把小写字母放到最后去,其他所有字母向前移一位。
for(i=0;i!=5;i++)
{
if(a[i]>=97)
{
int j = i; x = a[i];
while(j<=4)
{
a[j]=a[j+1];
++j;
}
}
}
不过这里 就有了for 和while 两个循环了。。又违背 要求了。。
没辙了。。阿门
#13
不对不对。我这个代码 大错特错了。。。。不能看不能看。
#14
我这个代码 大错特错了。。 不能看 不能看。。
#15
居然不能连续发帖3次。。。
#16
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a = "aaaabBcCDDcsdsdfdDSsSdfD";
cout << a << endl;
int i = 0, n = 0;
int size = a.size();
cout<< size <<endl;
while(i <= size-1-n)
{
if(a[i]>=97)
{
int j = i;
char x = a[i];
while( j <= (size-2))
{
a[j] = a[j+1];
++j;
}
a[size-1]=x;
++n;
}
else ++i;
}
cout << a << endl;
}
这个代码能用了。。VS2008 编译 运行成功鸟。。。
不过 还是没能满足要求, 循环 嵌套 了。。 LZ能用就用,不能用拉到。
#17
运行结果
#18
include "ctype.h"
void case_sort_impl(const char* rsz, char** plwsz, char** lupsz)
{
char c = (*rsz);
if (c == 0)
{
--(*plwsz);
return;
}
if (islower(c))
{
++(*plwsz);
case_sort_impl(++rsz, plwsz, lupsz);
(**plwsz) = c;
--(*plwsz);
}
else
{
(**lupsz) = c;
++(*plwsz);
++(*lupsz);
case_sort_impl(++rsz, plwsz, lupsz);
}
}
void case_sort(char sz[])
{
char* plwsz = sz;
char* pupsz = sz;
case_sort_impl(sz, &plwsz, &pupsz);
}
int main()
{
char sz[128];
printf("enter the string : ");
gets(sz);
case_sort(sz);
printf(" after case sort : %s\n", sz);
return 0;
}
enter the string : abCdeFGHIjklmNopQ
after case sort : CFGHINQabdejklmop
请按任意键继续. . .
#19
用qsort函数
#20
#1
用字母对应的ASCII码进行排序。。。
#2
举个例子先。
#3
假设str为你的那个字符串 islower为判断是不是小写字母,isupper判断是不是大写字母,都是api
for(int i=0; i<n; ++i)
if(islower(str[i]))
str[i] -= 32;
else if(isupper(str[i]))
str[i] += 32;
#4
楼上各位都没有理解楼主的意思就发表高见了。。。。
#5
楼主是作业题,好像 问题没有说清楚
楼上是把 字母大小写反过来
楼上是把 字母大小写反过来
#6
这题是谁出给楼主的?
要么多几次循环,要么视字符串长度分配空间,楼主那么苛刻的要求,我算是没法子了
要么多几次循环,要么视字符串长度分配空间,楼主那么苛刻的要求,我算是没法子了
#7
我都没看懂 有什么要求
#8
就是诸如将“qGrWfUs”变成“GWUqrfs"之类……
#9
我理解是将“qQsSwW”变成“QqSsWw"……
#10
aAbBcC --> ABCabc?
#11
那不就是一次排序就完了么?
#12
有个思路:
1.遍历所有元素,小写的存到 a, 大写存到b, 然后b+a。。。不过 这个 违背了 不开辟空间的要求。
2.不开辟空间。如aAbBcC 字符串,遍历一遍,依次把小写字母放到最后去,其他所有字母向前移一位。
for(i=0;i!=5;i++)
{
if(a[i]>=97)
{
int j = i; x = a[i];
while(j<=4)
{
a[j]=a[j+1];
++j;
}
}
}
不过这里 就有了for 和while 两个循环了。。又违背 要求了。。
没辙了。。阿门
1.遍历所有元素,小写的存到 a, 大写存到b, 然后b+a。。。不过 这个 违背了 不开辟空间的要求。
2.不开辟空间。如aAbBcC 字符串,遍历一遍,依次把小写字母放到最后去,其他所有字母向前移一位。
for(i=0;i!=5;i++)
{
if(a[i]>=97)
{
int j = i; x = a[i];
while(j<=4)
{
a[j]=a[j+1];
++j;
}
}
}
不过这里 就有了for 和while 两个循环了。。又违背 要求了。。
没辙了。。阿门
#13
不对不对。我这个代码 大错特错了。。。。不能看不能看。
#14
我这个代码 大错特错了。。 不能看 不能看。。
#15
居然不能连续发帖3次。。。
#16
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a = "aaaabBcCDDcsdsdfdDSsSdfD";
cout << a << endl;
int i = 0, n = 0;
int size = a.size();
cout<< size <<endl;
while(i <= size-1-n)
{
if(a[i]>=97)
{
int j = i;
char x = a[i];
while( j <= (size-2))
{
a[j] = a[j+1];
++j;
}
a[size-1]=x;
++n;
}
else ++i;
}
cout << a << endl;
}
这个代码能用了。。VS2008 编译 运行成功鸟。。。
不过 还是没能满足要求, 循环 嵌套 了。。 LZ能用就用,不能用拉到。
#17
运行结果
#18
include "ctype.h"
void case_sort_impl(const char* rsz, char** plwsz, char** lupsz)
{
char c = (*rsz);
if (c == 0)
{
--(*plwsz);
return;
}
if (islower(c))
{
++(*plwsz);
case_sort_impl(++rsz, plwsz, lupsz);
(**plwsz) = c;
--(*plwsz);
}
else
{
(**lupsz) = c;
++(*plwsz);
++(*lupsz);
case_sort_impl(++rsz, plwsz, lupsz);
}
}
void case_sort(char sz[])
{
char* plwsz = sz;
char* pupsz = sz;
case_sort_impl(sz, &plwsz, &pupsz);
}
int main()
{
char sz[128];
printf("enter the string : ");
gets(sz);
case_sort(sz);
printf(" after case sort : %s\n", sz);
return 0;
}
enter the string : abCdeFGHIjklmNopQ
after case sort : CFGHINQabdejklmop
请按任意键继续. . .
#19
用qsort函数