【C语言】用指针数组完成:将若干字符串安字母顺序输出

//用指针数组完成:将若干字符串安字母顺序输出
#include <stdio.h>
#include <string.h>
void print(char * name[],int n)   //char * name[],指针数组,每个数组元素是一个char*(即字符串)类型
{
	int i;
	for(i=0;i<n;i++)
	{
		printf("%s\n",name[i]);
	}
}
void sort(char *name[],int n)
{
	char * temp;
	int i,j,k;
	for(i=0;i<n-1;i++)
	{
		k=i;
		for(j=i+1;j<n;j++)
		{
			if(strcmp(name[k],name[j])>0)
				k=j;
			if(k!=i)
			{
				temp=name[i];
				name[i]=name[k];
				name[k]=temp;
			}
		}
	}
}
int main()
{
	char * name[]={"fallow me","BASIC","Great Wall","FOR","Computer"};
	int n=5;
	sort(name,n);    //对字符串排序
	print(name,n);   //输出字符串
	return 0;
}

时间: 2024-10-12 01:44:58

【C语言】用指针数组完成:将若干字符串安字母顺序输出的相关文章

C语言:冒泡排序法:将若干字符串按字母顺序(由小到大)排序输出

#include<stdio.h> #include<string.h> void sort(char *a[]); void print(char *a[]); int main() { char *a[] ={"ceo","define","basic","abc","empty"}; printf("原来的序列是:\n"); print(a); sort(a

编程题:指针数组实现,将多个字符串按字母顺序输出。

#include<stdio.h> void sort(char *str[],int n) { char *temp;int i,j,k; for(i=0;i<n-1;i++) {k=1; for(j=i+1;j<n;j++) if(strcmp(str[k],str[j])>0) k=j; if(k!=i) {temp=str[i];str[i]=str[k];str[k]=temp;} } } void main() { int i,n=4; char *string[

【C语言】指针数组

题目:编写UNIX程序sort的简化版本,该程序按字母顺序对由文本行组成的集合进行排序. 思路:我们引入指针数组处理这种问题.如果待排序的文本行首尾相连地存储在一个长字符数组中,那么每个文本行可通过指向它的第一个字符的指针来访问.这些指针本身可以存储在一个数组中.这样,将指向两个文本行的指针传递给函数strcmp就可实现对这两个文本行的比较.当交换次序颠倒的两个文本行时,实际交换的是指针数组中与这两个文本行相对应的指针,而不是这两个文本行本身,如下图所示. 这种实现方法消除了因移动文本行本身所带

字符串数组 输入3个字符串,要求按由小到大的字母顺序输出; 输入n个学生的姓名和学号到字符串数组中,在输入一个姓名,如果班级有该生则返回其信息,否则返回本班无此人

输入3个字符串,要求按由小到大的字母顺序输出 如 输入franch england china,输出结果是china england franch 三个数排序输出,比较三个数的大小怎么做? a=18 b= 9 c=30 a>b 交换 a=9 b=18 可不可以用选择法?可不可以用冒泡法?但是这里用不着 例题: string1 string2 string3 temp a=18 b= 9 c=30 b>c? 交换 b中放的是b 和 c 中小的数,c中放的是bc中大的数. 如果a<b,则输出

go语言学习--指针数组和数组指针

数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长.也就是说执行p+1时,p要跨过n个整型数据的长度. 如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组.p=a;        //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0]p++;       //该语句执行过后,也就是p=p+1;

C语言中指针数组和数组指针的区别

指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定.它是“储存指针的数组”的简称. 数组指针:首先它是一个指针,它指向一个数组.在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道.它是“指向数组的指针”的简称. 下面到底哪个是数组指针,哪个是指针数组呢: A) int *p1[10]; B) int (*p2)[10]; 这里需要明白一个符号之间的优先级问题.“[]”的优先级比“*”要高.p1 先与“[]”结合,构成一个数组的定义,数组名为p1,i

c语言:将数组中n个整数按相反顺序存放。

将数组中n个整数按相反顺序存放. 解:程序1: #include<stdio.h> int inv(int x[], int n) { int temp, i, j, m = (n - 1) / 2; for (i = 0; i <= m; i++) { j = n - 1 - i; temp = x[i]; x[i] = x[j]; x[j] = temp; } return; } int main() { int i, a[10] = { 1,2,3,4,5,6,7,8,9,10 }

用冒泡排序排列数组中的数字,并按一定顺序输出结果

#include<stdio.h>int main(){ int arr[10] = { 0 }; int i = 0; int j = 0; for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {  scanf("%d", &arr[i]); } for (i = sizeof(arr) / sizeof(arr[0]); i > 0; i--) {  for (j = 0; j < i - 1;

【C语言】要求任意输入10个数,然后按从小到大顺序输出

//要求任意输入10个数,然后按从小到大顺序输出 #include <stdio.h> int main() { int a[10]; int i,j; int temp; printf("请输入10个整数:"); for(i=0;i<10;i++) { scanf("%d",&a[i]); } for(i=0;i<9;i++) { for(j=0;j<9-i;j++) { if(a[j]>a[j+1]) { temp=a