C语言完善以下字符串排序函数: void sort(char *name,int n); 其中指针name用于存储待排序字符串,n表示数组name的长度。
时间: 2024-03-03 07:51:44 浏览: 146
可以使用标准库函数strcmp()进行字符串比较,再使用冒泡排序法进行排序,代码如下:
```c
void sort(char *name, int n) {
int i, j;
char temp[20];
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (strcmp(&name[j], &name[j + 1]) > 0) {
strcpy(temp, &name[j]);
strcpy(&name[j], &name[j + 1]);
strcpy(&name[j + 1], temp);
}
}
}
}
```
其中,temp数组用于存储临时字符串,strcpy()函数用于复制字符串。排序后,name数组中的字符串将按字典序从小到大排列。
相关问题
用c语言程序完成指针数组的应用:学院现有9系2部,建立一个char型指针数组指向这些单位名称,之后用冒泡排序法排序,并输出排序后的单位名称,补充程序所缺代码: #include <stdio.h> #include <string.h> int main() { void bubble_sort(char *name[ ],int n);//函数声明,下同 void print(char *name[ ],int n); char *dept[ ]={"管理系","国际经贸系","计算机系","电子系","数码媒体系","外语系","软件工程系","网络技术系","游戏系","基础部","思政部"}; (1) ;//调用冒泡排序函数 (2) ;//调用输出多个字符串函数 printf("\n"); return 0; } void bubble_sort(char *name[ ],int n)//冒泡排序函数 { //程序代码段1 } void print(char *name[ ],int n)//输出多个字符串函数 { //程序代码段2 }
好的,这是一个完整的 C 语言程序,实现了指针数组的应用和冒泡排序法,来对学院9系2部的单位名称进行排序:
```c
#include <stdio.h>
#include <string.h>
void bubble_sort(char *name[ ],int n);
void print(char *name[ ],int n);
int main() {
char *dept[ ]={"管理系","国际经贸系","计算机系","电子系","数码媒体系","外语系","软件工程系","网络技术系","游戏系","基础部","思政部"};
bubble_sort(dept, 11); // 调用冒泡排序函数
print(dept, 11); // 调用输出多个字符串函数
printf("\n");
return 0;
}
void bubble_sort(char *name[ ],int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (strcmp(name[j], name[j+1]) > 0) {
char *tmp = name[j];
name[j] = name[j+1];
name[j+1] = tmp;
}
}
}
}
void print(char *name[ ],int n) {
for (int i = 0; i < n; i++) {
printf("%s\n", name[i]);
}
}
```
解释一下这段代码:
首先,定义了一个长度为 11 的 `char` 型指针数组 `dept`,存储了学院9系2部的单位名称。
然后,定义了两个函数 `bubble_sort` 和 `print`,分别实现了冒泡排序和输出多个字符串的功能。
在 `main` 函数中,分别调用了 `bubble_sort` 和 `print` 函数,对 `dept` 数组中的字符串进行排序,并输出排序后的单位名称。
最后,输出一个空行,程序运行结束。
如果你有任何疑问,欢迎随时询问!
c语言代码;6-1 指针数组作函数参数,实现姓名排序。 分数 15 作者 陶利 单位 合肥师范学院 本题要求实现一个函数,实现学生英文名按照其在字典中的顺序进行排序,假设学生不超过20个。要求如下:用指针数组作函数参数,实现字符串的按字典顺序排列。 函数接口定义: void SortString ( char *ptr[], int n ); 其中 ptr[] 为字符指针数组, n 为学生数量。 裁判测试程序样例: #include <stdio.h> #include <string.h> #define MAX_LEN 10 #define N 20 void SortString ( char *ptr[], int n ); int main() { int i,n; char name[N][MAX_LEN]; //定义二维字符数组 char *pStr[N]; //定义字符指针数组 scanf("%d", &n); getchar(); //读走缓冲区中的回车符 for(i=0; i<n; i++) { pStr[i] =name[i]; gets(pStr[i]); } SortString(pStr, n); //英文姓名按字典顺序排列 for(i=0; i<n; i++) { puts(pStr[i]); //输出排序后的n个名字 } return 0; } /* 请在这里填写答案 */ 输入样例: 6 james john david jane mary elizabeth 输出样例: david elizabeth james jane john mary
```
#include <stdio.h>
#include <string.h>
#define MAX_LEN 10
#define N 20
void SortString(char *ptr[], int n);
int main()
{
int i, n;
char name[N][MAX_LEN]; //定义二维字符数组
char *pStr[N]; //定义字符指针数组
scanf("%d", &n);
getchar(); //读走缓冲区中的回车符
for (i = 0; i < n; i++)
{
pStr[i] = name[i];
gets(pStr[i]);
}
SortString(pStr, n); //英文姓名按字典顺序排列
for (i = 0; i < n; i++)
{
puts(pStr[i]); //输出排序后的n个名字
}
return 0;
}
// 比较两个字符串的大小
int CompareString(char *s1, char *s2)
{
return strcmp(s1, s2);
}
// 冒泡排序,将指针数组排序
void SortString(char *ptr[], int n)
{
int i, j;
char *temp;
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - i - 1; j++)
{
if (CompareString(ptr[j], ptr[j + 1]) > 0)
{
temp = ptr[j];
ptr[j] = ptr[j + 1];
ptr[j + 1] = temp;
}
}
}
}
```
阅读全文