输入若干英文单词,将每个单词的首字母转换成大写字母,其他字母为小写,并按字典顺序排列
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int cmp(const void * a, const void * b)
{
return strcmp(*(char **)a, *(char **)b);
}
int main(int argc, char* argv[])
{
int n = 0;
int i;
printf("how many words?\n");
scanf("%d", &n);
char ** s = new char *[n];
for (i = 0; i < n; i++)
{
s[i] = new char[100];
scanf("%s", s[i]);
char * t = s[i];
while (*t != '\0')
{
if (t == s[i] && (*t >= 'a' && *t <= 'z')) *t = *t - 'a' + 'A';
if (t > s[i] && (*t >= 'A' && *t <= 'Z')) *t = *t - 'A' + 'a';
t++;
}
}
qsort(s, n, sizeof(char *), cmp);
for (i = 0; i < n; i++)
{
printf("%s\n", s[i]);
}
return 0;
}
how many words?
5
wORd
HellO
yEllow
she
APPLE
Apple
Hello
She
Word
Yellow
Press any key to continue
这是两个需求,第一个简单:字母大写小写转换;第二个排序:排序算法很多,网上查一下就有答案。在字母大写小写转换时统计一下个数,排序时用。
(1)单词字母大小转换比较容易实现。
(2)字符串比较可以用strcmp函数。
(3)选一种常见的排序算法(如冒泡),用strcmp函数对字符串进行比较,然后排序即可实现。