求一道C语言解题方法!!

来源:百度知道 编辑:UC知道 时间:2024/05/22 02:19:12
题目如下

从键盘输入2个或3个数 要求自动判断输入是3个还是2个数 若输入2个数 则计算以这2个数为长宽得长方形面积 若输入为3位数 则求出以这3个数为3边得三角形面积
本人想了半天也没想出来 主要是第3个变量要怎么去判断是否赋了值? 先我想用IF语句,如果第3个变量为空值就执行计算长方形得。可是变量好像不能为空。后来想以指针指向变量3 利用指针判断变量3是否为空值,还是没能做出来 怎么样能像VFP那样 能测试变量3返回值得类型呢?
我这样想得 是否可以用函数测试变量3得返回值呢? 本人不解 请高手赐教
还有 本程序最重要就是实现自动判断
所以如果有用SWICH语句分开输入2位数或3位数得就不要了 我就是想实现自动判断 不管用什么办法
在线等答案!!

#include"conio.h"
#include"stdio.h"
#include"math.h"

void Rarea(int a,int b)
{
printf("长宽为(%d,%d)的长方形面积为:%d\n",a,b,a*b);
}

void Aarea(int a,int b,int c)
{
if(a+b>c&&a+c>b&&b+c>a)
{
double p=(a+b+c)/2;
printf("三边为(%d,%d,%d)的三角形面积为:%f\n",a,b,c,sqrt(p*(p-a)*(p-b)*(p-c)));

}
else
printf("它们不能组成一个三角形\n");
}

int main()
{
printf("输入三个或两个数字,以一个空格分隔,ENTER结束\n");
char c;
int n=0;// 记录输入有多少个数
int num[3]={0};
while((c=getchar())!='\n')
{
if(c==' ')//中间要是多空格的话还得再麻烦点,不管了哈哈
n++;
else
num[n]=num[n]*10+(int)(c-'0');
}
n++;
switch(n)
{
case 2:
{
Rarea(num[0],num[1]);
break;
}
case 3:
{
Aarea(num[0],num[1],num[