实验10 指针2
1、输入一个字符串和一个正整数x,将该字符串中的后x个字符复制到另一个字符串y中,输出字符串y;再对y串的内容前后倒置后存入数组z中并输出。
要求:用指针访问数组元素、用函数getx(char *c1)实现复制、用函数getr(char *c2)实现倒置。
运行示例
Enter a string: abcABCD
Enter an integer: 4
The new string is: ABCD
The invert string is: DCBA
#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]='\0'; printf("%s\n",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]='\0'; printf("%s\n",m); }
2、为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。变换规则是:小写字母z变换成为a,其它字符变换成为该字符ASCII码顺序后1位的字符,比如o变换为p。
要求输入一个字符串(少于80个字符),输出相应的密文;要求定义和调用函数encrypt(s),该函数将字符串s变换为密文。