//2022.3.4
//输入三角形的三边长,求三角形面积
//已知三角形的三边长a.b.c 则该三角形的面积公式为
//area= [s(s-a)(s-b)(s-c)] 有个很长的格式叫什么"根”我打不出来
//其中 s= (a+b+c)/2
//下面的程序运行成功了但是 不对,以后在研究
//#include <stdio.h>
//#include <math.h>
//
//void main()
//{
// float a, b, c, s, area;
// scanf_s("%lf,%lf,%lf", &a, &b, &c);
// //s = (a + b + c) / 2.0;可以和第9行调换下试试结果
// s = 1/ 2 * (a + b + c);
// area = sqrt(s * (s - a) * (s - b) * (s - c));
// printf("a=%7.2f, b=%7.2f, c=%7.2f, s=7.2%f\n", a, b, c, s);
// printf("area = %7.2f\n", area);
//}
//2022.3.4
//在本例中求出各种关系运算符的值,字符变量是以它对应的ASCII码参与运算的
// 对于含多个关系运算符的表达式,如k==j==i+5,根据运算符的左结合性,先计算
// k==j,该式不成立,其值为0,在计算0==i+5,也不成立,故表达式值为0.
//关系表达式的值是“真”和“假”,用“1”和“0”表示,
//如:5 > 0 的值为“真”,即为1. i=5
//(a=3)>(b=5)由于3>5不成立,故其值为假,即为0.
// 下面的程序运行不成功,以后在研究
//#include<stdio.h>
//void main()
//{
// char c = 'k';
// int i = 1, j = 2, k = 3;
// float x = 3e+5, y = 0.85;
//
// printf("%d,%d\n", 'a' + 5 < c, -i - 2 * j >= k + 1);
// printf("%d,%d\n", 1 < j < 5, x - 5.25 <= x + y);
// paintf("%d,%d\n", i + j + k == -2 * j, k == j == i + 5);
//}
//2022.3.4
//逻辑表达式
// 下面的程序运行出来了不知道对不对结果是0,1,0,0,1以后在研究
//#include<stdio.h>
//void main()
//{
// char c = 'k';
// int i = 1, j = 2, k = 3;
// float x = 3e+5, y = 0.85;
// printf("%d,%\n", !x * !y, !!!x);
// printf("%d,%d\n", x || i && j - 3, i < j&& x < y);
// printf("%d,%d\n", i == 5 && c && (j = 8), x + y || i + j + k);
//}
//2022.3.4
//if 语句第一种形式为基本形式其语义是:如果表达式的值为真,则执行其后的语句
//否则不执行该语句
// 下面的程序运行出来了不知道对不对以后在研究
//#include <stdio.h>
//void main()
//{
// int a, b, max;
// printf("\n input two numbers:");
// scanf_s("%d%d", &a, &b);
// max = a;
// if (max < b)
// {
// max = b;
// }
// printf("max = %d", max);
//}
//第二种形式:if - else
//if (表达式) 语句1:else 语句2
// 下面的程序运行不成功,以后在研究
//
//#include <stdio.h>
//void main()
//{
// int a, b;
// printf("\n input two numbers; ");
// scanf_s("%d", &a, &b);
// if (a > b)
// {
// printf("max = %d\n", a);
// }
// else
// {
// printf("max = %d\n", b);
// }
// printf("max = %d", max);
//}
//if 语句的三种形式
// 下面的程序运行出来了不知道对不对以后在研究
//#include <stdio.h>
//void main()
//{
// char c;
// printf("input a charcter;");
// c = getchar();
// if ( c < 32)
// {
// printf("This is a control character!\n");
// }
// else if ( c >= '0' && c <= '9')
// {
// printf("This is a digit\n");
// }
// else if ( c >= 'A' && c <= 'Z')
// {
// printf("This is a capital letter\n");
// }
// else if ( c >= 'a' && c <= 'z')
// {
// printf("This is a small letter\n");
// }
// else printf("This is an other character\n");
//}
//2022.3.4
//在使用 if 语句中还应注意以下问题
//if (a = 5)语句;
//if (b) 语句;
//都是允许的,只要表达式的值为非 0, 即为“真”
//if (a=5) 和 a = 5 的区别
// 下面的程序运行出来了应该是2不知道对不对以后在研究
//#include <stdio.h>
//void main()
//{
// int a;
// a = 2;
// if ( a == 3 )
// {
// printf("a equals 3!!\n");
//
// }
// else
// {
// printf("a is %d\n", a);
// }
//}
/// 2022.3.4
//在使用 if 语句中还应注意以下问题
//if (a = 5)语句;
//if (b) 语句;
//都是允许的,只要表达式的值为非 0, 即为“真”
//if (a=5) 和 a = 5 的区别
// 下面的程序运行没出来不知道怎么回事以后在研究
//#include <stdio.h>
//void main()
//{
// int a;
// a = 3;
// if (a == 3);
// {
// printf("a equals 3!!\n");
// }
// else
// {
// printf("a is %d\n", a);
// }
//}
//补充例题:写一个程序完成下列功能:
//1、输入一个分数 score
//2、 score < 60 输出 E
// 3、60 <= score < 70 输出 D
// 4、70 <= score < 80 输出 C
// 5、80 <= score < 90 输出 B
// 5、90 <= score 输出 A
// 下面的程序运行没出来不知道怎么回事以后在研究
//#include <stdio.h>
// void main()
//{
// int acore;
// printf("please input a sore;");
// scanf_s("%d", &score);
//
// if (score < 60);
// {
// printf("The score is E!\n");
// }
// else if ((score > 60 || score == 60) && score < 70)
// {
// printf("The score is D!\n");
// }
// else if ((score > 70 || score == 70) && score < 80)
// {
// printf("The score is C!\n");
// }
// else if ((score > 80 || score == 80) && score < 90)
// {
// printf("The score is B!\n");
// }
// else
// {
// printf("The score is A!\n");
// }
//
//}
//
//补充例题2:输入三个数 a, b, c 要求按由小到大的顺序输出
//提示: if a > b 将 a 和 b 对换
//if a > c 将 a 和 c 对换
//if b > c 将 b 和 c 对换
//下面的程序运行没出来不知道怎么回事以后在研究
#include <stdio.h>
void main()
{
int a, b, c, temp;
printf("please input three numbers:");
scanf_s("%d%d%d", &a, &b, &c);
if (a > b)
{
temp = a;
a = b;
b = temp;
}
if (a > c)
{
temp = a;
a = c;
c = temp;
}
if (b > c)
{
temp = b;
b = c;
c = 1 temp;
}
printf("%d %d %d \n", a, b, c);
}
2022.3.4 顺序结构程序设计举例
例4.14 输入三角形的三边长,求三角形面积,
已知三角形的三边长 a,b,c, 则该三角形的面积公式为:
area =[s(s-a)(s-b)(s-c)
其中 s= (a+b+c)/2
关系运算符和表达式
关系运算符:在程序中经常需要比较两个量的大小关系,以决定程序下一步工作,
比较两个量的运算符称为关系运算符,
关系表达式
关系表达式的一般形式为:
表达式 、关系运算符、表达式
例如:
a+b > c-d
x > 3/2
'a'+1 < c
-i-5*j == k+1
都是合法的关系表达式,由于表达式也可以又是关系表达式,因此也允许出现嵌套的情况,
例如: a >(b>c)
a !=(c==d)等。
逻辑运算符和表达式
逻辑运算符极其优先次序
C语言中提供了三种逻辑运算符
1、&& 与运算
2、|| 或运算
3、! 非运算
与运算符 && 和或运算符 均为双目运算符,具有左结合性,非运算符 !为单目运算符
具有右结合性,逻辑运算符和其它运算符优先级的关系可表示如下:
!非 → &&(与)→ 、| (或)
逻辑运算的值
逻辑运算的值也为“真”和“假”两种,用:“1”和“0”;来表示。其求值规则如下:
1、与运算 &&:参与运算的两个量都为真时,结果才为真,否则为假。
例如: 5>0 && 4>2
由于 5>0 为真。 4>2 也为真。相与的结果也为真。
2、或运算||: 参与运算的两个量只要有一个为真,结果就为真,两个量都为假时结果为假。
例如: 5>0 || 5>8
由于 5>0 为真,相或的结果也就为真,
if 语句
用 if 语句可以构成分支结构,它根据给定的条件进行判断,以决定执行某个分支程序段,
C 语言的 if 语句由三种基本形式。
第一种形式为基本形式:
if (表达式)语句
其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句,其过
第二种形式:if-else
if(表达式) 语句1:else 语句2
第三种形式为 :if-else-if 形式
前二种形式的 if 语句一般用于两个分支的情况,当有多个分支选择时,可采用
if-else-if 语句,其一般形式为:if (表达式)
语句1;
else if (表达式2)
语句2;
else if (表达式3)
语句3;
............
else if (表达式m)
语句m
else
语句n;
在使用 if 语句中还应注意以下问题:
1、在三种形式的 if 语句中,在 if 关键字之后均为表达式,该表达式通常是逻辑表达式或
关系表达式,但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量。
例如: if (a=5)语句;
if (b) 语句;
都是允许的,只要表达式的值为非 0,即为“真”。
2、在 if 语句中,条件判断表达式必须用括号括起来,在语句之后必须加分号,
3、在 if 语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组
(多个)语句,则必须把这一组语句用 {} 括起来组成一个复合语句,但要注意的是在
} 之后不能在加分号。
例如:if (a>b)
{ {
a++;
b++;
}
else
{
a = 0;
b = 10;
}
补充例题:写一个程序完成下列功能:
1、输入一个分数 score
2、 score < 60 输出 E
3、60 <= score < 70 输出 D
4、75 <= score < 80 输出 C
5、80 <= score < 90 输出 B
5、90 <= score 输出 A
补充例题2:输入三个数 a,b,c 要求按由小到大的顺序输出
提示: if a > b 将 a 和 b 对换
if a > c 将 a 和 c 对换
if b > c 将 b 和 c 对换