任务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<stdio.h>
#include<string.h>
void getx(char *c1)
{
int x;
printf("请输入一个数字\n");
scanf("%d",&x);
char *c2=c1;
int l=strlen(c1);
c2=c2+l-x;
strcpy(c1,c2);
puts(c1);
}
void getr(char *a)
{
char *p=a;
char temp;
a+=strlen(a)-1;
while(p<a)
{
temp=*p;
*p=*a;
*a=temp;
a--;
p++;
}
puts(a-2);
}
int main()
{
char str[20];
printf("请输入一个字符串\n");
gets(str);
getx(str);
getr(str);
}
任务2:
定义一维整形数组,对数组分别进行“由大到小”和"由小到大"排序并输出。
要求:用函数和指针实现排序
----------------------分割线----------------------
#include<stdio.h>
#include<string.h>
int x;
void fun(int *a)
{
int i=0,j=0,temp;
for(i=0;i<x;i++)
{
for(j=0;j<x-i-1;j++)
{
if(*(a+j)>*(a+j+1))
{
temp=*(a+j);
*(a+j)=*(a+j+1);
*(a+j+1)=temp;
}
}
}
for(i=0;i<x;i++)
{
printf("%d ",*(a+i));
}
printf("\n");
for(i=0;i<x;i++)
{
printf("%d ",*(a+x-i-1));
}
printf("\n");
}
int main()
{
int a[20];
printf("输入数组的长度\n");
scanf_s("%d",&x);
printf("输入数组各值\n");
for(int i=0;i<x;i++)
{
scanf_s("%d",&a[i]);
}
fun(a);
}
任务3:
输入字符串s,将字符放入d数组中,最后输出d中的字符串。
要求:用函数和指针实现
运行示例
输入字符串:abc123edf456gh
输出字符串:abcedfgh
#include<stdio.h>
void fun(char *a)
{
char d[20];
int i=0;
while(*a!='\0')
{
if((*a>=65&&*a<=90)||(*a>=97&&*a<=122)||(*a==' '))
{
d[i]=*a;
i++;
}
a++;
}
d[i]='\0';
puts(d);
}
int main()
{
char str[20];
gets(str);
fun(str);
}