📄 c08_12.c
字号:
#include <stdio.h>
#include <string.h>
#define N 5
void sort(char *name[], int); /* 声明排序函数原型 */
void print(char *name[], int); /* 声明显示书名的函数 */
int main()
{
static char name[][80] = {"The program of C",
"Thinking in C++",
"The program of Java",
"Oracle 9i",
"The program of Delphi"};
char *point[N];
int j;
/*字符指针数组初始化*/
for (j=0; j<N; j++)
point[j]=name[j];
/*输出数组原来的样子*/
printf("图书名在排序前的情况:\n");
print(point,N);
sort(point, N); /* 排序 */
printf("\n图书名在排序后的情况:\n");
print(point, N); /* 输出 */
return 0;
}
/*函数定义部分 选择排序(升序)*/
/* 找出最小的元素和第一个交换,再从剩下的元素中找出最小的和第二个交换,依次下去,直到全部排列完毕 */
void sort(char *name[], int n)
{
char *temp;
int i, j, k;
for(i=0; i<n-1; i++) /* n个字符串,外循环n-1次 */
{
k = i;
for(j=i+1; j<n; j++) /* 内循环 */
if (strcmp(name[k], name[j]) > 0)
k = j;
/* 比较name[k]与name[j]的大小,较小的图书名的序号保留在k中 */
if (k != i)
{
/*交换name[i]与name[k]的指向 */
temp = name[i];
name[i] = name[k];
name[k] = temp;
}
}
}
/*输出对应的字符串数组*/
void print(char *name[], int n)
{
int i;
for (i=0; i<n; i++)
printf("%s\n", name[i]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -