用c语言对10个字符串从小到大排序

作者&投稿:鞠榕 (若有异议请与网页底部的电邮联系)
C语言中如何将10个字符串进行排序~

#include
#include
int main()
{
int j,k,i,t,n;
char s[10][10],b[10][10];
for(i=0;i<10;i++)
{
scanf("%s",s[i]);
}
n=strlen(s[1]);
k=0;
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
if(strcmp(s[j],s[j+1])>0)
{
for(k=0;k<n;k++)
b[j][k]=s[j][k];
for(k=0;k<n;k++)
s[j][k]=s[j+1][k];
for(k=0;k<n;k++)
s[j+1][k]=b[j][k];
}
}
for(i=0;i<10;i++)
{
printf("%s ",s[i]);
}
return 0;
}
运行效果:

扩展资料:scanf函数用法:
scanf("输入控制符",输入参数);
功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。
用scanf()函数以%s格式读入的数据不能含有空白符时,所有空白符都被当做数据结束的标志。所以题中函数输出的值只有空格前面的部分。
如果想要输出包括空格在内的所有数据,可以使用gets()函数读入数据。gets()函数的功能是读取字符串,并存放在指定的字符数组中,遇到换行符或文件结束标志时结束读入。换行符不作为读取串的内容,读取的换行符被转换为字符串结束标志'\0'。

#include "stdio.h"
#include "string.h"
int main()
{
char str[11];
char t;
int i,j,min;
for(i=0;i<10;i++)
{
scanf("%c",&str[i]);
}
for(i=0;i<9;i++)
{
min=i;
for(j=i+1;j<10;j++)
if(str[min]>str[j])
min=j;
t=str[i];
str[i]=str[min];
str[min]=t;
}
for(i=0;i<10;i++)
printf("%c",str[i]);
printf("
");
return 0;
}

字符大小是指ASCII码的大小
字符串比较从首字母开始,谁大整个字符就大,相同的话比较后面的对应字符大小,依此类推……

n个字符串要比较的话,只需要把n个字符串排序就可以了。
两个字符串两两比较可以使用库函数的strcmp(char *a,char *b)函数比较。
n个的话使用上述方法排序后就可以比较出n个字符串的大小了。
排序方法如下
void sort(char *strings[],int n)
{
char *temp;
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
if(strcmp(strings[i],strings[j])>0)
{
temp=strings[i];
strings[i]=strings[j];
strings[j]=temp;
}
}
void main()
{
char *strings[]={"aa","bb","abc","infant","lucky"};
sort(strings,5);
for(int i=0;i<5;i++)
printf("%s\n",strings[i]);
}
经过排序后,字符串数组就可以比较出大小了。

如果是单个字符排序,其大小是字符的AscII码。
对于字符串的排序,是比较每位的字符。比如AA,BB,CD,AAAC,EEFG
AA和BB 由于第一位A<B所以AA<BB,
CD和AAAC 由于C<A,CD<AAAC

比较原则是:从左边取字符比较,如果相同,取下一位。

字符串排序主要是比较两个字符串第n个字符串的ASCII的大小,当比较结果得出的时候两个字符串都没结束跟长度没关系,否则就是长得大。

每个字母有对应的ascii,根据此来排顺.排序算法要自己写.
可以用数组.也可以用字符指针来处理.


C语言编程,输入10个字符char a[10],输出这十个字符的全排列
include <string.h> include <stdio.h> int main(){ char a[10][20];for(int i=0;i<10;i++)scanf("%s",a[i]);for(int i=0;i<9;i++)for(int j=0;j<9-i;j++)if(strcmp(a[j],a[j+1])>0){ char t[10];strcpy(t,a[j]);strcpy(a[j],a[j+1]);strcpy(a[j+...

c语言 写一个函数,用气泡法对输入的10个字符按从大到小顺序排列!!!急...
for(int i=0; i<n-1; i++){ for(int j=0; j<n-1-i; j++){ if(arr[j] < arr[j+1]){ temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;} } } } void main(){ char arr[N];int i;printf("请输入十个字符:");for(i=0; i<N; i++){ scanf("%c"...

C语言编程:输入10个字符,将其中小写字母转换为大写,大写转换为小写_百 ...
include "stdio.h"int main(){ char str[100]={0};int i;printf("请输入一个字符串(10个字符):");gets(str);for(i=0;str[i]!='\\0';i++){ if(str[i]>='a' && str[i]<='z')str[i]+='A'-'a';else if(str[i]>='A' && str[i]<='Z')str[i]+='a'-'A';}...

c语言编程 将10个字符串长度小于20字符串连接起来,组成一个新的字符P...
include <stdio.h> include <string.h> void main(){ char p[200]={NULL};char str[20]={NULL};int i;for(i=0;i<10;i++){ printf("请输入第%d个字符串: ",i+1);scanf("%s",str);fflush(stdin);strcat(p,str);} printf("\\n组合后的字符串为: %s\\n",p);} ...

是c语言数组的问题,输入10个字符串,输出最大的字符串。谢谢
include <stdio.h> void main(){ char c,str[10][100];int s,max,k;int i,n;max=0;for(i=0;i<10;i++){ s=0;n=0;while((c=getchar())!='\\n'){ str[i][n++]=c;s+=(int)c;} str[i][n]='\\0';if(max

求C语言大神。输入10个字符,判断有多少个英文字符,多少个数字字符,多 ...
参考代码:include<stdio.h>int main(){ char c; int letter=0,number=0,other=0,i; for(i=0;i<10;i++) { c=getchar(); if(c>='a'&&c<='z'||c>='A'&&c<='Z') letter++; else if(c>='0'&&c<='9') number++; else other++; } ...

C语言:从键盘输入长度为10的字符串,除第一和最后一个字符外按降序排序...
代码文本:include "stdio.h"define N 10 void myf(char *p){ char i,j,k,n;for(n=0;p[n];n++);for(n--,i=1;i<n-1;i++){ for(j=(k=i)+1;j<n;j++)if(p[k]

c语言字符数组使用方法
c语言字符数组使用方法 导语:字符数组是一个存储字符的数组,而字符串是一个用双括号括起来的以'\/0'结束的字符序列,下面就由我为大家介绍一下c语言字符数组使用方法,希望对大家有所帮助!1、字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。char str[10]...

是c语言的问题,输入10个字符串,输出最大的字符串。谢谢
望采纳!!!include<stdio.h> include<string.h> int main(){ char str[10][100];char max[100];int i,j,len;for(i=0;i<10;i++){ scanf("%s",str[i]);} strcpy(max,str[0]);for(i=1;i<10;i++){ if(strcmp(max,str[i])<0){ strcpy(max,str[i]);} } printf("%s...

C语言大神解答,由键盘输入一行10个字符,将其中每个数字字符所代表的数...
include "stdafx.h"include "ctype.h"include "string.h"int main(int argc, char* argv[]){ char s[100];gets(s);int sum = 0, i = 0, len = strlen(s);for (i = 0; i < 10; i++) { if (isdigit(s[i])) { sum += s[i] - '0';} } printf("%d\\n", sum);g...

广宁县15733602415: 用C语言写一个函数,用起泡法对输入的10个字符按小到大顺序排列 -
诗禄痔疮: #include<stdio.h> int main() { int i,j,t,a[10]; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) for(j=0;j<9-i;j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } printf("%d",a[0]); for(i=1;i<10;i++) printf(" %d",a[i]); printf("\n"); return 0; }

广宁县15733602415: C语言:用“选择法”对输入的10个字符按由小到大的顺序排序 -
诗禄痔疮: #include<conio.h> #include<stdio.h> #include<stdlib.h> #define N 10/* 设定要输入的字符串个数,可更改 */ int cmp(char *p1,char *p2) /* 字符串比较函数 */ {int i=0; while (*(p1+i)==*(p2+i)) if (*(p1+i++)=='\0') return 0; /* 这里是先判断*(p1+i)=='\0...

广宁县15733602415: 十个字符排序,按从小到大的顺序,用函数完成 c语言 -
诗禄痔疮: #include char f(char a,char b) {char c; if(a>b) {c=a; a=b; b=c;} return a,b; } void main() {char a[10]; int i,j; for(i=0;iscanf("%c",&a[i]); for(j=0;jfor(i=0;if(a[i],a[i+1]); for(i=0;iprintf("%c ",a[i]); printf("\n");

广宁县15733602415: C语言编程题: 输入10个字符串,将其从大到小排序后输出. -
诗禄痔疮: #include<stdio.h> void swap1(int *p,int n){ int temp; for(int i=0;i<n-1;i++) for(int j=i+1;j<n;j++) if(p[i]>p[j]){ temp=p[i]; p[i]=p[j]; p[j]=temp; } } void swap2(int *p,int n){ int temp; for(int i=0;i<n-1;i++) for(int j=i+1;j<n;j++) if(p[i]<p[j]){ temp=p[i]; p[i]=p[j]; p[j]=...

广宁县15733602415: C语言问题:利用插入排序法将十个字符从小到大排序
诗禄痔疮: #include <stdio.h> void insert(char s[]) { int i,j,t; for (i=1;i<=9;i++) { t=s[i];j=i-1; while ((j>=0)&&(t<s[j])) { s[j+1]=s[j]; j--; } s[j+1]=t; } } main() { char a[11];int i; for (i=0;i<10;i++) a[i]=getchar(); a[i]='\0'; insert(a); puts(a); }

广宁县15733602415: C语言问题:写一个函数,用"起泡法"对输入的10个字符按由小到大顺序排列 -
诗禄痔疮: #include<stdio.h> main() { int i,j;char a[]={"gihdlfazrm"}; char t; printf("排序前的序列:"); for(i=0;i<10;i++) printf("%3c",a[i]); printf("\n");for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;} printf("排序后的序列:");for(i=0;i<10;i++)printf("%3c",a[i]);printf("\n");}

广宁县15733602415: C语言程序:依次输入十个数、要求按照从小到大的顺序输出 -
诗禄痔疮: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30# include <stdio.h> #define N 10//元素个数 voidsort(inta[], intn)//排序函数 {inti=0,j=0,temp; for(i=0; i<n; i++){for(j=i+1; j<n; j++){if(a[j]<a[i]){temp = a[i];a[i] = ...

广宁县15733602415: C语 从键盘输入10个数,要求按从小到大排列出来 -
诗禄痔疮: #include "stdio.h" //冒泡法 由小到大排序main() { int i,j,a[10],temp; for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); for(j=0;j<9;j++) for(i=0;i<9-j;i++) if(a[i]>a[i+1]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); }

广宁县15733602415: 用C语言写一个函数用“起泡”法对输入的10个字符安有小到大顺序排列 -
诗禄痔疮: 冒泡法 #includeint main() { int a[10] = {10,23,2,24,20,9,22,8,53,100}; int i,j,t; for(i = 9;i >= 0;i--) for(j = 0;j< i;j++) if(a[j] > a[j+1]){ t = a[j]; a[j] = a[j+1]; a[j+1] = t; } for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); return 0; }

广宁县15733602415: C语言如何用选择法排序任意输入十个数(从大到小、从小到大)? -
诗禄痔疮: #include <stdio.h> main(void) {int i,j,a[10],p=0,t=0,temp; printf("请输入原数组:\n");for(j=0;j<10;j++)scanf("%d",&a[j]);temp=a[0]; for(j=0;j<9;j++){t=j;temp=a[j];for(i=j+1;i<10;i++)if(temp>a[i]) //这是由小到大排序 如果是大到小则改...

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