‘壹’ c语言字符串排序
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#define MAX 10
void stsrt(char *str[],int num);
void ASC(char *str[],int num);
void length_add(char *str[],int num);
void word_length(char *str[],int num);
int main(void) {
char *s[MAX],t[80];
int i = 0,n;
printf("输入%d个字符串 :\n",MAX);
for(i = 0; i < MAX; ++i) {
if(gets(t) && t[0] != '\0') {
s[i] = (char *)malloc(80 * sizeof(char));
strcpy(s[i],t);
}
else break;
}
while(i < MAX && gets(s[i]) && s[i][0] != '\0') i++;
puts("选择:");
puts("1.输出初始字符串行表");
puts("2.按ASCⅡ码顺序输出字符串");
puts("3.按长度递增顺序输出字符串");
puts("4.按字符串第一个单词长度输出字符串");
puts("5.结束");
while(scanf("%d",&n) != 5) {
switch(n) {
case 1:stsrt(s,i);break;
case 2:ASC(s,i);break;
case 3:length_add(s,i);break;
case 4:word_length(s,i);break;
case 5:return 0;
default:puts("输入错误!");
}
}
return 0;
}
void stsrt(char *str[],int num) { //1.输出初始字符串行表
int n;
for(n = 0;n < num;n++) puts(str[num]);
}
void ASC(char *str[],int num) {//2.按ASCⅡ码顺序输出字符串
int top,seek;
char *temp;
for(top = 0;top < num - 1;top++) {
for(seek = top + 1;seek < num;seek++)
if(strcmp(str[top],str[seek]) > 0) {
temp = str[top];
str[top] = str[seek];
str[seek] = temp;
}
}
for(int n = 0;n < num;n++) puts(str[n]);
}
void length_add(char *str[],int num) { //3.按长度递增顺序输出字符串
char *temp;
int top,seek;
for(top = 0;top < num - 1;top++) {
for(seek = top + 1;seek < num;seek++)
if(strlen(str[top]) > strlen(str[seek])) {
temp = str[top];
str[top] = str[seek];
str[seek] = temp;
}
}
for(int n = 0;n < num;n++) puts(str[n]);
}
void word_length(char *str[],int num) {//4.按字符串第一个单词长度输出字符串
char *temp;
int top,seek,n,j,len[MAX];
for(n = 0; n < num; ++n) {
len[n] = 0;
j = 0;
while((str[n][j] != ' ') && str[n][j]) {
++len[n];
++j;
}
}
for(top = 0;top < num - 1;top++) {
for(seek = top + 1; seek < num;seek++) {
if(len[top] > len[seek]) {
temp = str[top];
str[top] = str[seek];
str[seek] = temp;
}
}
}
for(n = 0;n < num;n++) puts(str[n]);
}
‘贰’ C语言 字符串排序的规则是什么就是字符串排序是什么意思
我想楼主问的是排序规则吧,把字符串当成一个整体,最常用的是这样的规则(以升序为例):
从字符串的第一个字符开始比较,如果相等就比较后一个;如果不等,就将“小”的那一个放在“大”的前面,这里的大小指的是按照字母表的顺序(实际上比较的是ASCII码值)。
例如:两个字符串"xyh","abc"
先比较第一个字符:字母表中x是大于a的,所以升序排序的话就是
"abc"
"xyz"
不知道我说的清楚不?希望能帮到你
‘叁’ C语言,字符串排序问题。。
没有大的问题,稍作调整:
#include<stdio.h>
#include<string.h>
int main()
{
char temp[256];
char string[6][256];
int i,j;
//提示输入6个字符串
printf("请依次输入6个字符串(包括英文字母和数字): ");
for (i=0; i<6; i++)
{
scanf("%s",string[i]);
}
//字符串比较大小
for (i=0; i<6-1; i++)
{
for(j=0;j<7-i;j++)
{
//比较字符串大小,如果前面的字符串大,则返回1,否则返回0
if ((strcmp(string[j],string[j+1]))==1)
{
//调换两个字符串
strcpy(temp,string[j]);
strcpy(string[j],string[j+1]);
strcpy(string[j+1],temp);
}
}
}
//输出字符串
printf("排序完成的字符串如下: ");
for (i=0; i<6; i++)
{
printf("%s ",string[i]);
}
getch();
return 0;
}
‘肆’ 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>
#define SIZE 91
#define LIM 31
#define HALT""
void stsrt(char*strings[],int num);
int main(void)
{
char input[LIM][SIZE];
char*ptstr[LIM];
int ct=0;
int k=0;
printf("input up to%d lines,and I will sort them. ",LIM);
printf("To stop,press the enter key at a line's start. ");
while(ct<LIM&&gets_s(input[ct],100)!=NULL&&input[ct][0]!='