zoukankan      html  css  js  c++  java
  • 实验10 指针2

     1、输入一个字符串和一个正整数x,将该字符串中的后x个字符复制到另一个字符串y中,输出字符串y;再对y串的内容前后倒置后存入数组z中并输出。
         要求:用指针访问数组元素、用函数getx(char *c1)实现复制、用函数getr(char *c2)实现倒置。

    #include<stdio.h>     
    #define N 100     
    void getx(char *c1);    
    void getr(char *c2);    
    int main(void)   
    {    
        char a[N];    
    puts("输入一个字符串:");    
    gets_s(a);    
    getx(a);    
    }    
    void getx(char *c1)    
    {    
        int n,k=0;int j=0;char temp[N];    
    puts("输入变换的位数:");    
    scanf_s("%d",&n);    
    while(*(c1+j)!='')      
    {    
        j++;}     
    for(int i=j-n;i<j;i++)      
    {    
        temp[k]=*(c1+i);    
    k++;    
    }     
    temp[k]='';    
    getr(temp);    
    puts("变完之后的结果: ");    
    puts(temp);    
    }     
    void getr(char *c2)     
    {    
        int i=0;      
    char temp[N];      
    while(*(c2+i)!='')      
    {    
        i++;}      
    for(int j=0;j<i;j++)      
    {    
        temp[i-j-1]=*(c2+j);    
    }      
    for(int k=0;k<i;k++)      
    {    
        *(c2+k)=temp[k];    
    }      
    } 

    2、为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。变换规则是:小写字母z变换成为a,其它字符变换成为该字符ASCII码顺序后1位的字符,比如o变换为p。
         要求输入一个字符串(少于80个字符),输出相应的密文;要求定义和调用函数encrypt(s),该函数将字符串s变换为密文。

    #include<stdio.h>
    #include<string.h>                    //定义字符串
    #define MAXLINE 80                    //不超过80字符
    void encrypt(char*);
    int main(void)
    {
        char line[MAXLINE];              //字符数组line用于存放输入的字符串
        printf("输入电码明文:");
        gets_s(line);
        encrypt(line);                     //调用加密指针encrypt
        printf("%s%s
    ","转换后的密码为:",line);
        return 0;
    }
    void encrypt(char*s)                 
    {
        for(;*s!='';s++)
            if(*s=='z')
                *s='a';
            else *s=*s+1;
    }

     3、请编一个程序,可以将英语规则名词由单数变成复数。已知规则如下:
         (a)以辅音字母y结尾,则将y改成i,再加es;
         (b)以s、x、ch、sh结尾,则加es;
         (c)以元音字母o结尾,则加es;
         (d)其他情况直接加s。
         要求用键盘输入英语规则名词,屏幕输出该名词的复数形式。

    #include<stdio.h>
    #include<string.h>
    void fushu(char *p);       //定义求复数的指针函数
    int main(void)
    {
        char str[80];
        printf("请输入一个英语单词:");
        scanf_s("%s",str);     //输入英语单词
        fushu(str);
        puts(str);            //从键盘输入
        return 0;
    }
    void fushu(char *p)          //调用指针函数
    {
    int i,j=0;                   //循环至最后一位字母
    for(i=0;*(p+i)!='';i++){
        j++;
    }
    if(*(p+j-1)=='y'){          //若以y结尾,加es
        *(p+j)='e';
            *(p+j+1)='s';
            *(p+j+2)='';
        }
    
        //若以s,x,ch,sh结尾,加es
    else if((*(p+j-1)=='s')||(*(p+j-1)=='x')||((*(p+j-2)=='c')&&(*(p+j-1)=='h'))||((*(p+j-2)=='s')&&(*(p+j-1)=='h'))){
            
            *(p+j)='e';
            *(p+j+1)='s';
            *(p+j+2)='';
        }
        else if(*(p+j-1)=='o'){  //若以o结尾,加es
            *(p+j)='e';
            *(p+j+1)='s';
            *(p+j+2)='';
        }
        else{                      //否则,直接加s
            *(p+j)='s';
            *(p+j+1)='';
        }
    }

    4、有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数,报数3的人退出圈子,下一个人从1开始重新报数,报数3的人退出圈子。如此循环,直到留下最后一个人。

         要求:

    • n大于30;
    • 输出每次退出人的编号
    • 输出最后留下人的编号
    #include<stdio.h>
    int main(void)
    {
        int i,j,n,count,a[100];   //count=退出人数,j=报数值
        printf("输入n:");       //输入n个人数
        scanf_s("%d",&n);
        for(i=0;i<=n;i++)
            a[i]=i;              //编号
        count=0;
        i=1;
        j=0;
        while(count<n){    
             
            if(i>n)i=1;             //循环完一遍后,重新从第一个开始
            if(a[i]!=0)
                j++;
            if(j==3)
                
            {
                
                printf("%3d	",i);
                a[i]=0;
                j=0;
                count++;
            }
            i++;
        }
        printf("
    ");
    }

  • 相关阅读:
    杭电 2602 Bone Collector
    Log4cpp介绍及使用
    DirectSound的应用
    unity3d 中加入�视频
    Android手机分辨率基础知识(DPI,DIP计算)
    MVC中使用AuthorizeAttribute做身份验证操作
    Java正則表達式入门
    使用Java高速实现进度条
    微软历史最高市值是多少?
    android 怎样内置/预置/预编译文件(运行程序,应用程序,apk, jar, lib 等随意文件)到系统中
  • 原文地址:https://www.cnblogs.com/laurenliu1994/p/3422607.html
Copyright © 2011-2022 走看看