19. 函数的调用
2023-12-26 04:44:06
函数的调用分为两种:
传值调用和传址调用
传值调用:
将值调用过去
传址调用:
将地址调用过去
所以函数内部想改变函数的外部,则需要将地址传出去;若只是想将数值传过去,则用传值调用
写一个函数打印100到200之间的素数:
/*写一个函数打印100到200之间的素数:*/
#include<stdio.h>
int f_judge(int n)
{
//2——(n-1)之间的数
int j = 0;
for (j = 2; j < n; j++)
{
if (n % j == 0)
return 0;
}
return 1;
}
int main()
{
int i = 0;
int count = 0;
for (i = 100; i <= 200; i++)
{
//判断 i 是否为素数
if (f_judge(i) == 1)
{
count++;
printf("%d ", i);
}
}
printf("\n有%d个素数\n", count);
return 0;
}
函数编写成功
写一个函数打印1000到2000年的闰年:
/*写一个函数打印1000到2000年的闰年:*/
int is_leap_year(int x)
{
if ((x % 4 == 0 && x % 100 != 0) || (x % 400 == 0))
return 1;
else
return 0;
} //一个函数如果不返回类型,则默认返回int类型6
int main()
{
int y = 0;
for (y = 1000; y <= 2000; y++)
{
if (is_leap_year(y) == 1)
{
printf("%d ", y);
}
}
return 0;
}
函数编写成功
在这题的函数编写上,还可以简化为如下:
int is_leap_year(int x)
{
return (x % 4 == 0 && x % 100 != 0) || (x % 400 == 0);
}
写一个函数,实现一个整型有序数组的二分查找:
/*写一个函数,实现一个整型有序数组的二分查找:*/
int binary_search(int arr1[], int k, int s)
{
int left = 0;
int right = s - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (arr1[mid] > k)
{
right = mid - 1;
}
else if (arr1[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 sz = sizeof(arr) / sizeof(arr[0]);
int key = 7;
//找到了就返回找到的位置的下标
//找不到返回 -1
int ret = binary_search(arr,key,sz);
if (ret == -1)
{
printf("没找到\n");
}
else
{
printf("找到了,下标为:%d\n", ret);
}
return 0;
}
注意!数组arr传参时,实际传递的的不是数组本身,而是只传过去了数组首元素的地址!
所以在本题不能在创建的函数内进行数组元素个数的计算
文章来源:https://blog.csdn.net/2302_79881301/article/details/135211297
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!