C语言-函数练习2

1,打印1000-2000年之间的闰年

复制代码
#include<stdio.h>

//打印1000-2000年之间的闰年
//闰年判断的规则:
//1. 能被4整除,并且不能被100整除是闰年
//2, 
//int main() {
//	int year = 0; 
//	for ( year = 1000; year <=2000; year++)
//	{
//		//判断year是不是闰年
//		if (year % 4 == 0) {//2000判断时把else去掉
//			if (year % 100 != 0) {
//				printf("%d ", year);
//			}
//		}
//		  /*else if (year % 400 == 0)*/
//		 if (year % 400 == 0)
//		{
//			printf("%d ", year);
//		}
//	}
//	return 0;
//}

//另一种方法
int main() {
	int year = 0;
	for (year = 1000; year <= 2000; year++)
	{
		//判断year是不是闰年
		if (((year % 4 == 0)&&(year%100!=0))||(year%400==0))
				printf("%d ", year);
	}
	return 0;
}

2,写一个函数判断一年是不是闰年

复制代码
//写一个函数判断一年是不是闰年
//是闰年返回1
//不是闰年返回0
//判断是否是闰年的函数
int is_leap_year(int y) {
	//判断year是不是闰年
	if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
		return 1;
	else
		return 0;
}
int main() {
	int year = 0;
	for (year = 1000; year <= 2000; year++)
	{
		if (is_leap_year(year))
		{
			printf("%d ", year);

		}
	}
	return 0;
}

3,写一个函数,实现一个整型有序数组的二分查找

复制代码
//写一个函数,实现一个整型有序数组的二分查找
//数组传参实际上传的是数组首元素地址
//而不是整个数组
int binary_search(int arr[], int k, int sz) {//这里 arr[]是一个指针变量(存的是数组的首元素地址)
	int left = 0;
	int right = sz - 1;

	while (left <= right) {
		int mid = left + (right - left) / 2;
		if (arr[mid] < k)
		{
			left = mid + 1;
		}
		else if (arr[mid] > k) {
			right = mid - 1;
		}
		else
		{
			return mid;//找到了返回下标
		}
	}

	return -1;

}
int main() {
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int k=7;
	int sz = sizeof(arr) / sizeof(arr[0]);//这句话只有放在这里,不可放在其他函数内部
	//找到了,返回下标
	//找不到,返回-1
	int ret = binary_search(arr, k, sz);
	if (ret == -1) {
		printf("找不到\n");
	}
	else
	{
		printf("找到了,下标是:%d\n",ret);
	}
	return 0;
}

4,写一个函数,每调用一次这个函数,就会将num的值增加一

复制代码
//写一个函数,每调用一次这个函数,就会将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
//	Add(&num);
//	printf("%d\n", num);//4
//	return 0;
//}
////写法2:
int Add(int n) {
	//return n + 1;
	return ++n;
}
int main() {
	int num = 0;
	num = Add(num);
	printf("%d\n", num);//1
	num = Add(num);
	printf("%d\n", num);//2
	num = Add(num);
	printf("%d\n", num);//3
	num = Add(num);
	printf("%d\n", num);//4
	return 0;
}

5,函数的链式访问

复制代码
//函数可以嵌套调用,但不可以嵌套定义
//函数的链式访问
#include<string.h>
int main() {
	//int len = strlen("abcdef");
	//printf("%d\n", len);
	////链式访问(strlen函数的返回值作为其他函数的参数)
	//printf("%d\n", strlen("abcdef"));
	//return 0;
	
	printf("%d", printf("%d", printf("%d", 43)));//printf函数返回的是打印的字符的字数
}

6,函数的声明与定义

创建头文件add.h

复制代码
#pragma once
//函数的声明
//int Add(int , int );//或者
int Add(int x, int y);

创建源文件add.c

复制代码
//函数的定义
int Add(int x, int y) {
	return x + y;
}

创建源文件main.c

复制代码
//函数的声明与定义
//函数的声明(放在add.h中)
//int Add(int , int );//或者
//int Add(int x, int y);
#include "add.h"   //头文件包含就是函数声明的效果
int main() {
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	//加法
	int sum = Add(a, b);
	printf("%d\n", sum);

	return 0;
}
相关推荐
bestblueheart几秒前
C语言条件运算符详解:用法、求值规则及需注意的要点
c语言·条件运算符·三目运算符·ifelse·示例演示
ZPC82108 小时前
如何创建一个单例类 (Singleton)
开发语言·前端·人工智能
超绝振刀怪8 小时前
【C++多态】
开发语言·c++
workflower9 小时前
AI制造-推荐初始步骤
java·开发语言·人工智能·软件工程·制造·需求分析·软件需求
魔都吴所谓9 小时前
【Python】从零构建:IP地理位置查询实战指南
开发语言·python·tcp/ip
环黄金线HHJX.9 小时前
【吧里BaLi社区】
开发语言·人工智能·qt·编辑器
oioihoii10 小时前
Cursor根本无法调试C++
开发语言·c++
GISer_Jing10 小时前
Agent多代理架构:子代理核心机制解密
开发语言·人工智能·架构·aigc
leo_messi9410 小时前
多线程(五) -- 并发工具(二) -- J.U.C并发包(八) -- CompletableFuture组合式异步编程
android·java·c语言