任务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>
#define N 20
void getx(char *a,char *y,int n);
void getr(char *y,char *z);
int main(void)
{
char a[N],y[N],z[N];
printf("Enter a string: \n");
gets(a);
int n;
printf("Enter an integer: \n");
scanf("%d",&n);
getx(a,y,n);
getr(y,z);
}
void getx(char *a,char *y,int n)
{
char *p=a;
while(*p!='\0')p++;
p-=n;
strcpy(y,p);
printf("复制后的新数组 \n");
puts(y);
}
void getr(char *y,char *z)
{
char *p=y;
int i=0;
while(*p!='\0')p++;
while(p--!=y){
z[i]=*p;
i++;
}
z[i]='\0';
printf("反转后的新数组 \n");
puts(z);
}
运行效果截图:
——————————————————————————————————————————————————
任务2:
定义一维整形数组,对数组分别进行“由大到小”和"由小到大"排序并输出。
要求:用函数和指针实现排序
我的程序:
#include<stdio.h>
#include<string.h>
int n;
void sorttomax(int *arr,int n);
void sorttomin(int *arr);
int main(void)
{
printf("请输入数组大小:\n");
scanf("%d",&n);
int arr[5];
printf("请输入%d个元素:\n",n);
for(int i=0;i<n;i++)
scanf("%d",&arr[i]);
sorttomax(arr,n);
sorttomin(arr);
return 0;
}
void sorttomax(int *arr,int n)
{
int *p=arr;
int temp;
for(int i=0;i<n;i++)
for(int j=1+i;j<n;j++)
if(*(p+i)<*(p+j)) {
temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
}
printf("由大到小排序并输出:\n");
for(int i=0;i<n;i++)
printf("%d\n",*(p+i));
}
void sorttomin(int *arr)
{
int *p=arr+n;
printf("由小到大排序并输出:\n");
while(p--!=arr)printf("%d\n",*p);
}
运行效果截图:
——————————————————————————————————————————————————
任务3:
输入字符串s,将字符放入d数组中,最后输出d中的字符串。
要求:用函数和指针实现
运行示例
输入字符串:abc123edf456gh
输出字符串:abcedfgh
我的程序:
#include<stdio.h>
#include<string.h>
#define N 20
int main(void){
char a[N];
char *p=a;
gets(a);
while(*p!='\0')
{
if((*p>=48&&*p<=57))
strcpy(p,p+1);
else p++;
}
puts(a);
}
运行效果截图: