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

c語言按照指定順序對字元串排序

發布時間: 2022-05-26 20:41:35

A. 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;

}

運行效果:

(1)c語言按照指定順序對字元串排序擴展閱讀:

scanf函數用法:

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

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

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

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

B. 字元串排序 C語言

main()
{
int n,i,j;
char str[10][20];
char t[20];
scanf("%d",&n);
getchar();
for(i=0; i<n; i++)
gets(str[i]);
for(i=0;i<n;i++)
for(j=0;j<n-i-1;j++)
if(strcmp(str[j],str[j+1]) > 0 )
{strcpy (t,str[j] );
strcpy (str[j],str[j+1]);
strcpy (str[j+1],t);
}
for(i=0;i<n;i++)
puts(str[i]);
}
因為你首先輸入了一個數字,後面使用gets函數的時候,將第一行的數字也讀入,所以會少一個輸入,在原來的scanf函數後加一個getchar()函數吸收這個值。

C. C語言用選擇排序法從小到大排序字元串

#include

#include

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);
}

D. C語言中 字元串怎麼排序

直接藉助冒泡排序,選擇排序即可進行字元串的排序,但是需注意的是,字元串的比較需要藉助strcmp函數完成,而字元串的復制需要藉助strcpy函數完成。

示例代碼如下:

#include"stdio.h"
#include"string.h"
voidsort(chararray[][20],intn);
main(void)
{
charstr[10][20];
inti,j,k,n;
printf("inputn(n<=10):");
scanf("%d",&n);
printf("input%dstring:",n);
for(i=0;i<n;i++)
gets(str[i]);//輸入N個字元串
sort(str,n);//對輸入的字元串排序
printf("sortstring: ");
for(i=0;i<n;i++)
puts(str[i]);
return0;
}
voidsort(chararray[][20],intn)//定義排序函數
{
chartemp[20];
inti,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);
}
}
}

E. c語言中從鍵盤輸入N個字元串,將字元串按從小到大的順序排列並輸出

代碼如下:

#define N 10 int main(){char str[N][100]; int i,j; 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) { char temp[100]; strcpy(temp,str[i]); strcpy(str[i],str[j]); strcpy(str[j],temp);} } } for(i = 0; i < N; i ++) puts(str[i]);}。

運行代碼:

(5)c語言按照指定順序對字元串排序擴展閱讀

在C語言編程中,常常需要對字元串比較和排序,經常遇到對字元串整體的控制等操作,strcmp 比較str1和str2的大小,而其它的c函數strlen(),字元串拷貝函數strcpy()/strncpy(),字元串比較函數 strcmp(),字元串連接函數strcat()/strncat()等,都可以幫助我們快速方便的對字元串操作。

F. C語言 字元串排序的規則是什麼就是字元串排序是什麼意思

我想樓主問的是排序規則吧,把字元串當成一個整體,最常用的是這樣的規則(以升序為例):
從字元串的第一個字元開始比較,如果相等就比較後一個;如果不等,就將「小」的那一個放在「大」的前面,這里的大小指的是按照字母表的順序(實際上比較的是ASCII碼值)。
例如:兩個字元串"xyh","abc"
先比較第一個字元:字母表中x是大於a的,所以升序排序的話就是
"abc"
"xyz"
不知道我說的清楚不?希望能幫到你

G. 字元串排序 C語言編程

#include&lt;stdio.h&gt;

#include&lt;string.h&gt;

#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&lt;LIM&&gets_s(input[ct],100)!=NULL&&input[ct][0]!='')

{

ptstr[ct]=input[ct];

ct++;

}

stsrt(ptstr,ct);

puts(" here's the sorted list: ");

for(k=0;k&lt;ct;k++)

{

puts(ptstr[k]);

}

puts(" here's the list: ");

for(k=0;k&lt;ct;k++)

{

puts(input[k]);

}

return 0;

}

void stsrt(char*strings[],int num)

{

char*temp;

int top,seek;

for(top=0;top&lt;num-1;top++)

{

for(seek=top+1;seek&lt;num;seek++)

{

if(strcmp(strings[top],strings[seek])&gt;0)

{

temp=strings[top];

strings[top]=strings[seek];

strings[seek]=temp;

}

}

}

(7)c語言按照指定順序對字元串排序擴展閱讀:

printf函數使用注意事項

1、域寬

%d:按整型數據的實際長度輸出。

如果想輸出指定寬度可以指定域寬,%md--&gt;m域寬,列印出來以後,在控制台上,顯示m位;

如果我們要列印的數的位數如果超過我們設定m則原樣輸出;

如果我們要列印的數的位數如果小於我們設定的位數,則補空白,具體如下:

如果m為正數,則左對齊(左側補空白);

如果m為負數,則右對齊(右側補空白)。

2、轉義字元

如果想輸出字元"%",則應該在「格式控制」字元串中用連續兩個%表示。

如:printf("%f%%",1.0/3);輸出結果:0.333333%。

H. c語言字元串排序

#include&lt;stdio.h&gt;

#include&lt;string.h&gt;

#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&lt;LIM&&gets_s(input[ct],100)!=NULL&&input[ct][0]!='')

{

ptstr[ct]=input[ct];

ct++;

}

stsrt(ptstr,ct);

puts(" here's the sorted list: ");

for(k=0;k&lt;ct;k++)

{

puts(ptstr[k]);

}

puts(" here's the list: ");

for(k=0;k&lt;ct;k++)

{

puts(input[k]);

}

return 0;

}

void stsrt(char*strings[],int num)

{

char*temp;

int top,seek;

for(top=0;top&lt;num-1;top++)

{

for(seek=top+1;seek&lt;num;seek++)

{

if(strcmp(strings[top],strings[seek])&gt;0)

{

temp=strings[top];

strings[top]=strings[seek];

strings[seek]=temp;

}

}

}

(8)c語言按照指定順序對字元串排序擴展閱讀:

printf函數使用注意事項

1、域寬

%d:按整型數據的實際長度輸出。

如果想輸出指定寬度可以指定域寬,%md--&gt;m域寬,列印出來以後,在控制台上,顯示m位;

如果我們要列印的數的位數如果超過我們設定m則原樣輸出;

如果我們要列印的數的位數如果小於我們設定的位數,則補空白,具體如下:

如果m為正數,則左對齊(左側補空白);

如果m為負數,則右對齊(右側補空白)。

2、轉義字元

如果想輸出字元"%",則應該在「格式控制」字元串中用連續兩個%表示。

如:printf("%f%%",1.0/3);輸出結果:0.333333%。