1.
#include<stdio.h>
//写一个函数判断一个数是不是素数
//is_prime(i)
int is_prime(n)
{
int j = 0;
for (j = 2;j <= sqrt(n);j++)//sqrt求平方根
{
if (n % j == 0)
{
return 0;//直接跳出函数,比break的功能更强
}
}
return 1;
}
int main()
{
int i = 0;
for (i = 0;i <= 100;i++)
{
if (is_prime(i) == 1)
{
printf("%d", i);
}
return 0;
}
}
2.
#include<stdio.h>
//输出1000-2000之间的全部闰年
int is_leap_year(int n)
{
if (((n % 4 == 0) &&( n % 100 != 0))||(n % 400 == 0 ))
{
return 1;
}
else
return 0;
}//可以把is_leap_year函数简化成 return ((n%4==0)&&(n%100!=0))||(n%400==0));
//构造函数的时候让函数的功能尽量单一
int main()
{
int y = 0;
for (y = 1000;y <= 2000;y++)
{
if (is_leap_year(y) == 1)
{
printf("%d ", y);
}
}
return 0;
}
3.
#include<stdio.h>
//写一个函数实现二分查找
//找到返回下标,找不到返回-1
int Binary_Search(int arr1[], int m, int n)
{
int left = 0;
int right = n - 1;
while (left <= right)
{
int mid = left + (right-left) / 2;
if (arr1[mid] < m)
{
left = mid + 1;
}
else if (arr1[mid] > m)
{
right = mid -1;
}
else
return mid;
}
return -1;
}
int main()
{//数组在传参的时候传递的不是整个数组,传递的是数组首元素的地址
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 0;
scanf("%d", &k);
int sz = sizeof(arr) / sizeof(arr[0]);
int ret=Binary_Search(arr, k, sz);
if (ret == -1)
{
printf("没有找到");
}
else printf("找到了,下标是:%d ", ret);
return 0;
}
4. 实现每调用一次函数就使num增加1
#include<stdio.h>
void test(int* p)
{
*p = *p + 1;//*p++是错的,可以写作(*P)++
}
int main()
{
int num = 0;
test(&num);
printf("%d ", num);
return 0;
}
5.函数的定义
函数可以嵌套调用但是不能嵌套定义 。
链式访问:把一个函数的返回值作为另一个函数的参数
printf函数的功能
由此可知:printf函数的返回值是打印字符的数量(整型)。因此嵌套3个printf的输出值是4321。