C语言初学函数(练习)

//练习1:写一个函数在100-200之间可以判断一个数是不是素数

#include<stdio.h>

int is_prime(int z)

{

int j = 0;

for (j = 2; j < z; j++)

{

if (z % j == 0)

return 0;

}

return 1;

}

int main()

{

int i = 0;

for (i = 100; i <= 200; i++)

{

if (is_prime(i) == 1)

printf("%d ", i);

}

return 0;

}

//练习2:写一个函数判断在1000-2000年之间的闰年

#include<stdio.h>

int is_run_year(int z)

{

if ((z % 4 == 0) && (z % 100 != 0) || (z % 400 == 0))

return 1;

else

return 0;

}

int main()

{

int i = 0;

for (i = 1000; i <= 2000; i++)

{

//判断i是否为闰年

int ret = is_run_year(i);

if (ret == 1)//这里必须改为ret,不能是is_run_year==1

printf("%d ", i);

}

return 0;

}

//练习3:写一个函数,实现一个整形有序数组的二分查找

#include<stdio.h>

int main() //二分法

{

int arr\[\] = { 1,2,3,4,5,6,7,8,9,10 };

int k = 7;

int sz = sizeof(arr) / sizeof(arr0);

int left = 0;

int right = sz - 1;

int mid = 0;

while (left <= right)

{

mid = (left + right) / 2;//这里不能加int给mid

if (arrmid < k)

{

left = mid + 1;

}

else if (arrmid > k)

{

right = mid - 1;

}

else

break;

}

if (left <= right)

printf("找到了,下标是%d", mid);

else

printf("找不到");

return 0;

}

//二分查找函数版

//本质上arr是一个指针

binary_search(int arr\[\], int k,int sz)

{

//算法的实现

int left = 0;

int right = sz - 1;

while (left<=right)

{

int mid = (left + right) / 2;

if (arrmid < k)

{

left = mid + 1;

}

else if (arrmid > k)

{

right = mid - 1;

}

else

{

return mid;

}

}

return -1;

}

int main()

{

//在一个有序数组中查找具体的某个数

//如果找到了返回这个数的下标,找不到返回-1

int arr\[\] = { 1,2,3,4,5,6,7,8,9,10 };

int k = 7;

int sz = sizeof(arr) / sizeof(arr0);

int ret= binary_search(arr,k,sz);//在arr里找k。传过去的是arr首元素的地址

if (ret == -1)

{

printf("找不到指定的数字");

}

else

{

printf("找到了,下标是:%d\n", ret);

}

return 0;

}

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

#include<stdio.h>

void Add(int* p)

{

(*p)++;

}

int main()

{

int num = 0;

Add(&num);

printf("num=%d\n", num);

Add(&num);

printf("num=%d\n", num);

Add(&num);

printf("num=%d\n", num);

return 0;

}

相关推荐
豆沙沙包?4 分钟前
C++-程序的内存模型(P84-P88)
java·jvm·c++
吴声子夜歌22 分钟前
正则指引——匹配原理
java·正则表达式
VL——MOESR33 分钟前
【LuoguP1967】货车运输【生成树】【倍增】
c++·算法·题解·倍增·生成树
手写码匠35 分钟前
华为云Flexus+DeepSeek征文|Agent 记忆系统实战:用 DeepSeek-R1/V3 + Dify 会话变量打造跨会话长期记忆
人工智能·深度学习·算法·aigc
Olafur_zbj1 小时前
【AI】CUDA编程中的维度
人工智能·算法
未秃头的程序猿1 小时前
凌晨3点被叫醒:线上OOM,我用这套流程40分钟定位根因
java·jvm·后端
letisgo51 小时前
JDK21 + Spring AI 2.0 入场指南:2026 年 Java 开发者 AI 架构全景图
java·ai·idea·jdk21
白仑色1 小时前
Spring Boot 从切面统一控制事务
java·spring boot·aop·spring事务
十月的皮皮1 小时前
STM32从零到量产开发:四路继电器工业控制模块开发 -上位机 Program.cs 应用程序入口设计说明
c语言·stm32·单片机·stm32cubemx·hal库
Flynt1 小时前
Java并行流,让我debug了一整天
java