在主函数中输入10个字符串。用另一函数对它们排序。然后在主函数输出这10个已排好序的字符串(从大到小)。要求用指针数组实现。 函数接口定义: void sort(char *p[N]); 裁判测试程序样例: #include<stdio.h> #include "string.h" #define N 10 void sort(char *p[N]); int main() {char ch[N][20]; int i,j; char *t[N]; //定义指针数组 for (i=0; i<N; i++) //输入10个串 { scanf("%s",ch[i]); t[i]=ch[i]; //建立联系 } sort(t); //利用指针数组排序 for(i=0; i<N; i++) //输出 printf("%s\n",t[i]); return 0; } /* 你写的函数将被嵌在这里 */ 输入样例: qwe asd zxc hg up cctv are not goto head 输出样例: are asd cctv goto head hg not qwe up zxc c语言写程序
时间: 2024-01-16 20:04:51 浏览: 37
以下是实现sort函数的代码:
```c
void sort(char *p[N]) {
int i, j;
char *temp;
for (i = 0; i < N - 1; i++) {
for (j = i + 1; j < N; j++) {
if (strcmp(p[i], p[j]) < 0) {
temp = p[i];
p[i] = p[j];
p[j] = temp;
}
}
}
}
```
在sort函数中,我们使用了冒泡排序的方法,依次比较相邻的两个字符串,如果前面的字符串比后面的字符串小,则交换它们的位置。
在主函数中,我们定义了一个指针数组t,将每个字符串的地址赋值给t中的相应元素,然后调用sort函数进行排序,最后输出排序后的字符串。需要注意的是,因为sort函数中修改的是指针数组中元素的顺序,因此在输出时直接输出指针数组中的元素即可。
相关问题
在主函数中输入10个字符串,用另一个函数对10个字符串排序,然后在主函数输出这10个已排好序的字符串
题意:在主函数中输入一个长度为10的字符串,用另一个函数将其排序,然后在主函数中输出已排好序的字符串。
解析:题目要求用一个函数对字符串进行排序,典型的排序算法有快速排序、归并排序、堆排序等,这里我们选用最简单的冒泡排序。
代码实现如下:
```python
def bubble_sort(s):
n = len(s)
for i in range(n):
for j in range(n-i-1):
if s[j] > s[j+1]:
s[j], s[j+1] = s[j+1], s[j]
s = input("请输入一个长度为10的字符串:")
s = list(s)
bubble_sort(s)
print("排序后的字符串为:", "".join(s))
```
运行结果:
```
请输入一个长度为10的字符串:sdfhajklzx
排序后的字符串为: adfhjklsxz
```
在主函数中输入10个字符串。用另一函数对它们排序。然后在主函数输出这10个已排好序的字符串。要求用行指针实现。
好的,这是一个需要用到指针和字符串的排序问题,我可以帮你解答。
下面是一个示例代码,你可以参考一下:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
#define STR_NUM 10
void sortStrings(char* strings[], int num) {
// 冒泡排序
for (int i = 0; i < num - 1; i++) {
for (int j = 0; j < num - i - 1; j++) {
if (strcmp(strings[j], strings[j + 1]) > 0) {
char temp[MAX_LEN];
strcpy(temp, strings[j]);
strcpy(strings[j], strings[j + 1]);
strcpy(strings[j + 1], temp);
}
}
}
}
int main() {
char strings[STR_NUM][MAX_LEN]; // 字符串数组
char* strPtr[STR_NUM]; // 字符串指针数组
// 输入字符串
for (int i = 0; i < STR_NUM; i++) {
printf("请输入第 %d 个字符串:", i + 1);
fgets(strings[i], MAX_LEN, stdin);
strings[i][strlen(strings[i]) - 1] = '\0'; // 去掉字符串末尾的换行符
strPtr[i] = strings[i]; // 将字符串指针指向对应的字符串数组元素
}
// 排序
sortStrings(strPtr, STR_NUM);
// 输出排序后的字符串
printf("排序后的字符串为:\n");
for (int i = 0; i < STR_NUM; i++) {
printf("%s\n", strPtr[i]);
}
return 0;
}
```
这个程序中,我们首先定义了一个字符串数组 `strings` 和一个字符串指针数组 `strPtr`。我们通过 `fgets` 函数从标准输入中逐行读入字符串,并将其存储在 `strings` 数组中。注意,在存储字符串前,我们需要去掉字符串末尾的换行符,并将 `strPtr` 中的指针指向对应的 `strings` 数组元素。
接着,我们调用 `sortStrings` 函数对 `strPtr` 数组中的字符串进行排序。这里使用的是冒泡排序算法。
最后,在主函数中输出排序后的字符串。
希望这个示例代码可以帮助到你。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)