在主函数中输入5个字符串(每个字符串的长度不大于20),并输出这5个字符串。编写一个排序函数,完成对这些字符串按照字典顺序排序。然后在主函数中调用该排序函数,并输出这5个已排好序的字符串。要求用指针数组处理这些字符串。
时间: 2023-04-30 07:06:32 浏览: 149
本题要求在主函数中输入5个字符串(每个字符串的长度不大于20),然后输出这5个字符串。编写一个排序函数,完成对这些字符串按照字典顺序排序。然后在主函数中调用该排序函数,并输出已排序的5个字符串。需要使用指针数组处理这些字符串。
相关问题
题目要求编写一个函数,使用指针变量作为参数,实现两个字符交换的功能。在主函数中输入一个字符串,调用字符交换函数将其中的字符按照从小到大的顺序排列后输出。
好的,我明白了。以下是实现两个字符交换的函数示例:
```c
void swap(char *a, char *b) {
char temp = *a;
*a = *b;
*b = temp;
}
```
接下来是主函数的实现,其中调用了字符交换函数:
```c
#include <stdio.h>
#include <string.h>
void swap(char *a, char *b);
int main() {
char str[100];
printf("请输入一个字符串:\n");
scanf("%s", str);
int len = strlen(str);
for (int i = 0; i < len - 1; i++) {
for (int j = i + 1; j < len; j++) {
if (str[i] > str[j]) {
swap(&str[i], &str[j]);
}
}
}
printf("排序后的字符串为:%s\n", str);
return 0;
}
void swap(char *a, char *b) {
char temp = *a;
*a = *b;
*b = temp;
}
```
首先我们输入一个字符串,然后获取字符串的长度,再使用两层循环遍历字符串中的每一个字符,如果前一个字符大于后一个字符,则调用字符交换函数进行交换。最后输出排序后的字符串。
不用标准库函数strcmp,自己编写一个函数MyStrcmp 实现将两个字符串s和t进行比较, 然后将s和t中第一个不相同字符的ASCII码值之差作为函数值返回。 要求如下: (1)函数MyStrcmp函数原型为: int MyStrcmp(char s[],char t[]); (2)在主函数中 从键盘分别输入两个字符串s和t, (每个字符串的最大长度为80个字符) 然后调用MyStrcmp函数, 接下来,判定该函数的返回值: 如果大于0,输出"string s>string t.\n" 如果小于0,输出"string s<string t.\n" 如果等于0,输出"string s=string t.\n" (3)**用gets输入字符串。 **输入提示信息: 输入s之前提示:"Input s\n" 输入t之前提示:"Input t\n"
好的,我已经了解了您的问题。以下是实现您所需功能的代码:
```
#include <stdio.h>
int MyStrcmp(char s[], char t[]) {
int i = 0;
while (s[i] == t[i]) {
if (s[i] == '\0') {
return 0;
}
i++;
}
return s[i] - t[i];
}
int main() {
char s[80], t[80];
printf("Input s\n");
gets(s);
printf("Input t\n");
gets(t);
int result = MyStrcmp(s, t);
if (result > 0) {
printf("string s>string t.\n");
} else if (result < 0) {
printf("string s<string t.\n");
} else {
printf("string s=string t.\n");
}
return 0;
}
```
在这个程序中,我们定义了一个函数MyStrcmp,用于比较两个字符串s和t。这个函数的实现方式与标准库函数strcmp类似,采用了逐个比较字符的方法。
在主函数中,我们使用了gets函数来输入字符串s和t,这是因为gets可以读取一行字符串,而不是像scanf一样只能读取一个单词。注意,gets函数的使用必须非常小心,因为它可以导致缓冲区溢出。
最后,我们根据MyStrcmp函数的返回值输出相应的比较结果。
希望这个程序对您有所帮助!
阅读全文