实验10 指针2
1,输入一个字符串和一个正整数x,将该字符串中的后x个字符复制到另一个字符串y中,输出字符串y;再对y串的内容前后倒置后存入数组z中并输出。
要求:用指针访问数组元素、用函数getx(char *c1)实现复制、用函数getr(char *c2)实现倒置。
#include<stdio.h> void getx(char *c1); //调用函数实现复制 void getr(char *c2); //点用函数实现倒置 void main() { char a[99]; //定义一个小于99的数组 puts("Enter a string:"); //输出提示 gets(a); getx(a); } void getx(char *c1) //调用函数getx(char *c1)实现复制 { int n,k=0; int j=0; char temp[99]; puts("Enter an integer:"); scanf("%d",&n); while(*(c1+j)!='\0') { j++; } for(int i=j-n;i<j;i++) { temp[k]=*(c1+i);k++;} temp[k]='\0'; puts("The new string is:"); puts(temp); getr(temp); puts("The invert string is:"); puts(temp); } void getr (char *c2) //调用函数getr (char *c2)实现倒置 { int i=0; char temp[99]; while(*(c2+i)!='\0') { 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\n","转换后的密码为:",line); return 0; } void encrypt(char*s) { for(;*s!='\0';s++) if(*s=='z') *s='a'; else *s=*s+1; }