思维导图:
![](https://img-blog.csdnimg.cn/90e2b802e0f3438cbb8f89ec4eee5dfe.png)
练习1:输入两个字符串,自定义函数实现拷贝
#include <stdio.h>
#include <string.h>
void My_strcpy(char *dest,char *src);
int main(int argc, const char *argv[])
{
//输入两个字符串,自定义函数实现拷贝
char dest[20];
char src[20];
printf("please enter dest:");
gets(dest);
printf("please enter src:");
gets(src);
My_strcpy(dest,src);
printf("dest[]=");
puts(dest);
return 0;
}
void My_strcpy(char *dest,char *src){
int i;
for(i=0;*(src+i)!='\0';i++){
*(dest+i)=*(src+i);
}
*(dest+i)='\0';
}
练习2:输入数组,实现简单选择降序
#include <stdio.h>
#include <string.h>
void Sort(int *p,int len);
int main(int argc, const char *argv[])
{
//输入数组,实现简单选择降序
int arr[20];
int n;
printf("please enter n:");
scanf("%d",&n);
for(int i=0;i<n;i++){
printf("please enter %d element:",i+1);
scanf("%d",&arr[i]);
}
Sort(arr,n);
for(int i=0;i<n;i++){
printf("%d ",arr[i]);
}
puts("");
return 0;
}
void Sort(int *p,int len){
int max;
int t;
for(int i=0;i<len;i++){
max=i;
for(int j=i+1;j<len;j++){
if(*(p+max)<*(p+j)){
max=j;
}
}
if(max!=i){
t=*(p+i);
*(p+i)=*(p+max);
*(p+max)=t;
}
}
}
练习3:输入数组元素,使用有参无返函数实现最大值和最小值交换
#include <stdio.h>
#include <string.h>
void Exchange(int *p,int n);
void Output(int *p,int n);
int main(int argc, const char *argv[])
{ //输入数组元素,使用有参无返函数实现最大值和最小值交换
int n;
printf("please enter n:");
scanf("%d",&n);
int arr[n];
for(int i=0;i<n;i++)
{
printf("please enter %d emnet:",i+1);
scanf("%d",arr+i);
}
Output(arr,n);
Exchange(arr,n);
Output(arr,n);
return 0;
}
void Exchange(int *p,int n)
{
int max,min;
int maxi=0,mini=0;
max=min=*p;
for(int i=0;i<n;i++)
{
if(*(p+i)>max)
{
max=*(p+i);
maxi=i;
}
if(*(p+i)<min)
{
min=*(p+i);
mini=i;
}
}
*(p+maxi)=min;
*(p+mini)=max;
}
void Output(int *p,int n)
{
for(int i=0;i<n;i++)
{
printf("%-3d",*(p+i));
}
puts("");
}
练习4:通过指针实现字符串逆置
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
//通过指针实现字符串逆置
char str[20];
printf("please enter str:");
gets(str);
char *start=str;
char *end=str+strlen(str)-1;
while(start<end)
{
char t=*start;
*start=*end;
*end=t;
start++;end--;
}
puts(str);
return 0;
}
练习5:输入n个元素,定义有参无返函数实现冒泡排序
#include <stdio.h>
#include <string.h>
void Bubble(int arr[],int len);
void Output(int arr[],int len);
int main(int argc, const char *argv[])
{
//输入n个元素,定义有参无返函数实现冒泡排序
int n;
printf("please enter n:");
scanf("%d",&n);
int arr[n];
for(int i=0;i<n;i++){
printf("please enter %d elment:",i+1);
scanf("%d",arr+i);
}
Bubble(arr,n);
Output(arr,n);
return 0;
}
void Bubble(int *p,int len){
for(int i=1;i<len;i++){
for(int j=0;j<len-i;j++){
if(*(p+j)>*(p+j+1)){
int t=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=t;
}
}
}
}
void Output(int *p,int len){
for(int i=0;i<len;i++){
printf("%d ",*(p+i));
}
puts("");
}