当前位置:网站首页>C语言初级—判断一个数是不是素数(函数封装)
C语言初级—判断一个数是不是素数(函数封装)
2022-08-02 14:03:00 【iccoke】
判断一个数是不是素数
基本思想:从键盘获取一个数字,判断其是不是素数并用函数形式封装
首先函数主题是判断一个数是不是素数和函数体调用
素数是指除了一和他本身之外不能被其他数整除的数
因此从二开始作为键盘输入数的除数
如果在二到键盘输入数之间的能有别的数将其整除说明该数不是素数
反之在遍历了二到键盘输入数之后依旧没有被整除的数即为素数
依此思想得到的初始代码如下
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
bool isprimer(int num) {
int i;
bool flag=false;
for (i = 2; i < num; i++)
{
if (num % i == 0)
break;
}
if (i == num)
{
flag = true;
}
return flag;
}
int main() {
int num;
scanf("%d", &num);
bool result = isprimer(num);
if (result == true)
{
printf("这是素数\n");
}
else {
printf("这不是素数\n");
}
return 0;
}
代码体涉及的函数体及其调用
bool isprimer(int num) {
int i;
bool flag=false;
for (i = 2; i < num; i++)
{
if (num % i == 0)
break;
}
if (i == num)
{
flag = true;
}
return flag;
}
bool为函数返回值类型 Isprimer为函数名(函数名要做到见名知意)
其中false 和 true不需要进行额外定义
return的返回值需要与函数返回值类型相同
函数的调用
int main() {
int num;
scanf("%d", &num);
bool result = isprimer(num);
if (result == true)
{
printf("这是素数\n");
}
else {
printf("这不是素数\n");
}
return 0;
}
函数的调用出现在
bool result = isprimer(num);
num为实际参数,而函数体内定义的为形式参数,两者在数值上相同,但在意义上不同,即实际参数和形式参数其中任一改变不会影响另一个参数
因为 isprimer()得到的值为bool类型,因此需要定义一个bool类型的result来接收isprimer()返回的值
其中涉及头文件#define _CRT_SECURE_NO_WARNINGS的使用
error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.(这是在不添加头文件#define _CRT_SECURE_NO_WARNINGS下使用scanf的错误)。
因此根据错误我们选择使用scanf_s代替scanf或者使用头文件
但scanf_s在vs上可以运行,但是换成其它编译器则会出现问题,因此为了方便搬运和代码复用,我们在使用scanf时应加头文件#define _CRT_SECURE_NO_WARNINGS。
代码优化
根据思想,我们发现代码中出现冗余,做如下修改
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
bool isprimer(int num) {
int i;
bool flag=false;
for (i = 2; i < num; i++)
{
if (num % i == 0)
break;
else {
flag = true;
}
}
return flag;
}
int main() {
int num;
scanf("%d", &num);
bool result = isprimer(num);
if (result == true)
{
printf("这是素数\n");
}
else {
printf("这不是素数\n");
}
return 0;
}
边栏推荐
- Verilog学习 系列
- Deep learning framework pytorch rapid development and actual combat chapter4
- verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第九章)
- Flask请求应用上下文源码分析
- drf路由组件Routers
- [ROS] The software package of the industrial computer does not compile
- 第七单元 ORM表关系及操作
- MarkDown语法汇总
- 云片网案例
- 使用云GPU+pycharm训练模型实现后台跑程序、自动保存训练结果、服务器自动关机
猜你喜欢
run yolov5
The most complete ever!A collection of 47 common terms of "digital transformation", read it in seconds~
[ROS](02)创建&编译ROS软件包Package
[ROS]roscd和cd的区别
第十三单元 混入视图基类
8581 线性链表逆置
Unit 13 Mixing in View Base Classes
重新学习编程day1 【初始c语言】【c语言编写出计算两个数之和的代码】
[ROS] The software package of the industrial computer does not compile
【VCU】详解S19文件(S-record)
随机推荐
Flask-SQLAlchemy
Raj delivery notes - separation 第08 speak, speaking, reading and writing
Unit 7 ORM table relationships and operations
yolov5,yolov4,yolov3 mess
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十一章)
Creating seven NiuYun Flask project complete and let cloud
第七单元 ORM表关系及操作
海明校验码纠错设计原理
drf view component
Flask框架的搭建及入门
STM32(F407)—— 堆栈
Flask项目的完整创建 七牛云与容联云
redis延时队列
drf source code analysis and global catch exception
云GPU(恒源云)训练的具体操作流程
云片网案例
drf视图组件
第六单元 初识ORM
yolov5改进(一) 添加注意力集中机制
Linux: CentOS 7 install MySQL5.7