2023年1月29日作业

作业1:在堆区分配字符型连续的n个空间

1、调用动态函数申请空间

2、调用循环输入n字符

3、调用函数实现字符穿串逆置

4、释放空间

main函数:

  1 #include"head.h"
  2 int main(int argc, const char *argv[])
  3 {
  4     char *p=Space();        //调用函数动态申请空间
  5     Input(p,5);             //调用函数输入n字符
  6 //  for(int i=0;i<;i++)     //判断是否成功输入
  7 //  {
  8 //      printf("%c",*(p+i));
  9 //  }
 10     Reverse(p,5);           //字符串逆置    
 11     puts(p);                //判断是否实现字符串逆置
 12     Free(p);                //利用函数释放空间
 13     puts(p);
 14 
 15     return 0;
 16 }                           

head函数:

  1 
  2 #ifndef __HEAD_H__
  3 #define __HEAD_H__
  4 
  5 #include<stdio.h>
  6 char *Space();
  7 
  8 void Input(char *p,int n);
  9 
 10 void Reverse(char *p,int n);
 11 
 12 void Free(char *p);
 13 
 14 
 15 
 16 #endif           

test函数

  1 #include<stdlib.h>
  2 #include<stdio.h>
  3 char  *Space()
  4      
  5 {
  6     char *p=(char *)malloc(sizeof(char)*5);
  7     if(p==NULL)
  8     {   
  9         return NULL;
 10     }
 11     return p;
 12 }
 13 void Input(char *p,int n)
 14 {
 15     for(int i=0;i<n;i++)
 16     {
 17         scanf("%c",p+i);
 18     }
 19 //  puts(p);//判断是是否成功输入
 20 }
 21 void Reverse(char *p,int n)
 22 {
 23     char t;
 24     for(int i=0,j=n-1;i!=j;i++,j--)
 25     {
 26         t=*(p+i);*(p+i)=*(p+j);*(p+j)=t;
 27     }
 28 }
 29 void Free(char *p)
 30 {
 31     if(p==NULL)
 32     {
 33         return;
 34     }
 35     free(p);                               
 36 }
~                

运行结果

ubuntu@ubuntu:1月29日$ ./a.out 
asdasdsdg
sadsa

作业2:在堆区分配n个连续的整形空间,使用指针变量p指向,在堆区分配单个整数空间,使用指针变量key指向

1:调用函数动态申请空间

2:调用函数循环输入n整数,key的值

3:计算key在p中是否存在,存在提示存在,否则不存在

4:释放空间p和key

代码段:

头文件

  1 #ifndef __HEAD1_H__
  2 #define __HEAD1_H__
  3 #include<stdio.h>
  4 #include<stdlib.h>
  5 int *Space(int n);
  6 int *SpaceKey();
  7 
  8 void Input(int *p,int n);
  9 void InputKey(int *key);
 10 
 11 void PanDuan(int *p,int n,int *key);
 12                                                                                                                                                                      
 13 void Free(int *p);   
 14 
 15 #endif

test.c

 1 #include<stdio.h>
  2 #include<stdlib.h>
  3 int *Space(int n)
  4 {
  5     int *p=(int *)malloc(sizeof(int)*6);
  6     if(p==NULL)
  7     {
  8         return NULL;
  9     }
 10     return p;
 11 }
 12 int *SpaceKey()
 13 {
 14     int *key=(int *)malloc(sizeof(int));
 15     if(key==NULL)
 16     {
 17         return NULL;
 18     }
 19     return key;
 20 }
 21 void Input(int *p,int n)
 22 {
 23     for(int i=0;i<n;i++)
 24     {
 25         scanf("%d",p+i);
 26     }
 27 }
 28 void InputKey(int *key)
 29 {
 30     scanf("%d",key);
 31 }
 32 void PanDuan(int *p,int n,int *key)
 33 {
 34     int i=0;
 35     for(;i<n;i++)
 36     {
 37         if(*(p+i)==*key)
 38         {
 39             printf("存在\n");
 40             return;
 41         }
 42 
 43     }
 44     if(i=n)
 45     {
 46         printf("不存在\n");
 47     }
 48 }
 49 void Free(int *p)
 50 {
 51     if(p==NULL)
 52     {
 53     return;
 54     }
 55     free(p);
 56 }

main

  1 
  2 
  3 #include"head1.h"
  4 int main(int argc, const char *argv[])
  5 {
  6     int n;
  7     printf("输入p指向的整数个数:");
  8     scanf("%d",&n);
  9     int *p=Space(n);
 10     int *key=SpaceKey();
 11     printf("%p\n%p\n",p,key);
 12     printf("输入p指向的地址的值:");
 13     Input(p,n);
 14     printf("输入key指向的地址的值:");
 15     InputKey(key);
 16     printf("p指向地址的值为:");
 17     for(int i=0;i<n;i++)
 18     {
 19         printf("%d\t",*(p+i));
 20     }
 21     printf("\nkey指向的地址的值为:");
 22     printf("%d\n",*key);
 23     PanDuan(p,n,key);
 24     Free(p);
 25     free(key);
 26     printf("%d\n%d\n",*p,*key);
 27     return 0;
 28 }
 29            

输入结果

ubuntu@ubuntu:1月29日$ gcc main1.c test1.c 
\ubuntu@ubuntu:1月29日$ ./a.out 
输入p指向的整数个数:5
0x5601e3922a80
0x5601e3922aa0
输入p指向的地址的值:3
5
4
3
2
输入key指向的地址的值:5
p指向地址的值为:3	5	4	3	2	
key指向的地址的值为:5
存在
0
-476960128
ubuntu@ubuntu:1月29日$ ./a.out 
输入p指向的整数个数:4
0x560a8f5f9a80
0x560a8f5f9aa0
输入p指向的地址的值:3
4
5
6
输入key指向的地址的值:2
p指向地址的值为:3	4	5	6	
key指向的地址的值为:2
不存在
0
-1889559936

ps:输入key可以把改成Space(n)中的n定1,后续判断存在时判断条件为*(p+i)==*key

若key中有多个元素,可以遍历判断。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

malingshu404

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值