输入有限个字符串,按字符串长度排序,如果字符串长度一样,再把字符串按字母排序,C语言编程

作者&投稿:主父潘 (若有异议请与网页底部的电邮联系)
输入有限个字符串,先按字符串长度排序,若长度一样,再按字母顺序排序,并将其输出~

设允许输入10个字符串,长度限制为50个字符以内,用char型二维数组记载。另声明一个10个元素的char *型指针数组,使每个元素对应指向前述每个字符串,排序时只交换指针而不拷贝字符串。代码如下:
#include "stdio.h"#include "string.h"int main(int argc,char *argv[]){char s[10][51],*ps[10]={s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7],s[8],s[9]},*p;int i,j,k,t;printf("Input 10 strings...
");for(i=0;i0 || (t==0 && strcmp(ps[k],ps[j])>0))k=j;if(k-i)p=ps[k],ps[k]=ps[i],ps[i]=p;//只交换指针printf("%s
",ps[i]);//输出}return 0;}
运行样例如下:

#include #include void sort(char* s, int n){int i = 0, j = 0, index = 0;char c;for (; i < n; i++){c = s[i];index = i;for (j = i + 1; j < n; j++){if (s[j] < c){index = j;c = s[j];}}if (index != i){c = s[index];s[index] = s[i];s[i] = c;}}}int main(){char s[20];gets(s);sort(s, strlen(s));puts(s);return 0;}

设允许输入10个字符串,长度限制为50个字符以内,用char型二维数组记载。另声明一个10个元素的char *型指针数组,使每个元素对应指向前述每个字符串,排序时只交换指针而不拷贝字符串。代码如下:

#include "stdio.h"
#include "string.h"
int main(int argc,char *argv[]){
char s[10][51],*ps[10]={s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7],s[8],s[9]},*p;
int i,j,k,t;
printf("Input 10 strings...
");
for(i=0;i<10;scanf("%50s",s[i++]));//输入10个字符串
for(i=0;i<10;i++){//选择排序
for(k=i,j=k+1;j<10;j++)
        //下一句按长度或等长时大小判断
if((t=strlen(ps[k])-strlen(ps[j]))>0 || (t==0 && strcmp(ps[k],ps[j])>0))
k=j;
if(k-i)
p=ps[k],ps[k]=ps[i],ps[i]=p;//只交换指针
printf("%s
",ps[i]);//输出
}
return 0;
}

运行样例如下:



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

#define SIZE 3    /*字符串数量*/
#define MAX  30   /*字符串长度*/

char input[SIZE][MAX]={0};

void sort(char str[][MAX],int size)
{
/* 对size个字符串按长度用冒泡法进行升序排序
 * 长度相同则按字母升序排序
 * MAX-字符串最大长度
 */

int counter1,counter2;
char temp[MAX];
    
for(counter1=0;counter1<size-1;++counter1)
for(counter2=0;counter2<size-1-counter1;++counter2)
{
        /*如果字符串str[counter2]长度大于它后面的字符串*/
if(strlen((char *)(str[counter2]))>strlen((char *)
  (str[counter2+1])))
{
/*将字符串str[counter2]与它后面的字符串换个位置*/
strcpy(temp,(char *)(str[counter2+1]));
strcpy((char *)(str[counter2+1]),
       (char *)(str[counter2]));
strcpy((char *)(str[counter2]),temp);
}

            /* 如果字符串str[counter2]长度等于它后面的字符串     且 
             *     字符串str[counter2]按字母排序大于它后面的字符 
     */
if(strlen((char *)(str[counter2]))==strlen((char *)
  (str[counter2+1])) && 
   strcmp((char *)(str[counter2]),
   (char *)(str[counter2+1]))>0)
{
/*将字符串str[counter2]与它后面的字符串换个位置*/
strcpy(temp,(char *)(str[counter2+1]));
strcpy((char *)(str[counter2+1]),
       (char *)(str[counter2]));
strcpy((char *)(str[counter2]),temp);
}
}


}

int main( )
{
int counter =0;

/*输入字符串*/
while(counter<SIZE)
{
printf("请输入第%d个字符串(共%d个):",counter+1,SIZE);
scanf("%s",input+counter);
++counter;
}

/*排序*/
sort(input,SIZE);

/*输出排序后的字符串*/
printf("
排序后的字符串
");
counter=0;
while(counter<SIZE)
{
printf("第%d个字符串:%s
",counter+1,input+counter);
    ++counter;
}

return 0 ;
}

/*供你参考*/



2010年江苏省专转本考试答案(理科)
59.若想在Excel 2003的某个单元格中输入字符串“10\/20”(不包含双引号),通过输入__AB___都可以实现。A. ’10\/20B. =“10\/20”C. “10\/20”D. =10\/2060.PowerPoint 2003提供了___ACD___等母版类型。A. 幻灯片B. 大纲C. 讲义 D. 备注 三、填空题(本大题共20小题,每小题1分,共20分)61....

python有多少种语法(2023年最新整理)
,而浮点数运算则可能会有四舍五入的误差。 字符串 字符串是以单引号'或双引号"括起来的任意文本,比如'abc',"xyz"等等。请注意,''或""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符。如果'本身也是一个字符,那就可以用""括起来,比如"I'mOK"包含的字符是I,',m,...

什么叫字符串的格式
格式化字符串就是按一定格式输出的字符串 举个例子来说,你想输出时间 2006-07-25 21:20:30 这就是一个格式化字符串,它的格式为 yyyy-mm-dd hh:mm:ss 下面再给你一个操作的例子,比如说你要输出时间 formatdatetime('yyyy-mm-dd hh:mm:ss',now);就能够按我上面的格式输出时间了 又比如说...

如何由一个有限长度(30字节以内)字符串生成唯一的16位整数?
再来说说几率问题,生成32位确实碰撞几率比较低,因为我们一般用到的字符串数量远远小于 2^32 ,但因为几率低就不处理碰撞情况也是绝对不行的 相比来说 16 位整数就小得多了,碰撞几率大大增加,就算只是几千个字符串用一般 hash 算法也几乎一定会出现碰撞的情况。可以用数据来说明:假设产生32位整数,...

检索算符一般有哪几种?说明它们各自的使用方法?
放在检索词中检索者认为合适的地方截断,用截断的词的一个局部进行检索,并认为凡满足这个词局部中的所有字符(串)的文献,都为命中文献。这样,检索者不必输入完整的检索词。截词方式有多种,按截断的字符数量分,有有限截断和无限截断;按截断的位置分,有后截断、前截断、中间截断。三、限制检索算符...

什么是“字符串”
是一个变量的类型,比如:'aadfSDFW123'、'12345'都是字符串 象上面打引号的不是,数值型,定义的时候认定为字符 好象excl中单元格的类型含义相似

字符串是什么意思
1、简称“串”。有限字符的序列。数据元素为字符的线性表,是一种数据的逻辑结构。在计算机中可有不同的存储结构。在串上可进行求子串、插入字符、删除字符、置换字符等运算。2、字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似字符数组,所以它每一位的单个...

什么是缓存文件
而缓冲器相当于一个寄存器,暂时保存数据。缓冲区是内存中存放数据的地方。在程序试图将数据放到机器内存中的某一个位置的时候,因为没有足够的空间就会发生缓冲区溢出。而人为的溢出则是有一定企图的,攻击者写一个超过缓冲区长度的字符串,然后植入到缓冲区,而再向一个有限空间的缓冲区中植入超长的字符...

从键盘输入一个字符串,删除其中一个字符,输出剩下的字符
修改后的程序:include<stdio.h>main(){ int n,i,j=0;char str[20],a;printf("请输入字符串:");gets(str);printf("请输入想要删除的字符:");scanf("%c",&a);for(i=0;str[i];i++) if(str[i]!=a) str[j++]=str[i];str[j]='\\0';printf("更改后的字符串为:%s\\n...

字符串是什么意思(C语言字符串是什么意思)
你真的知道Python的字符串是什么吗?在《详解Python拼接字符串的七种方式》这篇推文里,我提到过,字符串是程序员离不开的事情。后来,我看到了一个英文版本的说法:Therearefewguaranteesinlife:death,taxes,andprogrammersneedingtodealwithstrings.它竟然把程序员处理字符串跟死亡大事并列了,可见这是多么命中注定...回头...

洛阳市13218476659: 输入有限个字符串,按字符串长度排序,如果字符串长度一样,再把字符串按字母排序,C语言编程 -
项宋吡拉: 设允许输入10个字符串,长度限制为50个字符以内,用char型二维数组记载.另声明一个10个元素的char *型指针数组,使每个元素对应指向前述每个字符串,排序时只交换指针而不拷贝字符串.代码如下: #include "stdio.h" #include "...

洛阳市13218476659: 任意输入5个字符串存放到二维数组中,按字符串长度从短到长顺序输出.(用C程序) -
项宋吡拉: #include<stdio.h> #include <string.h> int main() {char str[5][20],temp[20];int i,j,k,len[5],t;printf("输入五个字符串:");for(i=0; i<5; i++){scanf("%s",str[i]);len[i] = strlen(str[i]);}for(i=0; i<4; i++){k = i;for(j=i+1; j<5; j++){if(len[k] > len[j...

洛阳市13218476659: 如何把一个字符串数组按照字符串长度排序 -
项宋吡拉: 可以使用for循环语句,然后一个个拿出来计算长度,保存下标和对应的长度,进行排序,输出就可以了.

洛阳市13218476659: C 语言:输入几个字符串, 按字符串中第一个单词长度大小升序输出字符串 -
项宋吡拉: 大体代码如下:#include#include#define MAXNUM 20 //字符串个数#define MAX 100 //字符串最大长度 struct node { char str[MAX]; int first_len; }; struct node word[MAXNUM]; int cmp(const void *a,const void *b) { struct node * p = (struct node *)a; ...

洛阳市13218476659: 输入n个字符串(长度小于20)存入二维数组c中,编写程序对其进行排序(由小到大)并按次序输出. -
项宋吡拉: 假定字符串个数不超过20个,每个字符串长度小于20,开数组 char s[21][20]; 最后一个元素 用于做字符串交换时的工作单元.字符串比较 用 strcmp(), 复制用 strcpy(), 输入用 gets(), 清除输入缓冲器中的剩余字符用 fflush(stdin); ...

洛阳市13218476659: C语言 输入一个长度不超过10个字符的字符串,将其排正以及反序输出 -
项宋吡拉: 这个问题很简单,每个字符都有对应的ASCII值,你只要对比排序一下再输出显示就可以啦.如:这个是我的排序函数,你只要把排序的缓冲区即数组赋给uint AD_Buff[],就 排序了,,输出用printf()输出就可以.***函数名称:qSort()***//***功...

洛阳市13218476659: c语言输入多个字符串将其按长度大小排列,首字母相同时按字母表顺序排列 -
项宋吡拉: 不知道你意思表达清楚了没,“首字母相同时按字母表顺序排列”,这句话是不是表达错了,是不是应该是若字符串长度相等时按首字母大小排序,,,,我这按升序排的,输入多少个字符串有define决定,可自己定义,

洛阳市13218476659: 如何把一个字符串数组按照字符串长度排序 - 技术
项宋吡拉: $s =??array();foreach($s as $value){$key = strlen($value);$b[$key] = $value;}$b就是你需要的排序后的数组

洛阳市13218476659: java编写一个程序,10个字符串,按每个字符串第一个单词长度递增排序 -
项宋吡拉: 例子:import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class TempTest { public static void main(String[] args) throws Exception { List<String> lst = new ArrayList<String>(); lst.add("abcd ...

洛阳市13218476659: 用c语言编写程序:从10个字符串中,查找最长的字符串.每个字符串不超 -
项宋吡拉: 先输入10个字符串,然后依次计算字符串长度,找到最长的一个,并把这个字符串输出即可.代码如下:#include <stdio.h>#include <string.h> int main() { char s[10][100]; int i; int max_i, max_len = 0; for(i = 0; i < 10; i ++) scanf("%s",a[i]);//输入...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网