int Add(int x,int y)
{
int z=0;
z=x+y;
return z;
}
int main()
{
int a=10;
int b=20;
int sum=Add(a,b);
printf("%d\n",sum);
return 0;
}
字符串求长度
int main()
{
char arr1[]="bit";
char arr2[20]="#######";
strcpy(arr2,arr1);
printf("%s\n",arr2);
//strcpy -string copy -字符串拷贝
//strlen -string length
return 0;
}
bit\0########
\0就是结束标志
memset
memory - 内存 set 内存设置
将hello 替换成*
int main(){
char arr[]="hello word";
memset(arr,'*',5);
printf("%s\n",arr);
//***** world
return 0;
}
get_max(int x,int y)
{
if(x>y)
return x;
else
return y;
}
int main()
{
int a=10;
int b=20;
//函数的使用
int max=get_max(a,b);//定义函数
printf("max=%d\n",max);
return 0;
}
写一个函数交换两个数值
用指针交换
void Swap(int *pa,int *pb){
int tmp=0;
tmp=*pa;
*pa=*pb;
*pb=tmp;
}
int main(){
int a=10;
int b=20;
printf("a=%d b=%d\n",a,b);
Swap(&a,&b);
printf("a=%d b=%d\n",a,b);
return 0;
}
//当实参传给形参的时候
//形参其实是实参的一份临时拷贝
函数的调用:
传值调用
函数的形参和实参分别占用不同内存块,对形参的修改不会影响实参。
传址调用
传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。
这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量。
#include <stdio.h>
int is_prime(int n) {
int j=0;
for(j=2;j<n;j++){
if(n%j==0)
return 0;
}
return 1;
}
int main(){
//打印100-200之间的素数
int i=0;
for(i=100;i<=200;i++){
//判断i是否为素数
if(is_prime(i)==1)
printf("%d\n",i);
}
return 0;
}
int is_leap_year(int y)
{
if((y%4==0&&y%100!=0)||(y%400==0))
return 1;
else
return 0;
}
int main()
{
int year=0;
for(year=1000;year<=2000;year++){
//判断year是否为闰年
if(is_leap_year(year)){
printf("%d ",year);
}
}
}
//二分查找
int binary_search(int arr[],int k,int sz)
{
//算法的实现
int left=0;
int right=sz-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(){
//在一个有序数组中查找具体的某个数
//如果找到返回下标,找不到返回-1。
int arr[]={1,2,3,4,5,6,7,8,9,10};
int k=7;
int sz=sizeof(arr)/sizeof(arr[0]);
int ret=binary_search(arr,k,sz);
if(ret==-1)
{
printf("找不到指定的数字\n");
}
else
{
printf("找到了,下标是:%d\n",ret);
}
return 0;
}
//写一个函数,每调用一次这个函数,就会将num的值增加1.
void Add(int*p)
{
(*p)++;
}
int main()
{
int num =0;
Add(&num);
printf("num=%d\n",num);
Add(&num);
printf("num=%d\n",num);
Add(&num);
printf("num=%d\n",num);
}
函数的嵌套调用和链式访问
函数和函数之间可以有机结合
int main(){
int len=0;
len=strlen("abc");
//1
printf("%d\n",len);
//2
printf("%d\n",strlen("abc"));
return 0;
}
int main()
{
printf("%d",printf("%d",printf("%d",43)));//43 2 1//43+打印的字符数+字符数
return 0;
}
先打印了一个43,再打印了2个字符,再打印了1个字符。
int Add(int x,int y);//函数声明
int main(){
int a=10;
int b=20;
int sum=0;
//函数调用
sum=Add(a,b);
printf("%d\n",sum);
return 0;
}
//函数定义
int Add(int x,int y){
int z=x+y;
return z;
}
此写法是小组写的分模块的功能。
add.h
int Add(int x,int y);//函数声明
add.c
int Add(int x,int y){
int z=x+y;
return z;
}
test.h
#include "add.h"
int main(){
int a=10;
int b=20;
int sum=0;
//函数调用
sum=Add(a,b);
printf("%d\n",sum);
return 0;
}