ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

4 函数和循环

2021-08-03 21:59:00  阅读:74  来源: 互联网

标签:arr return 函数 int sum 循环 year


 //判断素数函数


#include<math.h>

int is_prime(int n)
{
	int i = 0;
	for (i = 2; i <= sqrt(n); i++) {
		if (n % i == 0)
			return 0;
	}
	return 1;

}

int main()
{
	int i = 0;
	for (i = 1; i <= 200; i++)
	{
		if (is_prime(i) == 1)
			printf("%d ", i);
	}
	return 0;
}

//判断闰年函数

int isaddyear(int year)
{
	if (year % 100!=0&&year % 4 == 0)
		return 1;
	else if (year % 400 == 0)
		return 1;
	else
		return 0;
 }
 
int main()
{
	int year = 0;
	for (year = 1000; year <= 2000; year++)
	{
		if (isaddyear(year) == 1)
		{
			printf("%d ", year);
		}
	}
	return 0;
}

 //二分查找函数

//本质上arr是一个指针
int binary_search(int arr[], int k,int sz)//这里的arr不是数组,传递过去的是arr首元素的地址,本质上是个指针
{
	//int sz = sizeof(arr) / sizeof(arr[0]);不能在这里求数组个数
	int left = 0;
	int right = sz;

	while (left <= right)
	{
		int mid = (left + right) / 2;//不能放到循环外
		if (arr[mid]> k)
		{
			right = mid-1;
		}
		else if (arr[mid] < k)
		{
			left = mid + 1;
		}
		else
			return mid;
	}
		return -1;


}
int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9 };
	int k = 17;
	int sz = sizeof(arr) / sizeof(arr[0]);
	//arr传递过去的是数组首元素地址
	int ret=binary_search(arr, k,sz);
	if (ret == -1)
	{
		printf("找不到\n");
	}
	else
		printf("找到了,数组下标为%d", ret);
	return 0;
}

//函数每次调用sum自加1

void Add(int* p)
{
	(*p)++;
}
int main()
{
	int sum = 0;
	Add(&sum);
	printf("%d\n", sum);
	Add(&sum);
	printf("%d\n", sum);
	Add(&sum);
	printf("%d\n", sum);

}

  • 函数的嵌套调用:函数和函数之间可以有机的组合
  • 函数的链式访问:把一个函数的返回值作为另外一个函数的参数

函数递归:程序调用自身

一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法

主要思考方式:大事化小

两个必要条件:

  • 存在限制条件,满足后不在继续
  • 每次递归调用后越来越接近这个限制条件

栈区:局部变量、函数形参

堆区:动态开辟的内存(malloc,calloc等)

静态区:全局变量,static修饰的变量

//接受一个无符号整型值,按照顺序打印它的每一位。(例如输入:123,输出:1 2 3)

void print(int n)
{
	if (n>9)
	{
		print(n/10);
	}
	printf("%d ", n % 10);
}

int main()
{
	unsigned int num = 0;
	scanf("%d", &num);
	print(num);//递归
	return 0;
}

 //模拟实现strlen函数

int my_strlen(char* str)
{
	int count = 0;
	while (*str != '\0')
	{
		count++;
		str++;
	}
	return count;
}

int main()
{
	char arr[] = "skyesun";
	int len = my_strlen(arr);//arr是数组,数组传参,传过去的不是整个数组,而是第一个元素的地址
	printf("len=%d\n", len);

	return 0;
}

//要求不创建临时变量:递归的办法

int my_strlen(char* str)
{
	if (*str != '\0')
		return 1 + my_strlen(str + 1);
	else return 0;
}

标签:arr,return,函数,int,sum,循环,year
来源: https://blog.csdn.net/m0_58125693/article/details/119357308

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有