C语言的输出和输入

来自姬鸿昌的知识库
跳到导航 跳到搜索

https://www.bilibili.com/video/BV1vR4y1H7MY/?p=9

示例:输入三角形的三条边,计算三角形的面积。使用海伦公式计算

海伦公式.png

开平方函数:

https://zh.cppreference.com/w/c/numeric/math/sqrt


输出和输入函数的使用。

输出

printf 函数称为格式输出函数,其关键字最末一个字符 f 就是“格式”(format)的意思。其功能是按用户指定的格式,把指定的数据显示到显示器上。


printf 函数调用的一般形式为:

printf("格式控制字符串", 输出列表);

其中格式控制字符串用于指定输出格式。格式控制串可由格式字符串非格式字符串两种组成。

格式字符串是以 % 开头的字符串,在 % 后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。

如:

“%d”表示按十进制整型输出;

“%o”表示按八进制整型输出;

“%x”表示按十六进制整型输出;

“%ld”表示按十进制长整型输出;

“%c”表示按字符型输出;

“%f”表示按浮点数输出等。

非格式字符串在输出时原样打印,在显示中起提示作用。

#include<stdio.h>
int main()
{
	int a = 10;

	printf("十进制:%d 八进制:%o 十六进制:%x \n", a, a, a);
	return 0;
}
十进制:10 八进制:12 十六进制:a
#include<stdio.h>

int main()
{
	int a = 10;
	float ft = 12.25;
	char ch = 'a';

	printf("a = %d ft = %f ch = %c \n", a, ft, ch);
	return 0;
}
a = 10 ft = 12.250000 ch = a


输出列表中给出了各个输出项,要求格式字符串和各输出项在数量和类型上应该一一对应。

输入

scanf 函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。

scanf 函数的一般形式:

scanf("格式控制字符串", 地址列表);

其中,格式控制字符串的作用与 printf 函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。

地址列表中给出各变量的地址。地址是由运算符“&”后跟变量名组成的。

#include<stdio.h>

int main()
{
	char ch;
	int a;
	float ft;
	scanf("%c %d %f", &ch, &a, &ft);

	printf("ch = %c a = %d ft = %f \n", ch, a, ft);

	return 0;
}

此时编译会报错:

严重性 代码 说明 项目 文件 行 禁止显示状态

错误 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. hello E:\record\2022\10\9\hello\hello.cpp 10


加入宏“#define _CRT_SECURE_NO_WARNINGS 1”后:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

int main()
{
	char ch;
	int a;
	float ft;
	scanf("%c %d %f", &ch, &a, &ft);

	printf("ch = %c a = %d ft = %f \n", ch, a, ft);

	return 0;
}

编译运行并依次输入“x”“空格”“12”“空格”“12.25”:

x 12 12.25
ch = x a = 12 ft = 12.250000

注意:使用 scanf 函数进行输入时不要给“\n”

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

int main() 
{
	int a, b, c;
	scanf("%d %d %d", &a, &b, &c); // 12 23 34
	printf("a = %d b = %d c = %d \n", a, b, c);
	return 0;
}

因为 scanf 函数中的格式字符串中占位符是以“空格”间隔的,所以在输入时也要输入空格,最后键入回车就代表输入完毕:

12 23 34
a = 12 b = 23 c = 34

如果 scanf 函数中提供的格式字符串中占位符是以“逗号”间隔:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

int main() 
{
	int a, b, c;
	scanf("%d,%d,%d", &a, &b, &c); // 12 23 34
	printf("a = %d b = %d c = %d \n", a, b, c);
	return 0;
}

那么在编译运行时就要输入逗号才能正确输入:

12,23,34
a = 12 b = 23 c = 34

如果再以空格分隔录入就会录入失败:

12 23 34
a = 12 b = -858993460 c = -858993460

海伦公式的实现

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>

int main()
{
	float a = 0, b = 0, c = 0, p = 0, s = 0;
	scanf("%f %f %f", &a, &b, &c);
	p = (a + b + c) / 2;
	s = sqrt(p * (p - a) * (p - b) * (p - c));
	printf("s = %f \n", s);
	return 0;
}
3 4 5
s = 6.000000