-
#include
#include
void swap(char *p1,char *p2);
void exchange(char *q1,char *q2,char *q3);
int main()
char a1[20],a2[20],a3[30],*p2,*p1,*p3;
scanf("%s%s%s",a1,a2,a3);
p1=a1;
p2=a2;
p3=a3;
exchange(p1,p2,p3);
printf("%s,%s,%s",a1,a2,a3);
return 0;
void exchange(char *q1,char *q2,char *q3)
void swap(char *pt1,char *pt2);
if(strcmp(q1,q2)>0) swap(q1,q2);
if(strcmp(q1,q3)>0) swap(q1,q3);
if(strcmp(q2,q3)>0) swap(q2,q3);
void swap(char *p1,char *p2)
char p[20];
strcpy(p,p1);
strcpy(p1,p2);
strcpy(p2,p);
字串的輸入和輸出都是基於字元陣列的名稱,最好在main函式之前宣告函式,這是正確的,但不是很正常。 另外,如果在交換函式中使用了交換函式,最好事先宣告它,否則某些編譯器會報錯。
-
看一下,幾個功能功能沒有錯;
在 main 函式中分配三個字串變數存在問題。
A1、A2、A3 是 20 個位元組,但您的輸入是位 20,那麼只有輸入字串的長度大於 1,那麼它就會越界。
修改如下:int main()。
void exchange(char *q1,char *q2,char *q3);
char a1[20],a2[20],a3[30],*p2,*p1,*p3;
scanf("%s%s%s",a1,a2,a3);
exchange(p1,p2,p3);
printf("%s,%s,%s",a1,a2,a3);
return 0;
a1.對於文字常量 4,編譯器認為它是 int 和 double,所以雖然 4 3 的值等於,但當它轉換為整數時,它是 1,對於該表示式,它的結果是 double,因此可以保留小數部分。 這個問題所涉及的知識是型別的隱式轉換。 >>>More
樓上的程式很好,我將解釋我是如何獲得每個數字的; 比如 x=123,為了得到 u 的數,你會 x%10,結果是數字 3,然後你會是 x=x 10,x 會變成 12,然後按照這個方法使用迴圈結構,下次你處理 x 的時候,你會處理 12, 那麼同樣的語句會得到 12 2 的單位,那麼迴圈語句的條件是 x=x 10 後,這個 x 變為 0。程式可以參考樓上,但還是建議自己按照這個思路寫,畢竟方法已經知道了。