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

C語言子串排序輸出

發布時間: 2022-09-11 03:59:50

c語言:輸入三個字元串並按字母順序排序後輸出

我不大會改程序,這是我寫的程序,我試過可以了,與你的要求符舍。
#include <stdio.h>
#include <string.h>
void main()
{
void ex(char *n[]);
char *name[3];
char a[10],b[10],c[10];
int i;
name[0]=a;
name[1]=b;
name[2]=c;
for(i=0; i<3; i++)
scanf("%s",name[i]);
ex(name);
printf("\n");
for(i=0; i<3; i++)
printf("%s\n",name[i]);
}

void ex(char *n[])
{
char *temp;
int i,j;
for(i=0; i<2; i++)
for(j=i+1; j<3; j++)
if(strcmp(n[i],n[j])>0)
{strcpy(temp,n[i]);
strcpy(n[i],n[j]);
strcpy(n[j],temp);
}
getchar();
}
問題
1.strcmp返回值是大小,但你用if(strcmp(*n[i],*n[j]))
的話只會檢查是否等於0,不等於0則執行後面。。
所以應該是if(strcmp(*n[i],*n[j]>0).
2.for(j>i; j<3; j++) 在fork中沒有j>i的寫法改一下就行了
3.數組之間的交換不能用=的方式,要用strcpy語句
這是我個人的看法,還有問題寫我聯系,我QQ:452497054
有興趣的話交個朋友

Ⅱ C語言 對輸入的n個字元串進行排序,並輸出(排序過程中會改變字元串真正的存放位置)

#include<stdio.h>
#include<string.h>
void main ()
{
char s[10][100],t[100];//用二維數組最大輸入10個字元串,T為裝字元串的數組
int n=0,i,j,k;
scanf("%d",&n);//輸入次數
for(i=0;i<n+1;i++){//輸入n次字元串//是i<n+1,不是i<n,也可以改為i<=n
gets(s[i]);
}
for(i=0;i<n+1;i++)//掃描5次字元串組
{
for(j=i+1;j<n+1;j++)
{
if(strcmp(s[i],s[j])>0)//從小到大排列
{
strcpy(t,s[i]);//數組賦值用strcpy不能用=這個方式
strcpy(s[i],s[j]);
strcpy(s[j],t);
}
}
}
for(i=0;i<n+1;i++){//是i<n+1,不是i<n,也可以改為i<=n
puts(s[i]);
}
}

Ⅲ C語言(1)輸入1個字元串,對該字元串按字元大小從小到大的順序排序,然後輸出這個已經排好序的字元串。

#include<stdio.h>
int main( )
{char s[100],*p,*p1,*p2,c;
gets(s); //讀取字元串
for(p=s;*p;p++); //求得串長,p指向'\0'
p--; //冒泡排序外循環終點
for(p1=s;p1<p;p1++,p--) //此二重循環為冒泡排序
for(p2=s;p2<p;p2++)
if(*p2>*(p2+1))
{c=*p2;*p2=*(p2+1);*(p2+1)=c;}
puts(s);
return 0;
}

程序2:
#include<stdio.h>
int main( )
{char s1[100],s2[100],s3[200],s4[200],*p,*p1,*p2;
gets(s1); //讀取二個字元串
gets(s2);
for(p=s1,p1=s3;*p;) //復制s1到s3前部
*(p1++)=*(p++);
for(p=s2;*p;) //復制s2到s3後部
*(p1++)=*(p++);
*p1=*p; //設置字元串尾
for(p=s2,p1=s4;*p;) //復制s2到s4前部
*(p1++)=*(p++);
for(p=s1;*p;) //復制s1到s4後部
*(p1++)=*(p++);
*p1=*p; //設置字元串尾
for(p1=s3,p2=s4;*p1==*p2;p1++,p2++); //比較s3與s4逐個字元的大小,直到遇到不同的字元
if(*p1>*p2)puts(s3); //輸出較大字元所在的字元串
else puts(s4);
return 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]);}。

運行代碼:

(4)C語言子串排序輸出擴展閱讀

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

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

1
輸入字元串;
2
對字元串進行排序;
3
輸出。
排序中需要注意:
1
用strcmp比較字元串;
2
用strcpy執行字元串的賦值。
代碼如下:
#define N 50
int main()
{
char s[N][100];
int i,j;
for(i = 0; i < N; i ++)
scanf("%s",s[i]);
for(i = 0; i < N-1; i ++)
{
for(j = i+1; j < N; j ++)
{
if(strcmp(s[i],s[j])>0)
{
char t[100];
strcpy(t,s[i]);
strcpy(s[i],s[j]);
strcpy(s[j],t);
}
}
}
for(i = 0; i < N; i ++)
puts(s[i]);
}

Ⅵ C語言編程題: 輸入10個字元串,將其從大到小排序後輸出。

#include<stdio.h>

void swap1(int *p,int n){

int temp;

for(int i=0;i<n-1;i++)

for(int j=i+1;j<n;j++)

if(p[i]>p[j]){

temp=p[i];

p[i]=p[j];

p[j]=temp;

}

}

void swap2(int *p,int n){

int temp;

for(int i=0;i<n-1;i++)

for(int j=i+1;j<n;j++)

if(p[i]<p[j]){

temp=p[i];

p[i]=p[j];

p[j]=temp;

}

}

int main(){

char n;int a[15];

while(~scanf("%c",&n)){

for(int i=0;i<10;i++){

scanf("%d",&a[i]);

}

getchar();

if(n=='A') swap1(a,10);

else swap2(a,10);

for(int i=0;i<10;i++){

if(i==0)printf("%d",a[i]);

else printf(" %d",a[i]);

}

printf(" ");

}

}

運行效果:

(6)C語言子串排序輸出擴展閱讀:

printf函數使用注意事項

1、域寬

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

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

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

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

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

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

2、轉義字元

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

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

Ⅶ C語言編程題,輸入5個字元串,然後排序

#define LINEMAX 20/*定義字元串的最大長度*/

int main()

{int i;

char**p,*pstr[5],str[5][LINEMAX];

for(i=0;i&lt;5;i++)

pstr&lt;i&gt;=str&lt;i&gt;;/*將第i個字元串的首地址賦予指針數組pstr的第i個元素*/

printf("input 5 strings: ");

for(i=0;i&lt;5;i++)

scanf("%s",pstr&lt;i&gt;);

p=pstr;

sort(p);

printf("strings sorted: ");

for(i=0;i&lt;5;i++)

printf("%s ",pstr&lt;i&gt;);

}

sort(char**p)/*冒泡法對5個字元串排序函數*/

{int i,j;

char*temp;

for(i=0;i&lt;5;i++)

{for(j=i+1;j&lt;5;j++)

{if(strcmp(*(p+i),*(p+j))&gt;0)/*比較後交換字元串地址*/

{temp=*(p+i);

*(p+i)=*(p+j);

*(p+j)=temp;

}

}

}

return 0;

}

(7)C語言子串排序輸出擴展閱讀:

printf()函數的調用格式為:printf("&lt;格式化字元串&gt;",&lt;參量表&gt;)。

其中格式化字元串包括兩部分內容:一部分是正常字元,這些字元將按原樣輸出;另一部分是格式化規定字元,以"%"開始,後跟一個或幾個規定字元,用來確定輸出內容格式。

參量表是需要輸出的一系列參數,其個數必須與格式化字元串所說明的輸出參數個數一樣多,各參數之間用","分開,且順序一一對應,否則將會出現意想不到的錯誤。

比如:

int a=1234;

printf("a=%d ",a);

輸出結果為a=1234。

scanf()是C語言中的一個輸入函數。與printf函數一樣,都被聲明在頭文件stdio.h里,因此在使用scanf函數時要加上#include&lt;stdio.h&gt;。

int scanf(const char*restrict format,...);

函數scanf()是從標准輸入流stdin(標准輸入設備,一般指向鍵盤)中讀內容的通用子程序,可以說明的格式讀入多個字元,並保存在對應地址的變數中。

如:

scanf("%d%d",&a,&b);

函數返回值為int型,如果a和b都被成功讀入,那麼scanf的返回值就是2。

Ⅷ C語言題:將一組字元串按字典順序輸出。(通過函數調用完成)

將一組字元串按字典順序輸出的源代碼如下:

#include <stdio.h>

int main ()

{

char name[40] ; //聲明一個叫name的儲存空間,數組的元素數目是40

printf("what is your name ? ");//轉化說明字元/n換行

scanf("%s,name");//輸入一個字元串,使用了%s的轉化修飾符,表示輸入字元串

printf("hello,%s. ",name);//輸出字元串

return 0;

}

(8)C語言子串排序輸出擴展閱讀

1、兩個字元串,如果兩個字元串相等,則返回0;若str1大於str2(對於大於的理解,是指從兩個字元串的第一個字元開始比較,若兩個字元相同,則繼續比較,若發現兩個字元不相等。

2、對於將數字轉換為字元串,c標准中並沒有定義。c標准中沒有定義的原因我覺得是數字轉成字元串可以使用sprintf格式化輸出函數來完成。

Ⅸ C語言程序:將若干字元串按字母順序(由小到大)輸出

兩個程序代碼都可以,教材中的代碼相比較效率要高,因為教材中的演算法每次遇到字元串小的只是單純 對k賦值一次,而你的是每次都要交換數值(指針),假設最終交換了2次,對賦值而言教材演算法運行2+1次,你的是3*2次

Ⅹ 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;

}

運行效果:

(10)C語言子串排序輸出擴展閱讀:

scanf函數用法:

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

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

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

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