問題描述:
小張與同學說,他可以倒背金屬元素活動性順序表,編寫程序,將“鉀鈣鈉鎂鋁鋅鐵錫鉛氫銅汞銀鉑金”逆置與原數組中輸出,以便檢查小張倒背情況。(要求本體使用指針作答)
思路:要想將一段漢子逆置你必須清楚一個漢子是相當於兩個字符的,那處理起來就很簡單了,小編當時做此題的時候絞盡腦汁,試了好多遍就是因爲在字符這地方沒有處理好,導致輸出的結果亂碼。此題只用定義兩個指針,一個從首開始,一個從尾開始,套入循環,在互相交換。(代碼中的註釋用題目的實際情況分析)
核心代碼:
#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");
}
運行結果:
金鉑銀汞銅氫鉛錫鐵鋅鋁鎂鈉鈣鉀