代码运行警告,求指点下
一个十位数求和以及求平均值代码。运行时会有警告,不知道我哪个步骤做的不对,求指出。(ps 代码能运行的,只是运行输出结果后警告)
严重性 代码 说明 项目 文件 行 禁止显示状态
警告 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. 蓝桥杯试题集 D:\Mycode\蓝桥杯试题集\蓝桥杯试题集\求和求平均值.c 18
这里警告虽然是scanf,但我看到的红标指在了函数调用这一行。
#include<stdio.h>
int i;
void fun(float *s) {
float sum = 0;
for (i = 0; i < 10; i++) {
sum += s;
}
printf("%g\n", sum);
float avg = sum / 10;
printf("%g", avg);
}
int main() {
float s;
for (i = 0; i < 10; i++) {
scanf("%f", &s);
}
fun(s);
return 0;
} 插个眼 我觉得应该是这里
float s;
把float s;改成float s;
应该是你申请的数组长度为10,然后又输入了10个数,导致数组没有存放表示结束的‘\0’的位置导致警告数据不安全 第 10 和 12 行:%g 为64位的浮点数(double),而你的 sum 是 float
第 16 行:定义数组 s 大小为 9,但是你输入 10 个数据(执行代码时候,可能没有问题,也可能有问题,在于数组内存位置 +1 的地方有没有被运用,如果是空,则没事,如果已被运用,则报错)
报错: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. 其实和你的编辑器有关,必须设定,或者可以试试:#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
我的代码供参考:#include <stdio.h>
int main()
{
float sum;
for(int i = 0; i < 10; i++){
float a;
scanf("%f", &a);
sum += a;
}
printf("%.2f\n%.2f", sum, sum/10);
return 0;
}1.2 2.2 3.2 4.2 5.2 6.2 7.2 8.2 9.2 10.2
57.00
5.70 村里小黑 发表于 2021-10-19 14:47
我觉得应该是这里
float s;
把float s;改成float s;
确实,学到了{:10_323:} 傻眼貓咪 发表于 2021-10-19 14:59
第 10 和 12 行:%g 为64位的浮点数(double),而你的 sum 是 float
第 16 行:定义数组 s 大小为 9,但 ...
问题出在于数组长度,改了没事了。不过你说的其他小问题我也好好反省下,感谢{:10_323:}
页:
[1]