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;elsereturn 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;
}