当前位置: 代码迷 >> C语言 >> [求助]我写了个求面积的小程序出了问题
  详细解决方案

[求助]我写了个求面积的小程序出了问题

热度:112   发布时间:2006-12-27 10:29:02.0

^_^,六楼的小牛提示了我一下,对此修改如下,实现用getchar()函数执行

/* Note:Your choice is C IDE */
#include "stdio.h"
#include "math.h"
#include "process.h"
main()
{
float a,b,c,s,area;
char temp;
printf("a=");
scanf("%f",&a);
printf("b=");
scanf("%f",&b);
printf("c=");
scanf("%f",&c);
if(a+b>c&&b+c>a&&a+c>b)
{
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("area=%f",area);
}

else
{
printf("数据输入错误!重新输入数据请按y并回车,否则请按任意键并回车结束\n");
getchar(); /*消去缓冲区中的回车键*/
temp=getchar();

switch(temp)
{
case 'y':
main();
break;
case 'Y': /*为了防止用户区分不了大小写而做的照顾。。。*/
main();
break;

}




}

}

嗯,又有新问题了,由于是输入Y/y以外的字母回车都会变成结束程序,不知道如何限定只有输入N/n回车才能结束语句呢?


----------------解决方案--------------------------------------------------------
以下是引用kaid在2006-12-27 1:17:59的发言:

5楼的代码提示还是相当标准的嘛,不过我还是想用中文提示,只要写得再简练些就好了。

另外将我的main()函数改成了用while()循环替代我还没有想过,明天有时间再继续研究一下两者的优缺吧。

还有该代码在我的这套环境是通不过的
出错提示:Compound statement missing } in function main

写丢了一个大括号。。最后加上一个大括号就行了。。。
----------------解决方案--------------------------------------------------------

/* Note:Your choice is C IDE */
#include "stdio.h"
#include "math.h"
#include "process.h"
void main()
{
float a,b,c,s,area;

printf("a=");
scanf("%f",&a);
printf("b=");
scanf("%f",&b);
printf("c=");
scanf("%f",&c);
if(a+b>c&&b+c>a&&a+c>b)
{
s=(a+b+c)/2;
area=(float)sqrt(s*(s-a)*(s-b)*(s-c));
printf("area=%f",area);
}

else
{
printf("数据输入错误!重新输入数据请按y并回车,否则请按n回车。\n");
char temp;
scanf("%c",&temp);
switch(temp)
{
case 'y':
void main();
break;
case 'n':
exit(1);
break;

}




}
}
调试过,可以运行,
如果没有还回值的时候最好用void main();
在C中不带void的函数都有一个还回值,可能会出现意想不到的情况


----------------解决方案--------------------------------------------------------
12楼的建议我又弄了一下,果然是没有加上那个main()函数的大括号(汗。。。居然没发现)

不过计算结果可是天文数字耶!左瞄瞄右看看,原来啊,12楼居然忘记在头函数里添加# include<math.h>啦,要调用sqrt()平方根函数可一定要记住喔~
----------------解决方案--------------------------------------------------------
  相关解决方案