1、设计一个简单的菜单,要求输入相应的选项计算图形的面积(至少在下面5种图形中任选3种图形的面积) (1、梯形面积;2、三角形面积;3、球形表面积;4、圆柱表面积;5、长方体表面积) 要求: (1)输出结果要有格式控制 (2)要先判断是否构成图形 (3)要对输入数据做异常处理
时间: 2023-08-31 19:31:12 浏览: 142
好的,以下是一个简单的菜单程序设计,可以实现输入选项计算图形面积的功能,同时也包括了对输入数据的异常处理和格式控制:
```
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int option;
float area, a, b, c, r, h;
while (1) {
// 显示菜单
printf("计算图形面积,请输入选项:\n");
printf("1. 梯形面积\n");
printf("2. 三角形面积\n");
printf("3. 球形表面积\n");
printf("4. 圆柱表面积\n");
printf("5. 长方体表面积\n");
printf("0. 退出\n");
// 获取选项
printf("请输入选项:");
scanf("%d", &option);
// 判断选项并计算面积
switch (option) {
case 0:
// 退出程序
exit(0);
case 1:
// 梯形面积
printf("请输入梯形的上底、下底和高:");
scanf("%f%f%f", &a, &b, &h);
if (a <= 0 || b <= 0 || h <= 0) {
printf("输入错误!\n");
continue;
}
area = (a + b) * h / 2;
printf("梯形的面积为:%.2f\n", area);
break;
case 2:
// 三角形面积
printf("请输入三角形的三条边长:");
scanf("%f%f%f", &a, &b, &c);
if (a <= 0 || b <= 0 || c <= 0 || a + b <= c || a + c <= b || b + c <= a) {
printf("输入错误!\n");
continue;
}
float p = (a + b + c) / 2;
area = sqrt(p * (p - a) * (p - b) * (p - c));
printf("三角形的面积为:%.2f\n", area);
break;
case 3:
// 球形表面积
printf("请输入球的半径:");
scanf("%f", &r);
if (r <= 0) {
printf("输入错误!\n");
continue;
}
area = 4 * M_PI * r * r;
printf("球的表面积为:%.2f\n", area);
break;
case 4:
// 圆柱表面积
printf("请输入圆柱的底面半径和高:");
scanf("%f%f", &r, &h);
if (r <= 0 || h <= 0) {
printf("输入错误!\n");
continue;
}
area = 2 * M_PI * r * (r + h);
printf("圆柱的表面积为:%.2f\n", area);
break;
case 5:
// 长方体表面积
printf("请输入长方体的长、宽和高:");
scanf("%f%f%f", &a, &b, &h);
if (a <= 0 || b <= 0 || h <= 0) {
printf("输入错误!\n");
continue;
}
area = 2 * (a * b + a * h + b * h);
printf("长方体的表面积为:%.2f\n", area);
break;
default:
printf("输入错误!\n");
break;
}
}
return 0;
}
```
程序中使用了一个 while 循环,可以让用户多次进行计算,直到选择退出程序为止。每次循环会显示一个菜单,用户可以选择其中的一个选项来计算对应图形的面积。程序会先读取用户输入的数据,然后进行异常处理,判断数据是否符合要求。如果数据有误,程序会提示用户重新输入;如果数据正确,程序会根据选项计算面积,并输出格式化的结果。
阅读全文