• 实验10


    #include<stdio.h>
    #include<string.h>
    void getx(char *c1);
    void getr(char *c2);
    int x;
    int main(void)
    {
        char s[80];
        printf("enter a string:");
        gets(s);
        printf("enter an integer:");
        scanf("%d",&x);
        printf("the new string is:");
        getx(s);//由这个函数可以指出指针c1已经指向了s;
        printf("the invert string is:");
        getr(s);//同理;
        return 0;
    }
    void getx(char *c1)
    {
        char z[80];//再次定义一个数组用来存放复制后的;
        int i,y;
        y=strlen(c1);//y是数组s的长度。
        for(i=0;i<x;i++)
        {
            z[i]=*(c1+y-x+i);//因为是从第x个字符开始。数组的长度减去x再加上i的值就是ci向后那么多个数组。
        }
        z[x]='';
        printf("%s
    ",z);
    }
    void getr(char *c2)
    {
        char m[80];//用来存放倒叙输出后的值
        int i,a;
        a=strlen(c2);//a数组s的长度
        for(i=0;i<x;i++)
        {
            m[i]=*(c2+a-1-i);//x-1-i是从倒数的开始
        }
        m[x]='';
        printf("%s
    ",m);
    }

    #include<stdio.h>
    #include<string.h>
    void encrypt(char *);//运用全局变量定义
    int main(void)
    {
        char s[80];
        printf("Input the string:");
        gets(s);//运用gets这个函数输入字符串数组
        encrypt(s);
        printf("密文:%s
    ",s);
        return 0;
    }
    void encrypt(char *a)
    {
        for(;*a!='';a++)
            if(*a=='z')
                *a='a';
            else
                *a=*a+1;
    }

    #include<stdio.h>
    #include<string.h>
    void ccc(char *p);
    int main(void)
    {
        char s[80];
        printf("enter s:");
        gets(s);//输入数组
        ccc(s);//利用自定义函数
        puts(s);//输出数组
        return 0;
    }
    void ccc(char *p)
    {
        char ch;//ch是指最后的位数
        int x;//x是字符串数组的长度
        x=strlen(p);
        ch=*(p+x-1);//最后一位
        //运用switch语句进行判断最后一位是否正确
        switch(ch){
            case'y':
                *(p+x-1)='i';
                *(p+x)='e';
                *(p+x+1)='s';
                *(p+x+2)='';
                break;
            case's':
                *(p+x)='e';
                *(p+x+1)='s';
                *(p+x+2)='';
                break;
            case'x':
                *(p+x)='e';
                *(p+x+1)='s';
                *(p+x+2)='';
                break;
            case'o':
                *(p+x)='e';
                *(p+x+1)='s';
                *(p+x+2)='';
                break;
            case'h':
                if((*(p+x-2)='s')||(*(p+x-2)='c')){
                    *(p+x)='e';
                    *(p+x+1)='s';
                    *(p+x+2)='';
                    break;
                }
                else{
                    *(p+x)='s';
                    *(p+x+1)='';
                    break;
                }
            default:
                *(p+x)='s';
                *(p+x+1)='';
                break;
        }
    }

    //4、有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数,报数3的人退出圈子,下一个人从1开始重新报数,报数3的人退出圈子。如此循环,直到留下最后一个人。要求:
    //n大于30;
    //输出每次退出人的编号
    //输出最后留下人的编号
    #include<stdio.h>
    int main(void)
    {
        int i,n,m;//n大于30
        int k=0;//k是1,2,3循环时的指标。
        printf("enter n:");
        scanf("%d",&n);
        int a[80];
        int *p;
        p=a;//指针指向数组a
        for(i=0;i<n;i++){
            *(p+i)=i+1;//给数组赋值
        }
        i=0;
        m=n;
        while (m>1){
            if(*(p+i)!=0)
                k++;//不断向后编号;
            if(k==3)
            {
                printf("退出的是%d
    ",i);//输出数组的下标
                m--;//退出一个,m减少一个;
                k=0;//重新开始计算k
                *(p+i)=0;
            }
            i++;
            if(i==n){
                i=0;
            }
        }
        for(i=0;i<n;i++){
            if(*(p+i)!=0)
            printf("最后的是%d
    ",i);
        }
        return 0;
    }

     虽然要求30以上,不过太大了。。。我还是用8举个例子

  • 相关阅读:
    近来感受
    GIT相关命令
    CMMI评审总结
    Windows下Git Bash的设置
    PHP学习三--常用运算符和结构语句
    PHP学习二--常量
    MYSQL基础十一--存储引擎
    MYSQL基础十--存储过程
    MYSQL基础九--自定义函数
    MYSQL基础八--子查询和连接
  • 原文地址:https://www.cnblogs.com/xuqiongxiang/p/3422672.html
Copyright © 2020-2023  润新知