C语言学习_5
函数
最近主要学习C语言的函数相关内容,收获很多,函数的用法就不口述了,直接上代码。
最基础用法
int get_max(int x,int y)
{
if(x>y)
return x;
else
return y;
}
int main()
{
int a=10,b=20;
int max=get_max(a,b);
printf("%d\n",max);
return 0;
}
下面这个示例主要想说明函数不能通过修改形参的值来改变实参,因为二者的地址并不相同。但可以通过操作地址的方式来改变。
void swap(int *a,int *b)
{
int c=0;
c=*a;
*a=*b;
*b=c;
}
int main()
{
int a=10,b=20;
printf("a=%d,b=%d\n",a,b);
swap(&a,&b);
printf("a=%d,b=%d\n",a,b);
return 0;
}
素数查找
//是素数返回1,不是返回0;
int sushu(int x)
{
int j=0;
for(j=2;j<x;j++)
{
if(x%j==0)
return 0;
}
return 1;
}
int main()
{
int i=0;
for(i=100;i<=200;i++)
{
if (sushu(i)==1)
printf("%d ",i);
}
return 0;
}
二分查找,
数组传入函数时,传进形参的是首个元素的地址。
//二分查找
int serch(int arr[],int k,int size)//本质上arr是一个指针
{
int left=0;
int right=size-1;
while(left<=right)
{
int mid=(left+right)/2;
if(arr[mid]<k)
{
left=mid+1;
}
else if(arr[mid]>k)
{
right=mid-1;
}
else
return mid;
}
return -1;
}
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10};
int size=sizeof(arr)/sizeof(arr[0]);
int k=6;
if(serch(arr,k,size)==-1)//传递到函数的是首元素的地址。
printf("找不到指定数字\n");
else
printf("找到啦,下标是%d\n");
return 0;
}
在这里插入代码片
函数的递归示例
//接受一个无符号的整形,按顺序打印它的每一位。例如:输入1234.输出1 2 3 4
void print(unsigned int x)
{
if(x>9)
{
print(x/10);
}
printf("%d ",x%10);
}
//函数的递归,函数中一定要有条件,让递归停下来。
int main()
{
unsigned int num=0;
scanf("%d",&num);
//递归
print(num);
return 0;
}
求一个字符串的长度
int length(char* str)
{
if(*str!='\0')
{
return 1+length(str+1);//为什么此处str+1不能写成str++?
}
else
return 0;
}
int main()
{
char arr[]="LinZXin";
int num=length(arr);
printf("length=%d",num);
return 0;
}