技能1:在堆区分配字符型连续的n个空间
1>调用函数动态申请空间
2>调用函数循环输入n字符
3>调用函数实现字符串逆置
4>释放空间
Head.h
#ifndef __HEAD_H_
#define __HEAD_H_
void *Space(int n);
void Input(char *p,int n);
void Nixu(char *p,int n);
void *Free(char *p);
#endif
Head.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "head.h"
void *Space(int n)
{
char *p=(char *)malloc(sizeof(char)*n);
return p;
}
void Input(char *p,int n)
{
for(int i=0;i<n;i++)
{
scanf("%s",p+i);
}
}
void Nixu(char *s,int n)
{
int len=strlen(s);
char *p=s;
char *q=s+len-1;
char tmp;
while(q>p)
{
tmp=*q;
*q=*p;
*p=tmp;
q--;
p++;
}
}
void *Free(char *p)
{
free(p);
}
Main.c
#include <stdio.h>
#include <stdlib.h>
#include "head.h"
int main(void)
{
int n;
printf("请输入你需要几个字符");
scanf("%d",&n);
char *p=Space(n);
Input(p,n);
Nixu(p,n);
for(int i=0;i<n;i++)
{
printf("%s ",p+i);
}
free(p);
p=NULL;
return 0;
}
技能2,在堆区分配n个连续的整形空间,使用指针变量p指向,在堆区分配单个整数空间,使用指针变量key指向
1>调用函数动态申请空间
2>调用函数循环输入n整数,key的值
3>计算key在p中是否存在,存在则提示存在,否则,不存在4>释放空间p和key
head.h
#ifndef __HEAD_H_
#define __HEAD_H_
void *Space(int n);
void Input(int *p,int n);
int Exeit(int *p,int n,int *q);
void *Free(int *p);
#endif
head.c
#include <stdlib.h>
#include<stdio.h>
#include "head.h"
void *Space(int n)
{
int *p=(int *)malloc(sizeof(int)*n);
return p;
}
void Input(int *p,int n)
{
for(int i=0;i<n;i++)
{
scanf("%d",p+i);
}
}
int Exeit(int *p,int n,int *q)
{
for(int i=0;i<n;i++)
{
if(*(p+i)==*q)
{
return 1;
}
}
return 0;
}
void *Free(int *p)
{
free(p);
}
main.c
#include <stdio.h>
#include <stdlib.h>
#include "head.h"
int main(void)
{
int n;
printf("请输入你需要几个数");
scanf("%d",&n);
int *p=Space(n);
Input(p,n);
printf("请再输入一个数");
int *q=Space(1);
Input(q,n);
int num=Exeit(p,n,q);
if(num==1)
{
printf("存在");
}
else
{
printf("不存在");
}
free(p);
free(q);
q=NULL;
p=NULL;
return 0;
}