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

c語言向字元串排列

發布時間: 2023-05-25 09:51:41

『壹』 c語言字元串排序

你有兩個錯誤,一是C的變數定義必須在所有語句之前,二是字元串不能賦值,必須使用strcpy函數,修改後的程序代碼和運行結果如下:

$ cat a.c

#include<stdio.h>
#include<string.h>
void Solve();
void sort(char *name[], int n);
int main()
{
Solve();
return 0;
}
void Solve()
{
int i,n;
char name[100][100];
scanf("%d",&n);
for(i=0;i<n;i++)
{
gets(name[i]);
}
sort(name,n);
for(i=0;i<n;i++)
{
puts(name[i]);
}
}
void sort(char *name[100], int n)
{
int i,j,k;
char *temp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++) if(strcmp(name[k],name[j])>0) k=j;
if (k!=i)
{
{
strcpy(temp,name[i]);
strcpy(name[i],name[k]);
strcpy(name[k],temp);
}
}
}
}

$ cc a.c
"a.c", line 19: warning #2167-D: argument of type "char (*)[100]" is
incompatible with parameter of type "char **"
sort(name,n);
^

$ a.out
6dkjlfhgjkshdfjkgh
1kdfghj
3dkjfhghd
2dlkfjgklj
5ldfkhlkj
4dflkghklj

1kdfghj
3dkjfhghd
2dlkfjgklj
5ldfkhlkj
4dflkghklj

$ cc -V

cc: HP C/aC++ B3910B A.06.25 [Nov 30 2009]
/cq/u/cqjsdba/ygb>

『貳』 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;

}

}

}

(2)c語言向字元串排列擴展閱讀:

printf函數使用注意事項

1、域寬

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

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

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

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

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

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

2、轉義字元

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

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

『叄』 C語言:將輸入的字元串按首字母順序排列。

#include<stdio.h>

#include<string.h>

void sort(char *a[]);

void print(char *a[]);

int main()

{

char *a[] ={"ceo","define","basic","abc","empty"};

printf("原來的序列是: ");

print(a);

sort(a);

printf(" 排序後的序列是: ");

print(a);

printf(" ");

return 0;

}

void sort(char *a[])

{

int i,j;

char *temp;

for(i=0;i<4;i++)//注意是i<4

{

for(j=0;j<4;j++)//注意是j<4,因為下面要+1和後面的那個字元串比較

{

if(strcmp(a[j],a[j+1])>0)//字元串比較:>0表示前面的字元串比後面的大則交換

{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

}

}

void print(char *a[])

{

int i;

for(i=0;i<5;i++)

{

printf("%s ",a[i]);

}

}

運行效果:

(3)c語言向字元串排列擴展閱讀:

return 0的用法:

return的作用是結束正在運行的函數,並返回函數值。return後面可以跟一個常量,變數,或是表達式。

函數的定義一般是這樣的,例如:

inta(inti)//第一個int是函數的返回值的類型,也就是return後面跟的值的類型,a是函數的名稱,括弧里的是傳遞給函數的參數,int是參數的類型,i是參數的名字

...//省略函數體內容

returnb;//b必須與函數頭的返回值一致(此處為int型)

簡單函數舉例:

intaddOne(intb)

returnb+1;

該函數的作用是取得一個數,將這個數加上1,再將結果返回

調用時這樣:

intresult=addOne(2);//此時result的值為3

函數括弧里的參數也可以為變數或能算出值的表達式

以上就是一個基本的函數,一般的函數都有返回值,也就是return後面跟的值,返回值可以為各種數據類型,如:int,float,double,char,a[](數組),*a(指針),結構或類(c++)

但不是所有函數都有返回值,如果某個函數無返回值,那麼返回值的位置則為「void」關鍵字,此時函數體中無返回值,即無return的值。但是函數中也可出現return,即一個空的return句子,其作用是使函數立即結束,如voidprint()//括弧中為空表示無傳遞參數、

printf("a");

printf("b");

return;//函數執行到此處結束

printf("c");

}//該函數只執行到return語句處,即屏幕上輸出的為"ab"

『肆』 c語言字元串排序問題!

main()
{
char st[100],cs[3][100]; //假設該字元串長度都在100個以內
int i,j,p;
printf("please input strings one by one:\n");
for(i=0;i<3;i++)
gets(cs[i]); //讀取字元串,放在CS數組裡面
printf("\n");
for(i=0;i<3;i++)
{ p=i;strcpy(st,cs[i]);//把CS數組中第i+1行的字元串拷貝給st數組
for(j=i+1;j<3;j++)
if(strcmp(cs[j],st)>0) {p=j;strcpy(st,cs[j]);}//把st(也就是CS〔i〕依次跟它後面的按照ASCII碼順序(strcmp)比較.CS〔j]大的話,就把它拷貝給st數組(也就是給ST數重賦值)。
if(p!=i) //如果p!=i的話,那麼說明cs[i]的後面有一個cs[p]比它大
{
strcpy(st,cs[i]);
strcpy(cs[i],cs[p]);
strcpy(cs[p],st);
}//交換cs[i]和cs[p]的值,目的是把cs[p](ASCII碼比較大的)的值放到前面,
puts(cs[i]);//輸出cs[i],這個時候的cs[i]是跟在它後面的所有元素比較過的,它是在後面所有元素裡面最大的。
} //3次循環,按從大到小分別3次輸出cs[i]
printf("\n");
}

你要是想比較N個字元串的話,可以把裡面的3改成N就行了。

『伍』 c語言進行字元串排序

#include<stdio.h>#include<string.h>#define N 10void main(){ int i,j; char str[N+1][20]; 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(str[N],str[i]); strcpy(str[i],str[j]); strcpy(str[j],str[N]); } for(i=0;i<N;i++) if(i!=N-1) printf("%s ",str[i]); else printf("%s\n",str[i]);}

『陸』 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;

}

運行效果:

(6)c語言向字元串排列擴展閱讀:

scanf函數用法:

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

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

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

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

『柒』 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]);}。

運行代碼:

(7)c語言向字元串排列擴展閱讀

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

『捌』 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語言中輸入一串字元,怎樣讓它按照字母從小到大的順序排列

這可以把字元串輸入到字元數組中,然後採用排序的方法來實現:
(需要包含<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語言 字元串排序的規則是什麼就是字元串排序是什麼意思

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