[此贴子已经被作者于2007-4-7 12:11:57编辑过]
76
[此贴子已经被作者于2007-4-7 14:57:24编辑过]
LS:这个相当于
if(num<0)
cout<<"输出正整数"<<endl;
......
LZ:
想要避免输入字符串后出现错误,你就把读入类型设置为string,然后判断是否格式正确(对于你就是查看是否是数字)
正确则把string转换成你要的格式,比如int.
格式不正确则随便你怎么处理了
首先谢谢各位的回帖,也许是由于我没有把问题说清,才给大家带来了麻烦。现在我把问题再说的详细点,顺便把我做写出来的程序贴出来,希望大家多提点意见
题目类型[软件测试]
问题:用C或C++语言写一个通过输入三角形的三边生成一个三角形的程序,要求程序尽可能多的满足测试用例(普通三角形、等腰、等边三角形)。错误的测试用例要提示,例如:边出现负数、零、字符型的要提示出错
代码:#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <vector>
using namespace std;
int IsTri(float a,float b,float c)
{
if(a+b<=c)
{ cout<<"The edges cannot be TRI!"<<endl;
return 0;
}
else
if(a+c<=b)
{ cout<<"The edges cannot be TRI!";
return 0;
}
else
if(b+c<=a)
{ cout<<"The edges cannot be TRI!";
return 0;
}
else
return 1;
}
}
int main( )
{
float a,b,c;
int res;
cout<<"Please input 3 edges:\n"<<endl;
float n[3];
int ret,i=0;
while(i<=2)
{
do{
printf("input:");
ret=scanf("%f",&n[i]); //这里如果输入2e的话不会提示出错,因为我的编译器把它e默认为2.71929
while(getchar()!='\n')
ret=0;
if(ret!=0) i++;
if(ret==0)
cout<<"Please Input again\n";
}while(ret!=1);
}
if(n[0]==0||n[1]==0||n[2]==0)//判断是否为零值
cout<<"The value of Tri cannot be zero!"<<endl;
if(n[0]<0||n[1]<0||n[2]<0)//判断是否为负值
cout<<"The value of Tri cannot be a negative number!"<<endl;
res=IsTri(n[0],n[1],n[2]);
if(res)
{
cout<<n[0]<<" "<<n[1]<<" "<<n[2]<<" can make a Tri\n"<<endl;
}
if(n[0]==n[1]&&n[1]==n[2])
cout<<"It's a zheng Tri\n"<<endl;
else if(n[0]==n[1]||n[1]==n[2]||n[0]==n[2])
cout<<"It's a deng yao Tri\n"<<endl;
else
cout<<"It's a general Tri\n"<<endl;
return 0;
}
[此贴子已经被作者于2007-4-7 22:25:38编辑过]
请先仔细看清除我们的回答,我们就是在解释这个一丝