哐当哐当响


私信TA

用户名:dotcpp0815389

访问量:6

签 名:

等  级
排  名 48388
经  验 303
参赛次数 0
文章发表 1
年  龄 21
在职情况 学生
学  校
专  业

  自我简介:


参考代码:

#include <stdio.h>
#include <math.h>
#include <string.h>

void sort(char **p,int n) //用于排序的函数,n代表有几个字符串,要比几次 
{
	char *temp; //中间变量temp
	int i,j;
	
	for(i=0;i<n;i++) //i和j对比,此时的重点在于排列p数组中的顺序 
	{
		for(j=i+1;j<n;j++)
		{
			if (strcmp(p[i], p[j]) > 0) 
			//比较两个字符串,若前者更大就交换两者的在p中的顺序
			//最后按p的顺序输出,对应了从小到大 
			{
				temp = p[i];
                p[i] = p[j];
                p[j] = temp; //交换两个字符串在p中的位置(指针层面) 
			} 
		}
	} 
} 

int main() {
	
	int i;
	char s[3][100]; //3代表3段字符串,100是字符串的最大长度 
	char *p_s[3]; //这是一个数组,数组里的元素都是指针 
	char **p; //二级指针p,表示它是一个指向指针的指针 
	
	for(i=0;i<3;i++)
	{
		gets(s[i]); //这里的s实际是个二维数组,比如说第一次i=0输入的内容是s[0][...] 
		
		p_s[i]=s[i]; //将s[0], s[1], s[2]找出来,即每句话的首地址,然后给指针数组p_s 
	}
	
	p=p_s; //将指针数组p_s的首地址给二级指针p
	sort(p,3);
	
	for (int i = 0; i < 3; i++) puts(p_s[i]);
	//不能用 puts(p),因为p是一个指针
	//不能用 puts(p_s),因为p_s是一个存放指针的数组
	//能用 puts(p_s[i]),因为每个 p_s[i]都指向一个字符串 
	return 0;
	 
}


 

0.0分

0 人评分

新上线《蓝桥杯辅导》课程,近五年的蓝桥杯省赛与国赛真题都有,从读题开始理解题意、梳理思路、实现代码再提交评测全过程,可有效提升获奖比例甚至进国赛!课程介绍、试听请猛击这里

  评论区

  • «
  • »