C语言的输出和输入
https://www.bilibili.com/video/BV1vR4y1H7MY/?p=9
示例:输入三角形的三条边,计算三角形的面积。使用海伦公式计算
开平方函数:
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