任务1:
输入一个字符串和一个正整数x,将该字符串中的后x个字符复制到另一个字符串y中,再对y串的内容前后倒置后存入数组z中并输出。
要求:用指针访问数组元素、用函数getx(char *c1)实现复制、用函数getr(char *c2)实现倒置。
运行示例
Enter a string: abcABCD
Enter an integer: 4
The new string is DCBA
#include "stdafx.h"
#include<string.h>
char getx(char *c1)
{
int n;
char b[128],*p;
int x=strlen(c1);
p=b;
printf("Enter an integer:");
scanf_s("%d",&n);
for(int i=0;c1+x-n!='\0';i++)
{
*p = *c1+x-n+i;
p++;
printf_s("%c",*p);
}
*p='\0';
return b[n];
}
void getr(char *c2)
{
int n=strlen(c2);
char t,*p,*i,*j,m=(n-1)/2;
i=c2; //i保存数组第一个指针
j=c2+n-1; //j保存数组最后一个指针
p=c2+m; //p保存中间指针
for(;i<=p;i++,j--)//首尾向中间循环(第一个跟最后个交换,依此类推)
{
t=*i;
*i=*j;
*j=t;
}
}
void main()
{
char a[128],b[128],*p,*q;
p=a;
q=b;
printf("Enter a string:");
gets_s(a);
b[128]=getx(p);
getr(q);
puts(b);
}
----------------------分割线----------------------
任务3:
输入字符串s,将字符放入d数组中,最后输出d中的字符串。
要求:用函数和指针实现
运行示例
输入字符串:abc123edf456gh
输出字符串:abcedfgh
#include "stdafx.h"
void main()
{
char s[128],d[128];
int j=0;
gets_s(s);
for(int i=0;s[i]!='\0';i++)
{
if(s[i]<='z'&&s[i]>='a')
{
d[j]=s[i];
j++;
}
}
d[j]='\0';
puts(d);
}