实验十

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

#include<stdio.h>
#include<string.h>
void getx(char *c1);
void getr(char *c2);
int n;
int main()
{
    char str1[80];
    printf("请输入字符串1:");
    gets(str1);
    printf("Enter a integer:");
    scanf("%d",&n);
    getx(str1);
    getr(str1);
    return 0;
}
void getx(char *c1){
    char y[80];
    int i=0,len=strlen(c1);
    for(i=0;i<n;i++){
        y[i]=*(c1+len-n+i);
    }
    y[n]='\0';
    printf("The new string is:%s\n",y);
}
void getr(char *c2){
    char z[80];
    int i=0,len=strlen(c2);
    int m=n;
    while(m--!=0){
        z[i]=*(c2+len-1-i);
        i++;
    }
    z[n]='\0';
    printf("The invert string is:%s\n",z);
}

 

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

#include<stdio.h>
#include<string.h>
void encrypt(char *s);
int main()
{
    char str[80];
    
    printf("请输入一串字符:");
    gets(str);
    encrypt(str);
    printf("After being encrypted:%s\n",str);
    return 0;
}
void encrypt(char *s){
    for(;*s!='\0';s++)
        if(*s=='z')
            *s='a';
        else
            *s=*s+1;
}

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

     要求:

  • n大于30;
  • 输出每次退出人的编号
  • 输出最后留下人的编号
#include<stdio.h>
#define MAXLINE 200
int main()
{
    int a[MAXLINE];
    int i,n,count=0,index;
    
    printf("Input a number:");
    scanf("%d",&n);
    index=n;
    for(i=0;i<n;i++){
        a[i]=0;
    }
    i=0;
    while(n>1){
        if(a[i]==0){
            count++;
            if(count==3){
                a[i]=1;
                printf("%d号退出\n",i);
                n--;
                count=0;
            }
        }
        i++;
        if(i==index)
            i=0;
    }
    for(i=0;i<index;i++){
        if(a[i]==0)
            printf("最后留下人的编号:%d",i);
    }
    return 0;
}

 

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

#include<stdio.h>
#include<string.h>
void change(char *s);
int main()
{
    char str[80];
    printf("Enter a word:");
    gets(str);
    change(str);
    return 0;
}
void change(char *s){
    char y[80],op;
    int len=strlen(s);
    op=*(s+len-1);
    switch(op){
        case 'y':
            *(s+len-1)='i';
            *(s+len)='e';
            *(s+len+1)='s';
            break;
        case 's':
            *(s+len)='e';
            *(s+len+1)='s';
            break;
        case 'x':
            *(s+len)='e';
            *(s+len+1)='s';
            break;
        case 'h':
            if(*(s+len-2)=='s'||*(s+len-2)=='c'){
                *(s+len)='e';
                *(s+len+1)='s';
                break;
            }
            else{
                *(s+len)='s';
                break;
            }
           case 'o':
               *(s+len)='e';
            *(s+len+1)='s';
            break;
           default:
               *(s+len)='s';
               break;
    }
    printf("变复数以后:%s\n",s);
}

 

 

posted @ 2013-11-11 09:51  执于一念  阅读(174)  评论(0编辑  收藏  举报