本文目錄一覽:
- 1、C語言中如何將10個字元串進行排序
- 2、c語言中從鍵盤輸入N個字元串,將字元串按從小到大的順序排列並輸出
- 3、C語言中輸入一串字元,怎樣讓它按照字母從小到大的順序排列?
- 4、字元串排序 C語言編程
- 5、c語言字元串排序
C語言中如何將10個字元串進行排序
#includestdio.h
#includestring.h
int main()
{
int j,k,i,t,n;
char s[10][10],b[10][10];
for(i=0;i10;i++)
{
scanf(“%s”,s[i]);
}
n=strlen(s[1]);
k=0;
for(i=0;i9;i++)
{
for(j=0;j9-i;j++)
if(strcmp(s[j],s[j+1])0)
{
for(k=0;kn;k++)
b[j][k]=s[j][k];
for(k=0;kn;k++)
s[j][k]=s[j+1][k];
for(k=0;kn;k++)
s[j+1][k]=b[j][k];
}
}
for(i=0;i10;i++)
{
printf(“%s “,s[i]);
}
return 0;
}
運行效果:
擴展資料:
scanf函數用法:
scanf(“輸入控制符”,輸入參數);
功能:將從鍵盤輸入的字元轉化為「輸入控制符」所規定格式的數據,然後存入以輸入參數的值為地址的變數中。
用scanf()函數以%s格式讀入的數據不能含有空白符時,所有空白符都被當做數據結束的標誌。所以題中函數輸出的值只有空格前面的部分。
如果想要輸出包括空格在內的所有數據,可以使用gets()函數讀入數據。gets()函數的功能是讀取字元串,並存放在指定的字元數組中,遇到換行符或文件結束標誌時結束讀入。換行符不作為讀取串的內容,讀取的換行符被轉換為字元串結束標誌’\0’。
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]);}。
運行代碼:
執行結果:
擴展資料
在C語言編程中,常常需要對字元串比較和排序,經常遇到對字元串整體的控制等操作,strcmp 比較str1和str2的大小,而其它的c函數strlen(),字元串拷貝函數strcpy()/strncpy(),字元串比較函數 strcmp(),字元串連接函數strcat()/strncat()等,都可以幫助我們快速方便的對字元串操作。
參考資料:百度百科-C語言
C語言中輸入一串字元,怎樣讓它按照字母從小到大的順序排列?
這可以把字元串輸入到字元數組中,然後採用排序的方法來實現:
(需要包含string.h頭文件)
char t,s[200];
int i,i;
gets(s);
for(i=0;istrlen(s)-1;i++)
for(j=0;jstrlen(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語言編程
#includelt;stdio.hgt;
#includelt;string.hgt;
#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.\n”,LIM);
printf(“To stop,press the enter key at a line’s start.\n”);
while(ctlt;LIMgets_s(input[ct],100)!=NULLinput[ct][0]!=’\0′)
{
ptstr[ct]=input[ct];
ct++;
}
stsrt(ptstr,ct);
puts(“\n here’s the sorted list:\n”);
for(k=0;klt;ct;k++)
{
puts(ptstr[k]);
}
puts(“\n here’s the list:\n”);
for(k=0;klt;ct;k++)
{
puts(input[k]);
}
return 0;
}
void stsrt(char*strings[],int num)
{
char*temp;
int top,seek;
for(top=0;toplt;num-1;top++)
{
for(seek=top+1;seeklt;num;seek++)
{
if(strcmp(strings[top],strings[seek])gt;0)
{
temp=strings[top];
strings[top]=strings[seek];
strings[seek]=temp;
}
}
}
擴展資料:
printf函數使用注意事項
1、域寬
%d:按整型數據的實際長度輸出。
如果想輸出指定寬度可以指定域寬,%md–gt;m域寬,列印出來以後,在控制台上,顯示m位;
如果我們要列印的數的位數如果超過我們設定m則原樣輸出;
如果我們要列印的數的位數如果小於我們設定的位數,則補空白,具體如下:
如果m為正數,則左對齊(左側補空白);
如果m為負數,則右對齊(右側補空白)。
2、轉義字元
如果想輸出字元”%”,則應該在「格式控制」字元串中用連續兩個%表示。
如:printf(“%f%%”,1.0/3);輸出結果:0.333333%。
c語言字元串排序
你有兩個錯誤,一是C的變數定義必須在所有語句之前,二是字元串不能賦值,必須使用strcpy函數,修改後的程序代碼和運行結果如下:
$ cat a.c
#includestdio.h
#includestring.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;in;i++)
{
gets(name[i]);
}
sort(name,n);
for(i=0;in;i++)
{
puts(name[i]);
}
}
void sort(char *name[100], int n)
{
int i,j,k;
char *temp;
for(i=0;in-1;i++)
{
k=i;
for(j=i+1;jn;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
原創文章,作者:QHWC,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/140649.html