當前位置:首頁 » 編程語言 » c語言字元串數組排序
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言字元串數組排序

發布時間: 2022-02-02 01:18:42

A. 字元串數組排序(c語言)(qsort庫函數)

聲明一個字元串指針數組存放每個字元串的首地址,調用庫函數qusort按題目要求對字元串指針排序,不移動源字元串。關鍵是要設計一個好的比較函數,精巧地解決「按長度、長度相等時按大小」排序的問題。舉例代碼如下:

//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#defineN10 //字元串個數
#defineLN21 //限制字元串長度為20
intmycmp(constvoid*a,constvoid*b){//比較函數
char*pa=*(char**)a,*pb=*(char**)b;
intx=int(strlen(pa)-strlen(pb));//依長度比較
returnx?x:strcmp(pa,pb);//長度相等時依大小比較
}
intmain(void){
inti=0,j=0;
char*f[N],w[LN*N];//聲明指針數組f和字元串總空間
printf("Input%dstring(s)(length<=%d)... ",N,LN);
while(i<N){//輸入並將字元串首址賦給f[i]
if(scanf("%[1234567890]",f[i]=w+j)>0&&strlen(f[i])<LN)
i++,j+=LN;
elseprintf("Error,redo:Requiredlengthlessthan%d:",LN);
}
qsort(f,N,sizeof(char*),mycmp);//調用庫函數對字元串指針排序
for(i=0;i<N;printf("%s ",f[i++]));//輸出...
return0;
}

B. 字元串數組排序(C語言)(qsort庫函數)

#include
#include
#include
#define
N
5
#define
SIZE
100
int
cmpOne(const
void
*a,
const
void
*b)
{
char
*p
=
(char
*)a;
char
*q
=
(char
*)b;
int
m
=
strlen(p);
int
n
=
strlen(q);
if
(m
!=
n)
{
return
(m
-
n);//按串長排序,由小到大
}
else
{
return
(*p
-
*q);//按首字母排序,由小到大
}
}
void
main(void)
{
int
i;
char
str[SIZE][SIZE];
for
(i=0;
i
評論
0
0
0
載入更多

C. c語言字元數組排序問題 看如下代碼

#include <stdio.h>

#include <string.h>

int main()

{

char a[100], t;

int i, j, min;

int h = 0;

printf("請輸入字元排序 ");

scanf("%s", a);

for (i = 0; a[i] != 0; i++)

{

min = i;

for (j = i + 1; a[j] != 0; j++)

{

if (a[j] < a[min])

min = j;

}

t = a[i];

a[i] = a[min];

a[min] = t;


}

printf("%s", a);

}

D. C語言 字元串數組字典排序

#include<stdio.h>
#include<string.h>

constintMAXLEN=100;
constintMAXSIZE=10;

voidsort(chartitle[][MAXLEN],intn){//排序
inti,j,k;
chartstr[MAXLEN];
for(i=0;i<n-1;++i){
k=i;
for(j=i+1;j<n;++j){
if(strcmp(title[k],title[j])>0)
k=j;
}
if(k!=i){
strcpy(tstr,title[k]);
strcpy(title[k],title[i]);
strcpy(title[i],tstr);
}
}
}

voidshow(chars[][MAXLEN],intn){
inti;
for(i=0;i<n;++i)
printf("%s",s[i]);
puts("");
}

intmain(void){
chars[MAXSIZE][MAXLEN];
inti;
for(i=0;i<MAXSIZE;++i){
printf("string(%02d/%d):",i+1,MAXSIZE);
fgets(s[i],MAXLEN,stdin);
}
printf("排序前: ");
show(s,MAXSIZE);
sort(s,MAXSIZE);
printf("排序後: ");
show(s,MAXSIZE);
return0;
}

E. C語言中如何將10個字元串進行排序

#include<stdio.h>

#include<string.h>

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;

}

運行效果:

(5)c語言字元串數組排序擴展閱讀:

scanf函數用法:

scanf("輸入控制符",輸入參數);

功能:將從鍵盤輸入的字元轉化為「輸入控制符」所規定格式的數據,然後存入以輸入參數的值為地址的變數中。

用scanf()函數以%s格式讀入的數據不能含有空白符時,所有空白符都被當做數據結束的標志。所以題中函數輸出的值只有空格前面的部分。

如果想要輸出包括空格在內的所有數據,可以使用gets()函數讀入數據。gets()函數的功能是讀取字元串,並存放在指定的字元數組中,遇到換行符或文件結束標志時結束讀入。換行符不作為讀取串的內容,讀取的換行符被轉換為字元串結束標志''。

F. C語言中字元數組問題,字元串排序

同學您好,這是完全可以的
a[5][80]的意思是定義一個字元串數組a[5],每個字元串分配80個儲存位置
a[5][80]裡面的每一個元素是一個字元
而a[0],a[1]...a[4]則是5個字元串,明白了嗎?
望採納!

G. C語言里將學號存入字元串數組,怎樣對其排序

截取 字元串 後 四位 然後轉換為整型 就排序了。

H. C語言關於字元串數組排序

您好:scanf這個函數里頭的用法出了點問題,建議單一的輸入解決,scaf("%s",&a[0]);scanf("%s",&a[1]);等分開輸入,如果是C++的輸入問題就少多了。

I. C語言中的字元指針數組排序

完整程序如下:
#include<stdio.h>
void sort_string(char **p,int n){
int i,j;
char s[80];
for (i=0;i<n-1;i++){
for (j=i+1;j<n;j++){
if (strcmp(*(p+i),*(p+j))<0){
strcpy(s,*(p+i));strcpy(*(p+i),*(p+j));strcpy(*(p+j),s);
};};};
}

int main()
{
char *str[]={ "teacher", "student", "maneger", "employee", "telicent" };
int i,n=5;
sort_string(str,n);
for (i=0;i<n;i++) printf("%s\n",str[i]);
return 0;
}

J. c語言,對字元串數組進行排序,從鍵盤中輸入一個6行的字元串,並將這六行的字元

參考代碼:

#include<stdio.h>
#include<string.h>
#defineN100
intmain()
{
charstr[N][N],tmp[N];
inti,j,n;
printf("輸入要輸入的字元串的個數: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s",str[i]);
}
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(strcmp(str[i],str[j])>0)
{
strcpy(tmp,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],tmp);
}
}
}
printf("排序後: ");
for(i=0;i<n;i++)
{
printf("%s ",str[i]);
}
return0;
}