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

c語言字元串排序用string函數

發布時間: 2022-07-17 16:03:24

1. c語言調用函數為字元串排序

最後,printf 裡面應該是 str 不是str[SIZE]吧

我也初學者, 不一定對,

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

3. c++怎樣用cstring類的成員函數實現對字元串的排序

char* ptr1=new char();//三個指針
char* ptr2=new char();
char* ptr3=new char();
cin>>ptr1>>ptr2>>ptr3;//輸入學號
char* temp=new char();
if(strcmp((const char*)ptr1,(const char*)ptr2))//就相比INT大小那樣比較就可以了

4. 如何用C語言編程對字元串進行排序

用strcmp函數(需要包含string.h)可以比較兩個字元串的大小
其他就和數的排序沒什麼兩樣

5. c語言 字元串排序並輸出用string函數

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

void main() {
int i,p;
char a[10][20],string[20];
for(i = 0; i < 10;i++) gets(a[i]);
printf("排序前 :\n");
for(i = 0;i < 10;++i) printf("%s ",a[i]);
printf("\n");
for(p = 9;p > 0;p--) {
for(i = 0;i < p;i++) {
if(strcmp(a[i],a[i + 1]) > 0) {
strcpy(string,a[i]);
strcpy(a[i],a[i + 1]);
strcpy(a[i+1],string);
}
}
}
printf("排序後 :\n");
for(i = 0;i < 10;++i) printf("%s ",a[i]);
printf("\n");
}

6. 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語言字元串排序用string函數擴展閱讀:

scanf函數用法:

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

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

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

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

7. c語言編寫函數strsort實現N個字元串排序

問題比較多:
在交換那裡,不能直接用賦地址來給新串賦值,要給臨時串申請新同大小的空間,然後用strcpy來實現賦值完成交換。
在錄入字元串時,誤用%s,應用%c。或者是p而不是p[i]
下面給個我修改的程序:
#include <stdio.h>
#include <string.h>
#include <malloc.h>

void SortStr(char *a[], int n)
{
char *temp = (char *)malloc(sizeof(char) * 200);

int i, j;

for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++)
if (strcmp(a[i], a[j]) > 0)
{
strcpy(temp, a[j]);
strcpy(a[j], a[i]);
strcpy(a[i], temp);
}

free(temp);
}

int main()
{
char p[200], *q[200];
int n, i;

printf("請輸入字元串個數:");
scanf("%d", &n);
if (n >= 200) {
puts("Overflow!");
return 0;
}

for (i = 0; i < n; i++)
{
scanf("%s", p);
q[i] = (char *)malloc(sizeof(char) * strlen(p));
strcpy(q[i], p);
}

SortStr(q, n);

for (i = 0; i < n; i++)
{
printf("%s\t", q[i]);
free(q[i]);
}
printf("\n");

return 0;
}

8. C語言字元串快速排序函數


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

typedefcharstrLINE[2000];
intstrCMP(constvoid*a,constvoid*b)
{
returnstrcmp((constchar*)a,(constchar*)b);
}
intmain(intargc,char*argv[])
{
strLINE*p;
inti,n;
scanf("%d",&n);
p=malloc(sizeof(strLINE)*n);
for(i=0;i<n;i++)scanf("%s",p[i]);

qsort(p,n,sizeof(strLINE),strCMP);

for(i=0;i<n;i++)printf("%s ",p[i]);

free(p);
return0;
}