任务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); void getr(char *c2); int main() { char str1[20]; printf("Enter a string:"); gets(str1); printf("Enter an integer:"); getx(str1); return 0; } void getx(char *c1) { int n,i,j=0,r=0; char str2[20]; scanf("%d",&n); while(*(c1+j)!='\0') { j++; } for(i=j-n;i<j;i++) { str2[r]=*(c1+i); r++; } str2[r]='\0'; getr(str2); puts("The new string is "); puts(str2); } void getr(char *c2) { int i=0; char str2[20]; while(*(c2+i)!='\0') { i++; } for(int j=0;j<i;j++) { str2[i-j-1]=*(c2+j); } for(int r=0;r<i;r++) { *(c2+r)=str2[r]; } }
运行结果截图:
----------------------分割线----------------------
任务2:
定义一维整形数组,对数组分别进行“由大到小”和"由小到大"排序并输出。
要求:用函数和指针实现排序
我的程序:
#include<stdio.h> void r(int *a,int n) ; void p(int *a,int n) ; void main() { int n=5,i,a[30]; for(i=0;i<n;i++) { scanf("%d",&a[i]); } r(a,n); for(i=0;i<n;i++) { printf("%d\t",a[i]); } printf("\n"); p(a,n); for(i=0;i<n;i++) { printf("%d\t",a[i]); } } void r(int *a,int n) { int i,j,temp; for(i=1;i<n;i++) { temp=*(a+i); j=i-1; while(j>=0&&temp<*(a+j)) { *(a+j+1)=*(a+j); j--; } *(a+j+1)=temp; } } void p(int *a,int n) { int i,j,temp; for(i=1;i<n;i++) { temp=*(a+i); j=i-1; while(j>=0&&temp>*(a+j)) { *(a+j+1)=*(a+j); j--; } *(a+j+1)=temp; } }
运行结果截图:
----------------------分割线----------------------
任务3:
输入字符串s,将字符放入d数组中,最后输出d中的字符串。
要求:用函数和指针实现
运行示例
输入字符串:abc123edf456gh
输出字符串:abcedfgh
我的程序:
#include<stdio.h> void main() { char a[100],*p1=a,b[100],*p2=b; printf("请输入字符串\n"); gets(a); for(;*p1!=0;p1++) { if(*p1<47||*p1>58) { *p2=*p1; p2++; } } *p2='\0'; printf("输出字符串:"); puts(b); }
运行结果截图: