第十次实验任务

来源:互联网 发布:龙虎榜数据分析软件2.3 编辑:程序博客网 时间:2024/04/30 14:19
任务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 20void 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[n];    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 20int 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); }