『壹』 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]!='