关于C++程序的容错处理~!请高手指教!

来源:百度知道 编辑:UC知道 时间:2024/09/18 05:30:04
现在有一个C++程序,题目是:设计一个程序,先输入你要输入的商品种类的数量,输入商品名称,单价,数量,然后计算出总价;然后在屏幕上输出每个商品的名称和总价,最后在屏幕上输出单价最高的商品名称和其单价;
这个我已经做好了,但是我想做一下容错处理
就是说当输入的商品种类数量,输入商品单价,输入商品数量的时候,如果输入数字以外的字符时,会提示错误并且重新输入。
请问如何做这段容错处理?
以下是源代码:
#include<stdio.h>
int i,j;
struct sp
{
char name[20];
int sl;
float dj;
float zj;
};
void luru(struct sp *shangpin,int a)
{
int i=0;
do
{
printf("请输入第 %d 件商品的名称,单价和数量:",i+1);
scanf("%s %f %d",&shangpin[i].name,&shangpin[i].dj,&shangpin[i].sl);
i++;
}while(i<a);
}
void jisuan(struct sp *shangpin,int a)
{
for(i=0;i<a;i++)
shangpin[i].zj=shangpin[i].dj*shangpin[i].sl;
}
void shuchu(struct sp *shangpin,int a)
{
printf("\n");
for(i=0;i<a;i++)
printf("商品 %s 的总价为: %.0f\n",shangpin[i].name,shangpin[

用字符串接收输入的值,然后一个字符一个字符的判断是否是"1"-"9"或者是"."(单价之类的可以是小数),还有就是判断第一个字符是否是数字,最多只能有一个"."之类的都可以用这个办法

bool IsNumber(char cNumber[200])
{
char achar;
int nIndex;
int nPCount;

nIndex = 0;
achar = cNumber[nIndex];
nPCount = 0;

while (achar != 0)
{
//不考虑有负数
if (achar<'0' || achar>'9')
{
if (achar != '.')
{
return false;
}
else
{
nPCount++;
if (nPCount > 1)
{
return false;
}
}
}

nIndex++;
achar = cNumber[nIndex];
}
return true;
}

void main()
{
char cNumber[200];