C語言,在C 環境下執行「輸入字串,按由小到大的順序輸出」用指標的方法,請高手指點

時間 2022-02-05 09:45:04

1樓:

你的程式排序結果是對的呀!怎麼不對了?

你是不是對字串比大小不太瞭解啊?

「abc">"abboijuoiuj」,因為c>b,所以第二個字串第二個b後面就算有幾億個字元,也比第一個字元小。

字串比大小是逐個字元比較的。小寫》大寫,如a>a;從a到z一次增大。

例如:abc,abbc,aabzzzzzz比大小,

1步.先比較第一個字元,大家都是a,不能比較出來,就看下一個字元,

2步.aabzzzzzz的第二個字元是a,其他的第二個字元都是b,那後面就不比了,aabzzzzzz就是最小了,哪怕它再長,也是最小;

3步.還剩abc和abbc比大小,同理,abc第三個字元是c,比abbc的第三個字元b大,所以abc>abbc

最後結果是:aabzzzzzzabbc>abc,那就從長度上做文章吧!

預設的比大小規則是我說的那種。不知對你有幫助沒。你的程式是對的!

2樓:匿名使用者

這題無非就是要你實現一個strcmp的函式這是核心裡的

int strcmp(const char *cs, const char *ct)

return 0;}

3樓:

首先你用指標的目的是什麼?是想不浪費空間嗎?如果不是的話

只要改成

char *s1,*s2,*3,*s;

s = (char*)malloc(sizeof(char)*50);

s1 = (char*)malloc(sizeof(char)*50);

s2 = (char*)malloc(sizeof(char)*50);

s3 = (char*)malloc(sizeof(char)*50);

其他操作一樣

最後加上free(s);free(s1);free(s2);free(s3);

我按照我自己風格編了一下

#include

#include

#include

void main()

printf("輸入三個字串:\n");

gets(str[0]);

gets(str[1]);

gets(str[2]);

if(strlen(str[0])>strlen(str[1]))

if(strlen(str[0])>strlen(str[2]))

if(strlen(str[1])>strlen(str[2]))

printf("按由小到大的順序輸出為:\n");

printf("%s\n%s\n%s\n",str[0],str[1],str[2]);

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

free(str[i]);}

C語言字串問題,C語言字元陣列與字串問題

字串初始化,如果逐個賦值的話,系統不是會自動新增 0 嗎不是。圖一就是長度為4的陣列,圖二長度為5圖三會是新增 0,但是是會把後面所有的都設為 0因為圖一和圖四不以 0結尾,所以不能用strlen和strcmp,會越界 圖四也可以用char str 4 stop 這樣賦值。如果不手動加長度就會是5了...

C語言 輸入字串,然後逆序輸出

橘落淮南常成枳 可以將整數當做字串 字串長度不超過10 接收,然後反向輸出字元陣列元素即可。字串實際長度可以用strlen函式來計算。方法程式如下 include include main 杜哥是個小天才 include int main int len,i char str 100 gets st...

字串排序C語言程式設計,C語言程式設計題 輸入10個字串,將其從大到小排序後輸出。

include include define n 10 void main for i 0 i include include int main void void sort char s 11 c語言程式設計題 輸入10個字串,將其從大到小排序後輸出。include include void ma...