C 无限循环误差
该程序构建正确,但我得到了一个无限循环的随机数,我不知道为什么。我C 无限循环误差,c,C,该程序构建正确,但我得到了一个无限循环的随机数,我不知道为什么。我 int getInt(void); double getDbl(void); void prnTitle(void); void prnFooter(double gTotal); void pause(void); double getDblLimited(double lowerLimit, double upperLimit); 在提交里程碑1时注释掉主节点 您的最终里程碑一应该与以下测试程序完美运行 要注释掉main(
int getInt(void);
double getDbl(void);
void prnTitle(void);
void prnFooter(double gTotal);
void pause(void);
double getDblLimited(double lowerLimit, double upperLimit);
int main (void)
{
int iVal;
double dVal;
welcome();
// testing prnTitle()
printf("listing header and footer with grand total:\n");
prnTitle();
// Testing prnFooter()
prnFooter(1234.5678);
printf("listing header and footer without grand total:\n");
prnTitle();
prnFooter(-1);
// Testing Pause() and clrKyb()
pause();
// Testing getInt()
printf("Enter an integer: ");
iVal = getInt();
printf("You entered: %d\n", iVal);
// Testing Get Int Limited
printf("Enter an integer between 10 an 20: ");
iVal = getIntLimited(10, 20);
printf("Your entered %d\n", iVal);
// Testing Get Double
printf("Enter a floating point number: ");
dVal = getDbl();
printf("You entered: %0.2lf\n", dVal);
// Tesing Get Double Limited
printf("Enter a floating point number between 10.00 an 20.00: ");
dVal = getDblLimited(10.0, 20.0);
printf("You entered: %0.2lf\n", dVal);
printf("End of tester program for milestone one!\n");
return 0;
}
/* End Commenting out the main out*/
// implement your functions for milestone one down here:
void welcome(void)
{
printf("---=== Grocery Inventory System ===---\n");
}
void prnTitle(void)
{
printf("Row |SKU| Name \t | Price |Taxed| Qty | Min | Total |Atn \n");
printf("----+---+--------------------+--------+-----+-----+-----+------------+|---\n");
}
void prnFooter(double gTotal)
{
printf("--------------------------------------------------------+-----------------\n");
//float gTotal = 1234.57;
while (gTotal > 0)
{
printf("%12.21f", gTotal);
}
}
void clrKyb(void)
{
char b;
while (b != '\n')
{
scanf("%c", &b);
}
}
void pause(void)
{
printf("Press <Enter> to continue...");
clrKyb();
}
int getInt(void)
{
//printf("Enter an interger:");
int d;
char c;
scanf("%d%c", &d, &c);
while (c != '\n')
{
printf("Invalid integer, please try again ");
scanf("%d%c", &d, &c);
}
return d;
}
int getIntLimited(int lowerLimit, int upperLimit)
{
int a;
//printf("Enter an integer between %d and %d:", lowerLimit, upperLimit);
scanf("%d", &a);
while (a <= lowerLimit || a >= upperLimit)
{
// printf("Invalid value, %d < value < %d:", lowerLimit, upperLimit);
scanf("%d", &a);
}
return a;
}
double getDbl(void)
{
double d;
char c;
// printf("Enter a floating point number:");
scanf("%lf,%c", &d, &c);
while (c != '\n')
{
printf("Invalid number, please try again ");
scanf("%lf%c", &d, &c);
}
return d;
}
double getDblLimited(double lowerLimit, double upperLimit)
{
double a;
printf("Enter a floating point number between %f and %f:", lowerLimit, upperLimit);
scanf("%lf", &a);
while (a <= lowerLimit || a >= upperLimit)
{
printf("Invalid value, %f < value < %f:", lowerLimit, upperLimit);
scanf("%lf", &a);
}
return a;
return 0;
}
int main(无效)
{
国际竞争力;
双dVal;
欢迎();
//测试程序()
printf(“列出页眉和页脚,总计:\n”);
prnTitle();
//测试prnFooter()
prnFooter(1234.5678);
printf(“列出页眉和页脚,无总计:\n”);
prnTitle();
prnFooter(-1);
//测试Pause()和clrKyb()
暂停();
//测试getInt()
printf(“输入一个整数:”);
iVal=getInt();
printf(“您输入了:%d\n”,iVal);
//测试有限公司
printf(“输入一个介于10和20之间的整数:”);
iVal=getIntLimited(10,20);
printf(“您输入的%d\n”,iVal);
//测试加倍
printf(“输入浮点数:”);
dVal=getDbl();
printf(“您输入了:%0.2lf\n”,dVal);
//Tesing Get Double Limited
printf(“输入介于10.00和20.00之间的浮点数:”);
dVal=getDblLimited(10.0,20.0);
printf(“您输入了:%0.2lf\n”,dVal);
printf(“里程碑1的测试程序结束!\n”);
返回0;
}
/*结束对主要问题的评论*/
//在此处实现里程碑1的功能:
欢迎无效(无效)
{
printf(“--==杂货库存系统===-\n”);
}
作废文件(作废)
{
printf(“行| SKU |名称\t |价格|征税|数量|最小|总计| Atn\n”);
printf(“---+---+----+----+----+----+----+----+----+----+----\n”);
}
无效prnFooter(双倍总)
{
printf(“---------------------------------------------------------------+--------------\n”);
//浮球总重量=1234.57;
而(G总计>0)
{
printf(“%12.21f”,g总计);
}
}
无效clrKyb(无效)
{
字符b;
而(b!='\n')
{
scanf(“%c”和“b”);
}
}
作废暂停(作废)
{
printf(“按继续…”);
clrKyb();
}
int getInt(无效)
{
//printf(“输入整数:”);
int d;
字符c;
scanf(“%d%c”、&d和&c);
而(c!='\n')
{
printf(“无效整数,请重试”);
scanf(“%d%c”、&d和&c);
}
返回d;
}
int getIntLimited(int lowermit,int上限)
{
INTA;
//printf(“输入一个介于%d和%d之间的整数:”,下限,上限);
scanf(“%d”和“&a”);
while(a=上限)
{
//printf(“无效值,%d<值<%d:”,下限,上限);
scanf(“%d”和“&a”);
}
返回a;
}
双getDbl(void)
{
双d;
字符c;
//printf(“输入浮点数:”);
扫描频率(“%lf,%c”、&d和&c);
而(c!='\n')
{
printf(“无效号码,请重试”);
扫描F(“%lf%c”,&d和c);
}
返回d;
}
双getDblLimited(双下限,双上限)
{
双a;
printf(“输入介于%f和%f之间的浮点数:”,下限,上限);
scanf(“%lf”、&a);
while(a=上限)
{
printf(“无效值,%f<值<%f:”,下限,上限);
scanf(“%lf”、&a);
}
返回a;
返回0;
}
您永远不会在循环内修改
gTotal
的值。如果进入循环时它大于0,则它将永远大于0,从而形成无限循环 你调试过无限循环发生在哪里吗?在main中,放置print语句以查看代码停止前进的位置。对不起,我的错误。错误开始于打印声明之后的void prnFooter谢谢,再次抱歉,我忘了提到错误的位置occured@ortz3NP不过,下次一定要充分描述问题。如果这对你有帮助,请投票并接受答案。
void prnFooter(double gTotal)
{
printf("--------------------------------------------------------+-----------------\n");
//float gTotal = 1234.57;
while (gTotal > 0)
{
printf("%12.21f", gTotal);
}
}