当前位置: 首页 > news >正文

网站 logfiles建设银行个人网上银行网页

网站 logfiles,建设银行个人网上银行网页,精利手表网站,shopify做国内网站目录 ​编辑 题目:简单的ab 1. 题目描述 2. 输入格式 3. 输出格式 4. 样例输入 5. 样例输出 6. 解题思路 7. 代码示例 8. 报错解决 方案一 方案二 方案三 方案四 总结 题目:简单的ab 1. 题目描述 输入两个整数a和b,…

目录

​编辑

题目:简单的a+b

1.  题目描述

2.  输入格式

3.  输出格式

4.  样例输入

5.  样例输出

6.  解题思路

7.  代码示例

8.  报错解决

方案一

方案二

方案三

方案四

总结


题目:简单的a+b

1.  题目描述

输入两个整数a和b,计算a+b的和

本题很简单,但是注意此题是多组测试数据,即需要不停的接收系统的测试输入,你都可以计算结果并输出

2.  输入格式

输入两个整数A和B

范围不超过2^10

3.  输出格式

求A+B

4.  样例输入

1 1
10 20

5.  样例输出

2
30

6.  解题思路

首先,本题的首要条件是“需要不停的接收系统的测试输入,你都可以计算结果并输出”

我们可以通过while循环,不断地输入数据,进行条件判断执行

注:while(表达式){若干语句}//循环语句及其格式,若表达式里的语句成立,执行若干语句

而如何进行输入,就需要用到scanf语句

注:scanf("输入模式",地址列表);//输入语句及其格式。注:地址列表一定要加取地址符号&,如:&a,&b

而输入完对于输入语句的计算以及输出,我们可以直接在printf里执行

注:printf("输出模式",输出列表);//输出语句及其格式。注:输出模式和输出列表一一对应,如:printf("%d%d",a,b);

7.  代码示例

#include<stdio.h>
int main()
{int a=0,b=0;while(~scanf("%d%d", &a, &b))   {printf("%d\n",a+b);}    return 0;
}

想要退出循环,按下Ctrl+Z,回车才会退出循环,可能需要多循环几次

其中需要注意的一点是,在Visual Studio编辑器中可能会出现报错

'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.	Project16	D:\Visual Studio\project\Project16\Project16\FileName.cpp	5	

8.  报错解决

这里我们有两种解决方案:

方案一

将scanf改为scanf_s

#include<stdio.h>
int main()
{int a = 0, b = 0;while (~scanf_s("%d%d", &a, &b))   {printf("%d\n", a + b);}return 0;
}

        将 scanf 函数改为 scanf_s 函数的作用是增加输入的安全性,防止发生缓冲区溢出的问题。scanf_s 是 Microsoft 提供的安全版本的输入函数,相比于 scanf,它会在读取数据时进行一些额外的检查,并限制输入的字符数量。

        使用 scanf 函数时,如果输入的数据长度超过了目标变量所能容纳的大小,就可能导致缓冲区溢出,造成安全隐患。而 scanf_s 函数在读取数据时,可以指定目标变量所能接收的最大字符数量,从而避免缓冲区溢出的情况。

scanf_s 的函数签名如下:

int scanf_s(const char *format, ...);

        与 scanf 不同的是,scanf_s 在读取字符串时需要指定字符串的最大长度,以确保输入不会超出缓冲区的大小。比如,使用 scanf_s 读取一个字符串时,可以这样写:

char str[20];
scanf_s("%19s", str, sizeof(str));

        在上述代码中,限定了输入的字符串长度最多为 19 个字符(因为数组大小是 20,还要留一个字符给字符串结尾的空字符)。这样做可以防止用户输入超过目标变量所能容纳的字符数量。

        总之,通过使用 scanf_s 函数,我们可以增加输入操作的安全性,防止发生缓冲区溢出的问题。然而,需要注意的是,scanf_s 是 Microsoft 特定的函数,在其他编译器中可能不被支持。因此,在使用 scanf_s 时应该注意兼容性问题。

方案二

在代码最上方加:

#define _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>int main()
{int a = 0, b = 0;while (~scanf("%d%d", &a, &b))   {printf("%d\n", a + b);}return 0;
}

        记住一定是在代码的最上方加,否则依旧报错,因为预处理指令是在编译器开始编译之前执行的。而编译器是按照源代码的顺序逐行读取和编译代码的,因此如果 #define _CRT_SECURE_NO_WARNINGS 放在其他代码之后,那么编译器可能会在处理到某些不安全的函数时已经发出了警告信息,从而无法起到禁用警告的效果。

   #define _CRT_SECURE_NO_WARNINGS 是一条预处理指令(preprocessor directive),在 C 语言编程中常用于禁用特定编译器警告信息。

        在 Microsoft Visual Studio 编译器中,使用一些被认为不安全的函数(如 fopenscanf 等)时,编译器会发出警告。这些警告是为了提醒开发者使用更安全的函数或者采取更安全的方法,以避免潜在的安全问题(如缓冲区溢出)。

        然而,在某些情况下,我们可能需要继续使用这些被标记为不安全的函数,例如在旧代码的迁移过程中或者与其他平台进行兼容性开发时。此时,#define _CRT_SECURE_NO_WARNINGS 可以用来禁用这些特定警告,使得编译器不再产生相关的警告信息。

        通过包含该预处理指令,我们告诉编译器不要发出与安全问题相关的警告,这样在编译时就不会看到相关的警告信息了。但需要注意的是,禁用这些警告并不会改变函数的行为,因此在使用这些函数时仍然需要谨慎确保输入的安全性。

        需要强调的是,禁用编译器警告可能会导致潜在的安全问题被忽略,因此在使用 #define _CRT_SECURE_NO_WARNINGS 时需要权衡利弊,并尽可能采取更安全的函数或方法来处理相应的问题。

方案三

在代码最上方加:

#define _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_NO_DEPRECATE
#include<stdio.h>int main()
{int a = 0, b = 0;while (~scanf("%d%d", &a, &b))   {printf("%d\n", a + b);}return 0;
}

        放到最上方的原因同方案二

  #define _CRT_SECURE_NO_DEPRECATE 是一条预处理指令(preprocessor directive),在 C 语言编程中常用于禁用某些特定函数的警告信息,具体来说,它可以用来避免使用已经被VS 标记为不安全的函数时产生的编译器警告。

        例如,在使用 fopen 函数时,如果不使用 _CRT_SECURE_NO_DEPRECATE,则可能会出现类似以下的编译器提示:

warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead.

        这是因为在Visual Studio中,许多标准 C 库函数被认为是不安全的,因为它们可能会受到缓冲区溢出等安全问题的影响。因此,为了更好地保护程序的安全性,Microsoft 建议使用相应的安全函数替代这些不安全的函数。

        然而,对于一些旧的代码或者遗留系统,可能难以修改所有不安全函数的调用。在这种情况下,我们可以使用 _CRT_SECURE_NO_DEPRECATE 来禁用编译器警告,从而继续使用这些不安全的函数。

        需要注意的是,使用 _CRT_SECURE_NO_DEPRECATE 可能会降低程序的安全性,因此在使用时要谨慎权衡利弊,并尽可能使用更安全的函数或方法来处理相应的问题。

方案四

在代码上方加:

#pragma warning(disable:4996)
#pragma warning(disable:4996)
#include<stdio.h>int main()
{int a = 0, b = 0;while (~scanf("%d%d", &a, &b))   {printf("%d\n", a + b);}return 0;
}

   #pragma warning(disable:4996) 是一条预处理指令(preprocessor directive),用来禁用编译器产生与函数安全问题相关的警告信息。这个警告通常出现在使用一些被标记为不安全的函数时,例如 scanfstrcpy 等。警告的代码是 C4996

        在 Visual Studio 中,这些函数通常被标记为不安全,因为它们可能导致缓冲区溢出等安全问题。因此,编译器会发出警告信息,提醒开发者使用更安全的函数或方法。

        但是,在某些情况下,我们需要继续使用这些被标记为不安全的函数,例如在旧代码的迁移过程中或者与其他平台进行兼容性开发时。此时,#pragma warning(disable:4996) 可以用来禁用这个特定的警告,使得编译器不再产生相关的警告信息。

        通过包含该预处理指令,我们告诉编译器不要发出与安全问题相关的警告,这样在编译时就不会看到相关的警告信息了。但需要注意的是,禁用这些警告并不会改变函数的行为,因此在使用这些函数时仍然需要谨慎确保输入的安全性。

        需要注意的是,#pragma warning(disable:4996) 只是针对 Visual Studio 编译器有效,如果使用其他编译器,可能需要使用不同的预处理指令或者参数。

        总之,#pragma warning(disable:4996) 用于禁用与函数安全问题相关的警告,可以帮助我们在某些情况下继续使用被标记为不安全的函数。但是,禁用编译器警告可能会导致潜在的安全问题被忽略,因此在使用 #pragma warning(disable:4996) 时需要权衡利弊,并尽可能采取更安全的函数或方法来处理相应的问题。

总结

方案一:将scanf改为scanf_s

方案二:在代码最上方加:#define _CRT_SECURE_NO_WARNINGS

方案三:在代码最上方加:#define _CRT_SECURE_NO_DEPRECATE

方案四:在代码上方加:#pragma warning(disable:4996)

简单来说,编译器看不到错我,我就是对的

http://www.yayakq.cn/news/329765/

相关文章:

  • 泰安网站建设开发公司国家商标注册官网
  • 浦项建设公司员工网站西城网站制作公司
  • 互联网公司网站做美团旅游网站多少钱
  • 石家庄市网站建设中国建设银行企业官网站
  • 一个公司可以注册几个网站wordpress page模版
  • 网站公司企业网站如何把网站上传到网上
  • 济宁市城市建设局网站数控技术是学什么
  • 南昌集团制作网站开发wordpress全自动淘宝客
  • 网站开发已有的知识储备用dede做的网站首页
  • 石家庄网站建设石家庄搭建网站代码
  • 3d做ppt模板下载网站1v1网站建设
  • 山东住房建设部官方网站品牌营销策划公司
  • 购物网站开发背景陕西建设信息网官网
  • 广州建设网站广州穗科建设管理有限公司网站
  • 天正电气网站建设建设网站平台需要什么硬件配置
  • 源码资源下载站用linux系统怎么自己建设网站
  • 网站建设重点步骤房价成交数据官网查询
  • 上海网站设计公司联系方式小程序怎么开店
  • 阿里云服务器做电影网站吗网站首页流程图
  • 学网站建设前景优秀网站h5案例分享
  • 优秀企业网站建设公司手机怎么制作图文广告
  • 深圳规模较大的网站建设公司郴州市网站建设公司
  • 建站怎么建网站规划模板
  • 公司网站功能安装wordpress之后
  • 天津网站设计诺亚科技网站右下角浮动效果如何做
  • 网站内页seo查询广东网站设计公司价格
  • 做网站要服务器和什么软件合肥中小企业网站制作
  • 深圳市龙华区住房和建设局网站wordpress获取当前页面内容
  • 网站大全网站免费怎么做定位钓鱼网站
  • 公司网上注册在哪个网站做兼职的网站贴吧