C语言字符升序排列~

作者&投稿:苑古 (若有异议请与网页底部的电邮联系)
大神写一个c语言程序将字符串升序排列或者修改我的程序。~

#include
#include
#include
void sort(char **p,int n)
{
for (int i = 0; i < n; i++)
{
for (int j = 1; j < n-i; j++)
{
if ((strcmp(p[j], p[j - 1])) < 0)
{
char *temp = p[j];
p[j] = p[j - 1];
p[j - 1] = temp;
}
}
}
}
int main(void)
{
char *p[5] = { "mbc","dab","oac","bad","adsadwewew"};
for (int i = 0; i < 5; i++)
{
printf("%s ", p[i]);
}
printf("
排序后:
");
sort(p,5);
for (int i = 0; i < 5; i++)
{
printf("%s ", p[i]);
}
putchar('
');
system("pause");
return 0;
}
/*
mbc dab oac bad adsadwewew
排序后:
adsadwewew bad dab mbc oac
*/
刚出炉的,谢谢老板!

参与排序的字符串有n个(0~n-1),j要遍历,就是从j==0开始到j=n-1,所以用j<n表示。
参与排序的字符串是ROW个,COL是字符串最大长度。函数fun的形参n是字符串个数而不是字符串最大长度。

输入10个字符串,并按字母从小到大排序
#include "stdio.h"
#include "string.h"
void sort(char array[][20],int n);
main(void)
{
char str[10][20];
int i,j,k,n;
printf("input n (n<=10):");
scanf("%d",&n);
printf("input %d string:",n);
for(i=0;i<n;i++)
gets(str[i]); //输入N个字符串
sort(str,n); //对输入的字符串排序
printf("sort string:\n");
for(i=0;i<n;i++)
puts(str[i]);
return 0;
}
void sort(char array[][20],int n) //定义排序函数
{
char temp[20];
int i,j,k;
for(i=1;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp(array[k],array[j])>0)
k=j;
if(k!=i)
{
strcpy(temp,array[i]); //字符串交换顺序
strcpy(array[i],array[k]);
strcpy(array[k],temp);
}
}
}
如上源码所示,其实也不难发现,就一个排序函数便可以解决;解决思想,还是交换法;在这里明白字符串数组str[0],便是第一个主的字符串,跟这个2维str[0][20]是一个意思

void main()

{

char c[10];

int i;

int j;

int temp;

int length;

gets(c);

length=strlen(c);//你可能输入不到10个字符,所以确定总共字符数

for(i=0;i<length-1;i++)//for(i = 0;i<9;i++)

for(j=0;j<length-1-i;j++)//这儿问题最大 for(j = 0;j<9;j++)

if(c[j]>c[j+1])

{

temp = c[j];

c[j] = c[j+1];

c[j+1] = temp;

}

puts(c);

}

 


冒泡排序
void fun(char *s,int num)
{
int i,j;
char t;
for(i=0;i< num;i++) //从头开始
{
for(j=i+1;j< num;j++)
if(*(s+j)<*(s+i)) //小者上浮
{
t=*(s+i);
*(s+i)=*(s+j);
*(s+j)=t;
}
}
}
插入排序
void fun2(char *s,int n)
{
int i,j;
char temp;
for (i = 1;i < n;++ i)
{
temp = s[i];
for (j = i-1;j >= 0 && temp <s[j];-- j)
{
s[j+1] = s[j];
}
s[j+1] = temp;
}
}

for(i=1;i<6;i++)
{ch=*(s+i);
你把第一个字符抛弃了


...输入任意长度的字符串,将该字符串中的字符按ASCII码值升序排列...
算法写错了 include<stdio.h>#include<string.h>void main(){char str[100];int i,j;printf("please input a string: ");gets(str);for(i=0;i<strlen(str)-1;i++){for(j=i+1;j<strlen(str);j++)if(str[i]>str[j]) {char temp; \/\/交换这里错了temp=str[j];str[j]=str[...

...长度不少于20),对该字符串的字母或数字按升序排序后输出。
include <stdio.h>#include <string.h>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[...

C语言:输入10个姓并按字典序的升序排序
(j=0;j<10-i;j++){ if (strcmp(ren[j].name,ren[j+1].name)>=0){ strcpy(str,ren[j].name);strcpy(ren[j].name,ren[j+1].name);strcpy(ren[j+1].name,str);} } printf ("按字典序的升序排序为:\\n");for (i=0;i<10;i++)printf ("%s\\n",ren[i].name);} ...

...分别找出其中数字,将重复的去掉后,按升序排列后输出。
include<stdio.h> include<string.h> include<stdlib.h> define maxn 811111 char s[maxn];char *p;int cmp(const void* a, const void* b) { \/\/C 语言比较函数,用于qsort return *(int *)a - *(int *)b;} void func(char *s, int length) { \/\/处理你给出的字符串 ,...

c语言,用选择法对10个数排序,按正负数分开输出?
下面是代码:include <stdio.h> void px(int nums[],int len,int t);\/\/排序 void showNums(int nums[],int len,int t);\/\/输出 int main(){ int nums[10]={8,7,-1,2,-5,4,9,-3,-6,1};printf("原数组:8,7,-1,2,-5,4,9,-3,-6,1\\n");printf("升序排列后:\\n")...

c语言程序编写 有一个已排好序的数组,由键盘又输入一个数,要求按原来排...
int main(){ int a[40]={1,0},i,j,n,x;printf("请输入数组元素的个数:");scanf("%d",&n);printf("请输入排好序的一串数字:\\n");for(i=0;i<n;i++)scanf("%d",&a);printf("请输入要插入的数:");scanf("%d",&x);if(a[0]<a[1])\/\/该数组按升序排列 { for(i=0...

C语言:编程输入n个整数,用选择法排序将它们按升序重新排列后输出。
代码如下:\/\/#include "stdafx.h"\/\/vc++6.0加上这一行.#include "stdio.h"#include "stdlib.h"int main(void){ int n,x[20],i,j,k; while(1){ printf("Input n(int n<=20)...\\n"); if(scanf("%d",&n),n==0) break; for(i=0;i<n;scanf("%d",x...

什么是升序降序什么意思?
升序和降序是排序的两种基本方式。升序,即从小到大进行排序,是指按照从小到大的顺序排列。在计算机中,通常用数字来表示排序的顺序,升序排列就是指按照数字从小到大逐渐递增的顺序进行排列。比如在数列1、3、5、7中,按照升序排列依然是保持原样。此外,如果是字母或者汉字的排序,也是依据字符的编码或者...

从键盘输入10个字符串,把字符串按字典升序排列并输出。每行输出一个字 ...
从键盘输入10个字符串,把字符串按字典升序排列并输出。每行输出一个字符串,用C语言怎么写? 从键盘输入10个字符串,把字符串按字典升序排列并输出。每行输出一个字符串,用C语言怎么写?麻烦了!!!... 从键盘输入10个字符串,把字符串按字典升序排列并输出。每行输出一个字符串,用C语言怎么写?麻烦了!!! 展开...

c语言 单词先按长度排序再按字母表排序
不知道你意思表达清楚了没,“首字母相同时按 字母表 顺序排列”,这句话是不是表达错了,是不是应该是若字符串长度相等时按首字母大小排序,,,我这按升序排的,输入多少个字符串有define决定,可自己定义,

海勃湾区15297205078: C语言:请输入一个字符串(字母或数字,长度不少于20),对该字符串的字母或数字按升序排序后输出. -
轩绍凯兰: #include <stdio.h>#include <string.h> 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() { ...

海勃湾区15297205078: c语言:5个字符串的排序 -
轩绍凯兰: #include <string.h> #include <stdio.h> void main() {char str[5][40],temp[40];int i,j;printf("输入5串字符:\n");for(i=0;i<5;i++)gets(str[i]); for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(strcmp(str[i],str[j])>0){strcpy(temp,str[i]);strcpy(str[i],str[j]);strcpy(...

海勃湾区15297205078: C语言用冒泡法输入一个字符升序排列 急! -
轩绍凯兰: #include <iostream.h>#include <string.h>#include <stdio.h>#include <stdlib.h>/* 冒泡排序法 */ void Bublesort(char a[],int n) { int i,j; char k; for(j=0;j<n;j++) /* 气泡法要排序n次*/ { for(i=0;i<n-j;i++) /* 值比较大的元素沉下去后,只把剩下的元素中的...

海勃湾区15297205078: 用C语言编写一函数,函数实现以下数字的排序[升序和降序] -
轩绍凯兰: 升序:#include "stdio.h" main() { int a[4]={1,4,2,6}; int i,j,num; for (i=1;i<4;i++) { for (j=0;j<4-i;j++) {if (a[j]>a[j+1]) {num=a[j];a[j]=a[j+1];a[j+1]=num;} } } for (i=0;i<4;i++) printf (" %d ",a[i]); } 降序:#include "stdio.h" main() { int a[4]={1,4,2,6}; int i,j,...

海勃湾区15297205078: 在c语言中 输入一串字符 将该字符串中所有字符按ascii码升序后排列 -
轩绍凯兰: #include<stdio.h> int gcd(int x,int y); int main() {char c;char data[100];int index=0;while((c=getchar())!='\n'){if(index==0){data[index]=c;}else{int i;for(i=0;i<index;i++){if(data[i]>=c){int j;for(j=index-1;j>=i;j--){data[j+1]=data[j];}data[...

海勃湾区15297205078: C语言:编写一个程序用冒泡排序实现升序排列 -
轩绍凯兰: 1、首先打开一个空白的C语言文件,首先先定义一组待排序的数列以及各个变量,接着就是用来处理排序的逻辑: 2、冒泡排序的逻辑是一组数从第一个数值开始,如果相邻两个数的排列顺序与期望不同,则将两个数的位置进行交换,重复这样的过程直到最后一个数不需要交换则排序完成,如果有N个数需要排序,则需要进行(N-1)趟的比较: 3、最后编译运行程序,观察最终排序的结果,可以看到数字被从小到大的排列好了,以上就是C语言冒泡排序实现的过程:

海勃湾区15297205078: 在C语言中,按升序输入10个数字,然后任意插入一个数字,按照升序排列,急求、、、最简单的、、 -
轩绍凯兰: O(n)的方法就是来一个数字冒一次泡.看成100了.你把100都换成10吧(99换成9).. #include <stdio.h>int a[100 + 10] ; void fill(){ int i ; for(i = 0 ; i < 100 ; i++) a[i] = i * i + 1 ; } void insert(int x){ int i ; for(i = 99 ; i >= 0 ; i--) { if(a[i] > x) a[i + 1] = a[i] ; ...

海勃湾区15297205078: c语言 编写一个排序函数,实现对主函数中数组的升序排序. -
轩绍凯兰: 经典的两个排序: (1)选择排序 #include <stdio.h> main() {int a[5];int i,j,k,t;for (i=0;i<5;i++)scanf("%d",&a[i]);for (i=0;i<4;i++){k=i;for(j=i+1;j<5;j++)if(a[k]>a[j])k=j;if(k!=i){t=a[k];a[k]=a[i];a[i]=t;}}for(i=0;i<5;i++)printf("%3d",a[i])...

海勃湾区15297205078: 在C语言中通过函数调用方式将5个字符串排为升序(程序) -
轩绍凯兰: #include"string.h"#include"stdio.h" void f(char s[5][20]) {int i,j; char a[20]; for(i=0;i<4;i++) for(j=0;j<4-i;j++) if(strcmp(s[j],s[j+1])>0) {strcpy(a,s[j]);strcpy(s[j],s[j+1]); strcpy(s[j+1],a);} } main() {char a[5][20]; int i; for(i=0;i<5;i++) fets(a[i]); f(a); for(i=0;i<5;i++) puts(a[i]); puts("\n"); }

海勃湾区15297205078: C语言中怎样实现将数组中的整数进行升序排列? -
轩绍凯兰: 可以.. #include "stdio.h" void main() {int a[10],i,j,t; printf("enter 10 Z_nums:\n"); //提示输入10个整数 for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) //冒泡排序排列10个整数 for(j=0;j<10-i;j++) if(a[j]>a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;} ...

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