问题描述:
小张与同学说,他可以倒背金属元素活动性顺序表,编写程序,将“钾钙钠镁铝锌铁锡铅氢铜汞银铂金”逆置与原数组中输出,以便检查小张倒背情况。(要求本体使用指针作答)
思路:要想将一段汉子逆置你必须清楚一个汉子是相当于两个字符的,那处理起来就很简单了,小编当时做此题的时候绞尽脑汁,试了好多遍就是因为在字符这地方没有处理好,导致输出的结果乱码。此题只用定义两个指针,一个从首开始,一个从尾开始,套入循环,在互相交换。(代码中的注释用题目的实际情况分析)
核心代码:
#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");
}
运行结果:
金铂银汞铜氢铅锡铁锌铝镁钠钙钾