任务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
----------------------分割线----------------------
[cpp] view plain copy print ?
- #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);
- }
#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:
定义一维整形数组,对数组分别进行“由大到小”和"由小到大"排序并输出。
要求:
用函数和指针
实现排序
----------------------分割线----------------------
[cpp] view plain copy print ?
- #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 = new[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);
-
- }
#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
[cpp] view plain copy print ?
- #include<stdio.h>
- #include<string.h>
- #define N 20
-
- int main(void){
- char a[N];
- char *p=a;
- printf("please input a string less 20 number!");
- gets(a);
- while(*p!='\0')
- {
- if((*p>=48&&*p<=57))
- strcpy(p,p+1);
- else p++;
- }
-
- puts(a);
- return 0;
- }
#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);
}
分享到:
上一篇:第十三堂课后作业