当前位置:网站首页>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;
}边栏推荐
- Flask-RESTful request response and SQLAlchemy foundation
- [ROS] Compiling packages packages encounters slow progress or stuck, use swap
- (ROS) (03) CMakeLists. TXT, rounding
- ftp常用命令详解_iftop命令详解
- Flask-RESTful请求响应与SQLAlchemy基础
- Flask framework
- drf序列化器-Serializer
- St. Regis Takeaway Notes - Lecture 10 Swagger
- verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第七章)
- 第十二单元 关联序列化处理
猜你喜欢
![[ROS] The software package of the industrial computer does not compile](/img/a8/a1347568170821e8f186091b93e52a.png)
[ROS] The software package of the industrial computer does not compile

8581 线性链表逆置

Visual Studio配置OpenCV之后,提示:#include<opencv2/opencv.hpp>无法打开源文件

【VCU】详解S19文件(S-record)

【ROS】工控机的软件包不编译

Implementation of redis distributed lock and watchdog

第十五单元 分页、过滤

Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed to apply plugin [id ‘c

瑞吉外卖笔记——第10讲Swagger

static关键字3种作用,简单粗暴对比,好理解
随机推荐
第十四单元 视图集及路由
paddleocr window10初体验
Flask-SQLAlchemy
Error Correction Design Principle of Hamming Check Code
yolov5,yolov4,yolov3乱七八糟的
EasyExcel 的使用
第四单元 路由层
Unit 15 Paging, Filtering
c语言用scanf出错不安全的解决办法
drf routing component Routers
瑞吉外卖笔记——第10讲Swagger
What are the file encryption software?Keep your files safe
Linux: CentOS 7 install MySQL5.7
[ROS] (06) ROS Communication - Topic Communication
Flask contexts, blueprints and Flask-RESTful
网页设计(新手入门)[通俗易懂]
8580 Merge linked list
Unit 8 Middleware
Creating seven NiuYun Flask project complete and let cloud
ToF相机从Camera2 API中获取DEPTH16格式深度图