C语言程序设计——控制结构
1. 顺序程序设计
(1)已知三边,计算三角形面积
问题:输入三角形的边长a、b、c,求三角形面积area,并输出。
/*
* 功能:计算三角形面积
* 条件:知道三个边a、b、c的长
* 模型:area=sqrt(s*(s-a)*(s-b)*(s-c));
* s = (a + b + c)/5
*/
#include <stdio.h>
#include <math.h>
void main()
{
float a,b,c,s,area;
printf("请输入三个边:");
scanf("%f%f%f",&a,&b,&c);
s = (a+b+c)/2;
area = sqrt(s * (s-a) * (s-b) * (s-c));
printf("a=%7.2f,b=%7.2f,c=%7.2f\n",a,b,c);
printf("area = %8.3f\n",area);
}
– 思考题:–
1.代码中的语句可以交换顺序吗?
2.哪些交换不影响程序执行?
3.哪些会影响执行结果?
4.哪些又会引起错误?
(2)求圆的周长l和面积S
问题:输入圆的半径r,计算圆的周长和面积,并输出(精度为两位小数)。
/**
* 功能:已知圆的半径,求圆面积和周长
*/
#include <stdio.h>
#define PI 3.14159
void main()
{
double r,l,s;
printf("请输入圆的半径r=");
scanf("%lf",&r);
l = 2 * PI * r;
s = PI * r * r;
printf("圆周长为:l=%.2f\n",l);
printf("圆面积为:s=%.2f\n",s);
}
-思考-
1.l和s的计算,两个语句可以交换顺序吗?
2. printf(“请输入圆的半径r=”);
scanf("%lf",&r);,这两个语句若交换,会出现情况?
(3)鸡兔同笼问题
问题:已知鸡兔同笼头数n,脚数m,请计算并输出有鸡和兔各几只。
/*
* 功能:鸡兔同笼
* 模型:鸡x只,兔y只。头n,脚m
* x+y=n;2x+4y=m
* ----> x = 2*n - m/2;
* ----> y = m/2 - n;
*/
#include <stdio.h>
void main()
{
int x,y,m,n;
printf("请输入鸡兔同笼的头数n和脚数m:");
scanf("%d%d",&n,&m);
x = 2*n - m/2;
y = m/2 - n;
printf("鸡有%d只。\n",x);
printf("兔有%d只。\n",y);
}
思考
- n和m的值,能输入任意整数吗?有什么要求?
- 求得的x和y必须为整数,不能有舍去小数问题,对不对?