C语言中字符串从小到大排序

作者&投稿:虞心 (若有异议请与网页底部的电邮联系)
C语言用选择排序法从小到大排序字符串~

是的 已经很接近了, 只差一点,在输出上。
直接%s输出shmily就好了。。。
#include#include#define Max 100int main(){ char shmily[Max]; int count; int i,j,k,empty; printf("请输入字符串:
"); scanf("%s",shmily); count=strlen(shmily); for(i=0;i<count-1;i++) { k=i; for(j=i+1;j<count;j++) { if(shmily[j]<shmily[k]) { k=j; } } if(k!=i) { empty=shmily[k]; shmily[k]=shmily[i]; shmily[i]=empty; } } printf("按照ASCII表重新排列为:%s
",shmily); return 0;}

/*比较笨重的冒泡排序法,用到string中的串比较strcmp和串拷贝strcpy。amount是字符串的数量,length是字符串的长度,不管你是否习惯这么写,这样表示都是有好处的。我的编译器是visual studio 2008 C++。*/

#include
#include

int main()
{
const int amount=5;
const int length=20;
char string[amount][length];

for(int i=0;i<amount;i++)
{
scanf("%s",string[i]);
}

for(int i=0;i<amount;i++)
{

for(int j=0;j<i;j++)
{
if(strcmp(string[i],string[j])<0)
{
char tmp[length];
strcpy(tmp,string[i]);
strcpy(string[i],string[j]);
strcpy(string[j],tmp);
}
}
}

for(int i=0;i<amount;i++)
{
printf("%s
",string[i]);
}
return 0;
}

#include <stdio.h>
#include <string.h>
void f(char *str)
{
char *p,*q,*r,c;

/*--用选择排序法对字符串str中字符按从小到大排序。找出以下程序段中的错误--*/
for(p=str;*p;p++)
{
for(r=p,q=p+1;*q;q++)
if(*r>*q)//应该加*号,不加*号的比较大小是没有意义的,因为r,q是指针,而要比较的是指针指向的地址所储存的变量,
所以要加*号..
r=q;
if(r!=p)
{
c=*r;
*r=*p;
*p=c;
}
}

/*--删除字符串str中的重复字符。找出以下程序段中的错误--*/
for(p=str;*p;p++)
{
for(q=p+1;*q && *q==*p;q++)//增加了&& *q=*p,这样才能保证当出现相同的字符时才开始操作,过程如下:
假设排好序的字符串为aab;
那么p首先指向a,q指向第二个a,此时满足*p==*q的条件,进入for循环,将q开始的字符串赋给p开始的字符串,即
aab->ab;
如果*p!=*q时,循环结束,大致就是这样子了..
strcpy(p,q--);
}

}
void main()
{
char s[50];
int number=0;
printf("Please enter a string:\n");
gets(s);
f(s);
printf("%s\n",s);
}


c语言中从键盘输入N个字符串,将字符串按从小到大的顺序排列并输出_百 ...
i < N; i ++) puts(str[i]);}。运行代码:执行结果:

用C语言,输入一字母串,将其从小到大排列(如果输入字母为大写,要将其...
\/\/字符大小写转化}qsort((void*)

C语言:编写程序,把字符数组中的字母按由小到大 的顺序排列并输出_百 ...
include <stdio.h>#include <stdlib.h>#include <string.h>int cmp(const void *a, const void *b) { return *(char*)a - *(char*)b; \/\/ 这里记住一定要用排序的元素类型的指针做强制装换并且再取指针指向的值。}int main() { char s[] = "kjferu21398dyfkaqpoia"; qs...

用c语言对10个字符串从小到大排序
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=...

如何从二十个随机字符串中,找出其中能转换成数字的字符串,并按照...
C语言中数字转化为字符 。从数字组成的字符串转化为十进制数步骤如下: 1、挨个读取数组,从第0位开始 2、将字符转化为数字。比如从'1'转化为1。可以参考ASCII码表,字符'0'是48,所以只需要将字符减去48即可。 3、将前一个计算出的十进制数(初始化为0)乘以10加上第二步计算出的数字。 4、...

C语言中字符串从小到大排序
include <stdio.h> include <string.h> void f(char *str){ char *p,*q,*r,c;\/*--用选择排序法对字符串str中字符按从小到大排序。找出以下程序段中的错误--*\/ for(p=str;*p;p++){ for(r=p,q=p+1;*q;q++)if(*r>*q)\/\/应该加*号,不加*号的比较大小是没有意义的,因为r,...

C语言中输入一串字符,怎样让它按照字母从小到大的顺序排列?
这可以把字符串输入到字符数组中,然后采用排序的方法来实现:(需要包含<string.h>头文件)char t,s[200];int i,i;gets(s);for(i=0;i<strlen(s)-1;i++)for(j=0;j<strlen(s)-1-i;j++)if(s[j]>s[j+1]){t=s[j]; s[j]=s[j+1]; s[j+1]=t;} puts(s);...

(C语言)输入一串字符,按从小到大顺序排列并删除重复项。
include<stdio.h>#include"string.h"int main(void){char str1[500]={0},str2[256]={0};\/\/定义二个数组,并赋初值为0int i;gets(str1);\/\/读取一个字符串for(i=0;str1[i];i++){str2[str1[i]]=1;\/\/str1中每个字符的assic码作为str2的下标值,并把对应位置填充为1,同一个...

c语言,求助大神! 从键盘上输入三个字符串,将这三个串从小到大排序。
C的字符串是用字符数组操作的,所以排序应该用指针数组完成,以避免字符串拷贝。由于只有3个字符串,用直接操作的办法而不用循环以避免不必要的开销;输入函数选用fgets,既可以方便地控制输入长度不越界,又能允许字符串中存在空格。代码如下:include "stdio.h"#include "string.h"int main(int argc,...

c语言,用插入排序的方法将五个字符串从小到大排序
a[] = {0,-9,8,1,6};int i,j,tem;puts ("Array content:");for (i=0; i<5; i++)printf ("%3d",a[i]);putchar (10);for (i=1; i<5; i++)for (j=0; ja[i]){tem = a[j];a[j] = a[i];a[i] = tem;}puts ("Sorted:"...

赣州市13522701558: 用C语言:键盘输入一段字符串,然后显示由小到大排列的顺序…… -
凌肃泌尿: #include<stdio.h> #include<string.h> void main() {char a[30]; /*用于存放字符串*/char *p=a; /*将指针p指向a*/int i,j,length=0;char temp; /*定义一个中间变量temp,用于交换字符的位置*//*输入要排序的字符串*/gets(p);length=strlen(p); ...

赣州市13522701558: C语言中从键盘上输入五个字符串,按从小到大的顺序对它们进行排序!!(TC2.0) -
凌肃泌尿: 抱歉,是我疏忽了!呵呵! 下面还是举例来说明:去掉else后的问题在到底在哪里,为什么结果不对了.依旧a[0]="12345",a[1]="12452"; 前两个相等故不做if.第三四个a[1]值大,此处就本应该结束循环不再比较了,但是由于去掉了else...

赣州市13522701558: 【C语言】写一个函数,用选择法对输入的一行字符按照由小到大的顺序排列. -
凌肃泌尿: #includevoid main() {printf(" 请输入字符串:\n"); char szBuf[512] = {0}; for (int i = 0; i {for (int j = i + 1; j {if (szBuf[j] > szBuf[j+1]){char tmp = szBuf[j];szBuf[j] = szBuf[j+1];szBuf[j+1] = tmp;}}} printf("排序后的字符串:%s\n", szBuf); }

赣州市13522701558: 用C语言编程从键盘输入五个字符串,按从小到大的顺序对它们进行排序. -
凌肃泌尿: /*比较笨重的冒泡排序法,用到string中的串比较strcmp和串拷贝strcpy.amount是字符串的数量,length是字符串的长度,不管你是否习惯这么写,这样表示都是有好处的.我的编译器是visual studio 2008 C++.*/#include <stdio.h>#include <...

赣州市13522701558: 十个字符排序,按从小到大的顺序,用函数完成 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");

赣州市13522701558: C语言(1)输入1个字符串,对该字符串按字符大小从小到大的顺序排序,然后输出这个已经排好序的字符串. -
凌肃泌尿: #include<stdio.h> int main( ) {char s[100],*p,*p1,*p2,c;gets(s); //读取字符串for(p=s;*p;p++); //求得串长,p指向'\0'p--; //冒泡排序外循环终点for(p1=s;p1<p;p1++,p--) //此二重循环为冒泡排序for(p2=s;p2<p;p2++)if(*p2>*(p2+1)){c=*p2;...

赣州市13522701558: c语言,求助大神! 从键盘上输入三个字符串,将这三个串从小到大排序. -
凌肃泌尿: C的字符串是用字符数组操作的,所以排序应该用指针数组完成,以避免字符串拷贝.由于只有3个字符串,用直接操作的办法而不用循环以避免不必要的开销;输入函数选用fgets,既可以方便地控制输入长度不越界,又能允许字符串中存在空...

赣州市13522701558: c语言怎么用选择法将字符串按ascll码值从小到大排列,谢谢! -
凌肃泌尿: 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//你要的是这样的吗??? #define N 26 #include <stdio.h> voidfun(charstr[]); intmain(){inti,j;charstr[N];for(i=0;i<N;i++)scanf("%c",&str[i]);fun(str);for(i=0;i<N;...

赣州市13522701558: 任意输入五个字符串,从小到大排序,用c语言编程序.谢谢 -
凌肃泌尿: #include int main(int argc,char *argv[]){ char s[5][128],*ps[5],i,j,k,*t; for(i=0;i<5;scanf("%s",ps[i]=s[i++])); for(i=0;i<5;i++){ for(k=i,j=k+1;j<5;j++) if(strcmp(ps[k],ps[j])==1) k=j; if(strcmp(ps[k],ps[j])) t=ps[k],ps[k]=ps[i],ps[i]=t; printf("%s ",ps[i]); } printf("\n"); return 0; }

赣州市13522701558: C语言字符串排序,不用指针 按照从小到大排序 -
凌肃泌尿: 这个可以把字符串等效为一个数, 利用冒泡排序, 它们的思想是一样的, 也用两个循环

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