還有乙個關於C語言的問題

發布 科技 2024-08-16
2個回答
  1. 匿名使用者2024-02-01

    #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函式之前宣告函式,這是正確的,但不是很正常。 另外,如果在交換函式中使用了交換函式,最好事先宣告它,否則某些編譯器會報錯。

  2. 匿名使用者2024-01-31

    看一下,幾個功能功能沒有錯;

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

相關回答
14個回答2024-08-16

a1.對於文字常量 4,編譯器認為它是 int 和 double,所以雖然 4 3 的值等於,但當它轉換為整數時,它是 1,對於該表示式,它的結果是 double,因此可以保留小數部分。 這個問題所涉及的知識是型別的隱式轉換。 >>>More

6個回答2024-08-16

這麼簡單的問題,你不想想就出來了嗎

9個回答2024-08-16

#include"" ..

main() >>>More

8個回答2024-08-16

樓上的程式很好,我將解釋我是如何獲得每個數字的; 比如 x=123,為了得到 u 的數,你會 x%10,結果是數字 3,然後你會是 x=x 10,x 會變成 12,然後按照這個方法使用迴圈結構,下次你處理 x 的時候,你會處理 12, 那麼同樣的語句會得到 12 2 的單位,那麼迴圈語句的條件是 x=x 10 後,這個 x 變為 0。程式可以參考樓上,但還是建議自己按照這個思路寫,畢竟方法已經知道了。

13個回答2024-08-16

,++類運算子是右繫結原則(不加加的左繫結原則),即*p++的等價物是*(p++)p->next,*+p->next等價。 >>>More