C語言實現一段漢子的逆置

問題描述:
小張與同學說,他可以倒背金屬元素活動性順序表,編寫程序,將“鉀鈣鈉鎂鋁鋅鐵錫鉛氫銅汞銀鉑金”逆置與原數組中輸出,以便檢查小張倒背情況。(要求本體使用指針作答)

思路:要想將一段漢子逆置你必須清楚一個漢子是相當於兩個字符的,那處理起來就很簡單了,小編當時做此題的時候絞盡腦汁,試了好多遍就是因爲在字符這地方沒有處理好,導致輸出的結果亂碼。此題只用定義兩個指針,一個從首開始,一個從尾開始,套入循環,在互相交換。(代碼中的註釋用題目的實際情況分析)
核心代碼:

#include<stdio.h>
    #include<string.h>
    main()
    {
        char a[]="鉀鈣鈉鎂鋁鋅鐵錫鉛氫銅汞銀鉑金";
        char *p=NULL,*q=NULL;
        int j,t,k;
        printf("正序是: \n\n");
        puts(a);
        j=strlen(a);

        p=a;
        q=a+j-2;   //28
        while(p<q)
        {
            t=*p;*p=*q;*q=t; //字符串長度爲29,把第一個和28換,也就是0換28
            k=*(p+1);*(p+1)=*(q+1);*(q+1)=k;//把1和29換
            p=p+2;q=q-2;    //每次循環跳兩個數,下一次循環是p=3,q=26,因爲每一個漢子佔兩個字符

        }
        printf("倒序後是:\n \n");
        puts(a);
        printf("\n");
    }

運行結果:
金鉑銀汞銅氫鉛錫鐵鋅鋁鎂鈉鈣鉀

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章