zoukankan      html  css  js  c++  java
  • C:函数:功能:实现字符数组中所有字母的倒序存放并输出

    前两天小测碰到一道题,建立一个函数,功能:实现字符数组中所有字母的倒序存放并输出,一开始觉得简单跟数字数组差不多,运行一下发现很多格式错误,这些是不必要的错误,现在就来说下,先说一下代码思路:定义一个字符数组假如有n个字符,让一个指针变量*p指向首地址,*(p+n-1)就是末地址,然后实现*p与*(p+n-1)值的互换,这边让*q=*(p+n-1)每换一次,p++,q--,当p>q时退出循环,我们来看下代码:

     1 #include "stdio.h"
     2 char change(char *p,int y);
     3 void main()
     4 {
     5     char a[6]="abcdef";
     6     change(a,6); 
     7     printf("%s",a);
     8 }
     9 char change(char *p,int y)
    10 {
    11     char *q;
    12     int temp;//这边比较容易错,有的定性思维,会定义成char类型;
    13     q=p+y-1;
    14     while(p<q)
    15     {
    16         temp=*p;
    17         *p=*q;
    18         *q=temp;
    19         p++;
    20         q--;
    21         }
    22 }

    这边只是令n=6,看的更清晰一点,要复杂一点的话,我们也可以自己输入字母,想要几个就几个,这次我用gets()来输入,假如输入n个,那我们怎么知道这个n的值,我们可以先定义*p1让p=a,既指向首地址,要是超过末地址也就是*(p+n)==0,这就给我们一个结束循环的条件:

    #include "stdio.h"
    void main()
    {
        char a[1000];
        gets(a);
        char *p;
        int i,n;
        i=0;
        p=a;
        while(*(p+i)!=0)
        {
            i++;
            
        }
        n=i;
        printf("%d",n);
    }

    上面代码可以求出我们手动输入字母的个数再加上change()函数就可以了:

    #include "stdio.h"
    char change(char *p,int y);
    void main()
    {
        char a[1000];
        printf("input letter:
    ");
        gets(a);
        char *p1;
        int i,n;
        i=0;
        p1=a;
        while(*(p1+i)!=0)//超出地址结果为0
        {
            i++;
        }
        n=i;
        change(a,n);
        printf("output:
    %s",a);
    }
    char change(char *p,int y)
    {
        char *q;
        int temp;
        q=p+y-1;
        while(p<q)
        {
            temp=*p;
            *p=*q;
            *q=temp;
            p++;
            q--;
            }
    }

    运行结果:,要是数字数组的话也是差不多的。

  • 相关阅读:
    .NET Page对象各事件执行顺序
    允许webservice远程在ie里面调用配置方法
    sea.js模块化编程
    atom配置web开发环境
    CSS代码规范
    HTML DOM总结
    10分钟写一个markdown编辑器
    sea.js详解
    圣杯布局 双飞翼布局
    Spring学习(1)
  • 原文地址:https://www.cnblogs.com/doudoublog/p/5041450.html
Copyright © 2011-2022 走看看