void Swap1(int x, int y)
{
int z = 0
z = x;
x = y;
y = z;
}
void Swap2(int* pa, int* pb)
{
int z = 0;
z = *pa;
*pa = *pb;
*pb = z;
}
int main()
{
int a = 10;
int b = 20;
printf("换前:%d %d\n", a, b);
Swap1(a, b);//传值调用
printf("换后:%d %d\n", a, b);
Swap2(&a, &b);//传址调用
printf("换后:%d %d\n", a, b);
return 0;
}
练习
1、写函数,判断素数
int is_prime(int n)
{
int j = 0;
for (j = 2; j < n; j++)//用2到n-1除自己
{
if (n % j == 0)
{
return 0;//不是素数返回0
}
}
return 1;//是素数返回1
}
int main()//素数(质数):只能被1和自己整除
{
int i = 0;
for (i = 100; i <= 200; i++)
{
if (is_prime(i) == 1)//判断是否为素数
{
printf("%d ", i);
}
}
return 0;
2、写函数,判断闰年
int is_leap_year(int n)//不写返回类型时,默认返回int类型
{
if ((n % 4 == 0 && n % 100 != 0) || n % 400 == 0)
return 1;
else
return 0;
}
//int is_leap_year(int n)(也可以直接判断)
//{
// return ((n % 4 == 0 && n % 100 != 0) || n % 400 == 0);
//}
int main()
{
int i = 0;
for (i = 1000; i <= 2000; i++)
{
if (is_leap_year(i) == 1)
{
printf("%d ", i);
}
}
return 0;
}
3、写函数,实现有序数组的二分查找
int binary_search(int a[],int k,int s)//不写返回类型时,默认返回int类型
{
int left = 0;
int right = s - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (a[mid] > k)
{
right = mid - 1;
}
else if (a[mid] < k)
{
left = mid + 1;
}
else
{
return mid;
}
}
return -1;//找不到
}
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int key = 7;
int sz = sizeof(arr) / sizeof(arr[0]);//数组元素个数:数组大小/每个元素的大小
int ret = binary_search(arr, key,sz);//找到返回找到位置的下标
if (ret == -1)//找不到返回-1
{
printf("找不到\n");
}
else
{
printf("找到了,下标是:%d\n",ret);
}
return 0;
}
4、写函数,调用一次这个函数,num的值就加1
void add(int* p)
{
(*p)++;
}
int main()
{
int num = 0;
add(&num);
printf("%d/n", num);//1
add(&num);
printf("%d/n", num);//2
add(&num);
printf("%d/n", num);//3
return 0;
}
希望本文对大家有帮助,上文若有不妥之处,欢迎指正
分享决定高度,学习拉开差距