1.指针和字符串
知识点1——冒泡排序
基本格式
for(i=0;i<5-1;i++)
{
for(j=0;j<5-1-i;j++)
{比较大小,
交换顺序
}
}
知识点2:strcmp函数———用于比较字符串的ASCII大小
知识点3:指针字符串数组的初始化
malloc函数——用于动态分配内存
格式——arr[i]=*char)malloc(len*sizeof(char));
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int i=0;
int j=0;
char* arr[5];//字符串的数量
//每个字符串的长度
for(i=0;i<5;i++)
{//字符串数组——可以用数组的方式输入
//分配内存,假设最多100个字符
arr[i]=(char*)malloc(101*sizeof(char));
scanf("%s",arr[i]);//不需要取地址符
}
//字符串的输入
// char a[200];
// int i=0;
// while((a[i]=getchar())!=' ')
// {
// i++;
// }
// a[i]='\0';
//冒泡排序部分
for(i=0;i<5-1;i++)
{
for(j=0;j<5-1-i;j++)
{
if(strcmp(arr[j],arr[j+1])>0)
//if(arr[j][0]>arr[j+1][0])
{//地址是可以交换的
char* temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
//输出
printf("After sorted:\n");
for(i=0;i<5;i++)
{
printf("%s\n",arr[i]);
}
return 0;
}
2.尾接字符串
#include<stdio.h>
#define MAX 20
//函数
char func(char* s,char* b)
{
char* p=s;//防止之后操作值的不定性
int i=0;
while(* p!='\0')
{
p++;//找到p的最后地址
}
while(*b!='\0')
{
*p=*s;
p++;
s++;
}
*p='\0';
return s;
}
int main()
{
char* p;///函数返回值的地址
char str1[MAX+MAX]={'\0'};//第一个字符串
char str2[MAX]={'\0'};//第二个字符串
scanf("%s%s",str1,str2);
p = str_cat(str1, str2);//函数调用
printf("%s\n%s\n", p, str1);
return 0;
}
为什么要单独* p=s;——字符串指针常见操作
3.输出最长字符串
#include<stdio.h>
#include<string.h>
#define MAX 200
int main()
{
int n;
scanf("%d",&n);
char arr[MAX][MAX]={{0}};
int i=0;
for(i=0;i<n;i++)
{
scanf("%s",arr[i]);
}
char* max=arr[0];//将最大值设置为第一个字符串
for(i=0;i<n;i++)
{
if(strlen(max)<strlen(arr[i]))
{
max=arr[i];//更新最大值
}
}
printf("The longest is: %s",max);
return 0;
}
4.求两个集合的交集
疑问解释:
#include<stdio.h>
#include<string.h>
int main()
{
//定义两个数组
int a[10]={0};
int b[10]={0};
int i=0;
for(i=0;i<10;i++)
{
printf("%d",a[i]);//输入数组1
}
for(i=0;i<10;i++)
{
printf("%d",b[i]);//输入数组2
}
printf("这两个集合的交集有:");
//!!!重头戏
//for(int* pa=a;pa<sizeof(a)/sizeof(a[0]);pa++)数组的个数
for(int* pa=a;pa<a+sizeof(a)/sizeof(int);pa++)//指针的结束地址
{
//for(int* pb=b;pb<sizeof(b))/sizeof(b[0]);pb++)
for(int* pb=b;pb<b+sizeof(b))/sizeof(int);pb++)
{
if(*pa==*pb)
{
printf("%d",*pb);
}
}
}
return 0;
}