C语言<2>输入输出习题训练以及scanf函数报错解决

目录

转义序列、格式控制符查询表

C语言初心者习题

1. 求一元二次方程ax2+bx+c=0的根,其中a,b,c由键盘输入。

2.  编写程序,从键盘上输入两个电阻的值,求它们并联和串联的电阻值,输出结果保留两位小数。

3. 输入三角形的三边长,求三角形的面积。

4. 编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。

scan函数报错问题


转义序列、格式控制符查询表

 先附上两个初心者必备表

C语言初心者习题

1. 求一元二次方程ax2+bx+c=0的根,其中a,b,c由键盘输入。

#include<stdio.h>
#include<math.h>
int main()
{
	double a, b, c, d, x1, x2, p, q;
	scanf("%lf,%lf,%lf", &a, &b, &c);
	d = b * b - 4 * a * c;
	p = -b / (2.0 * a);
	q = sqrt(d) / (2.0 * a);
	x1 = p + q;
	x2 = p - q;
	printf("x1=%7.2llf\nx2=%7.2lf\n", x1, x2);
	return 0;

2.  编写程序,从键盘上输入两个电阻的值,求它们并联和串联的电阻值,输出结果保留两位小数。

#include<stdio.h>
#include<math.h>
int main()
{
	double r1=0, r2=0, chuan=0, bing=0;
	scanf("%lf,%lf", &r1, &r2);
	chuan = r1 + r2;
	bing = 1 / ((1 / r1) + (1 / r2));
	printf("串联:%7.2lf\n并联:%7.2lf\n", chuan,bing);
		return 0;
}

3. 输入三角形的三边长,求三角形的面积。

#include<stdio.h>
#include<math.h>
int main()
{
	double a, b, c,p,s;
	scanf("%lf,%lf,%lf", &a, &b, &c);
	p = (a + b + c) / 2;
	s = sqrt(p * (p - a) * (p - b) * (p - c));
	printf("s=%7.2llf\n", s);
	return 0;
}

4. 编写程序,从键盘输入一个字符,求出与该字符前后相邻的两个字符,按从小到大的顺序输出这三个字符的ASCII码。

#include <stdio.h>
int main()
{
	char ch1;
	printf("please input char:");
	scanf("%c", &ch1);
	printf("前= %c , ASCLL= %d \n", ch1 - 1, ch1 - 1);
	printf("本次输入 = %c , ASCLL= %d \n", ch1, ch1);
	printf("后= %c , ASCLL= %d \n", ch1 + 1, ch1 + 1);
	return 0;
}

scan函数报错问题

值得注意的是,visual studio 如果出现

错误    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.    test_myfirstprogram      
 

以下字样

原因:

scanf这个函数在多线程程序可能不安全

解决方法

1, 使用scanf_s代替scanf函数

(_s)代表(save)

2,单线程的简单代码可以通过更改预处理器定义来解决问题

根据报错提示在程序第一句写上:

#define _CRT_SECURE_NO_WARNINGS

或者更改预处理器

右键/选中+ALT+ENTER 进入程序的如图项目的属性界面

 编辑预处理器定义

粘贴 _CRT_SECURE_NO_WARNINGS至预处理器定义

就可以正常使用scanf函数了

顺带一提scanf_s

 (63条消息) C语言问题:0xC0000005: 写入位置 0xFFFFFFCC 时发生访问冲突。_qq_28069941的博客-CSDN博客_c语言写入位置时发生访问冲突

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值