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");
    }

运行结果:
金铂银汞铜氢铅锡铁锌铝镁钠钙钾

猜你喜欢

转载自blog.csdn.net/jmj18756235518/article/details/79888135