指针的学习

发布时间:2024年01月09日

在自定义函数中使用指针

在主函数输入数组,在自定义有参无返函数中实现简单选择排序(降序)
  1 #include <stdio.h>
  2 #include <string.h>
  3 #include <stdlib.h>
  4 void Select(int n,int *p);
  5 void Output(int n,int *p);
  6 int main(int argc, const char *argv[])
  7 {
  8     //自定义函数中使用指针实现简单选择排序                                             
  9     int n;
 10     printf("请输入数组长度");
 11     scanf("%d",&n);
 12     int arr[n];
 13     for(int i=0;i<n;i++)
 14     {
 15         printf("请输入数组元素%d的值\n",i);
 16         scanf("%d",arr+i);
 17     }
 18     Select(n,arr);
 19     Output(n,arr);
 20     return 0;
 21 }
 22 
 23 
 24 
 25 void Select(int n,int *p)
 26 {
 27     int num;
 28     for(int i=0;i<n;i++)
 29     {
 30         for(int j=0;j<n;j++)
 31         {
 32             if(*(p+i)>*(p+j))
 33             {
 34                 int t=*(p+i);
 35                 *(p+i)=*(p+j);
 36                 *(p+j)=t;
 37             }
 38         }
 39     }
 40 }
 41 void Output(int n,int *p)
 42 {
 43         for(int i=0;i<n;i++)
 44     {
 45         printf("排序后数组元素%d的值%d\n",i,*(p+i));
 46     }
 47 }
 48 
?效果图

输入两个字符串,定义有参有返函数实现字符串比较(不允许使用函数)
  4 int Strcmp(char *p,char *q);
  5 int main(int argc, const char *argv[])
  6 {
  7     //函数中使用指针实现Strcmp
  8     char a[40]="";
  9     char b[40]="";
 10     printf("请输入数组a的字符串");
 11     gets(a);
 12     printf("请输入数组b的字符串");
 13     gets(b);
 14     int num=Strcmp(a,b);
 15     if(num>0)
 16     {
 17         printf("a>b\n");
 18     }
 19     if(num<0)
 20     {
 21         printf("a<b\n");
 22     }
 23     if(num==0)
 24     {
 25         printf("a=b\n");
 26     }
 27     return 0;
 28 }
 29 
 30 
 31 int Strcmp(char *p,char *q)
 32 {
 33     int i=0;
 34     while(*(p+i)==*(q+i)&&*(p+i)!='\0')
 35         i++;
 36     if(*(p+i)-*(q+i)>0)
 37         return 1;
 38     else if(*(p+i)-*(q+i)<0)
 39         return -1;
 40     else if(*(p+i)-*(q+i)==0)
 41         return 0;
 42 }
效果图

主函数输入一个字符串,在自定义有参无返函数中实现单词逆置(使用指针)

例如:输入: “good good study”

输出 “study good good”

  1 #include <stdio.h>
  2 #include <string.h>
  3 #include <stdlib.h>
  4 void Trans(char *start,char *end,char *str);
  5 int main(int argc, const char *argv[])
  6 {
  7     //自定义函数使用指针完成单词逆置
  8     char str[40];
  9     printf("请输入字符串:");
 10     gets(str);
 11     char *start=str;
 12     char *end=str+strlen(str)-1;
 13     Trans(start,end,str);
 14     puts(str);
 15     return 0;
 16 }
 17 
 18 
 19 void Trans(char *start,char *end,char *str)
 20 {
 21         while(start<end)
 22     {
 23         char t=*start;
 24         *start=*end;
 25         *end=t;
 26         start++;
 27         end--;
 28     }
 29     puts(str);
 30     end=NULL;
 31     char *temp=str;
 32     while(*start!='\0')
 33     {
 34         temp=start;
 35         while(*start!=' '&&*start!='\0')
 36             start++;
 37         end=start-1;
 38         while(temp<end)
 39         {
 40             char t=*temp;
 41             *temp=*end;
 42             *end=t;
 43             temp++;
 44             end--;
 45             puts(str);
 46         }
 47         end=start;
 48         while(*end==' '&&*end!='\0')
 49         {
 50             end++;
 51         }
 52         start=end;
 53     }
 54 }    
效果图

文章来源:https://blog.csdn.net/H_oUmU/article/details/135462714
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。