循环哪里出错了,逻辑错误查找,高手帮帮忙

问题描述

循环哪里出错了,逻辑错误查找,高手帮帮忙

#include
int main()
{
int donation=0,amount=0; //donation代表每次捐献的金额,amout代表总额
while(amount<10) //捐款超过十万就不再接受捐献
{
scanf("%dn",&donation);
amount=amount+donation;
}
printf("%d",amount);
return 0;
}

为什么每次输入的总额超过十万才能中止while循环,而实际输出的捐款额却是10万,
比如我输入8,1,1共计10万却不能退出循环,而必须要输入8,1,1,1共计11万,才能中止
循环,而输出的总额却是10万.

解决方案

devmiao之前是对的,去掉n,你没有听她的。

解决方案二:

while(1) //捐款超过十万就不再接受捐献
{
scanf("%dn",&donation);
if (amount+donation >10) break;
amount=amount+donation;
}
printf("%d",amount);
return 0;
}

解决方案三:

换成
scanf("n%d", &donation);

解决方案四:

你对while的理解有问题
while只在循环开始的时候判断。

你的程序执行到amount=amount+donation;超过了10,它这次循环还是会执行,此时amount已经超过10了。

解决方案五:

我调试时问题不是你说的那样,实际上当我依次输入1,2,3,4时,无法输出,必须输入一个新的数字比如5,但你看输出还是10,说明amount还是10,
而不是如你所说的超过10;

我依次调试发现我的scanf输入比较慢,输入1后必须输入2,donation的值才变成1,这让我百思不得其解,你单步调试下,不要想当然.有时候这样1个bug
会害死人的

我觉得我对while理解没有问题,你说while 只在循环开始时比较,那一开始条件符合的情况下,while就成死循环了

解决方案六:

1 2 3 4当然不行,因为是 > 10,=10的时候还是会执行循环。

解决方案七:

一开始条件符合的情况,也不会死循环

解决方案八:

好像是scanf的双引号里不要加空格**

如果你加了空格,每输一个数就要按一次空格!****

解决方案九:

好像是scanf的双引号里不要加空格**

如果你加了空格,每输一个数就要按一次空格!****

解决方案十:

 while(amount<10) //捐款超过十万就不再接受捐献
 {
   scanf("%d",&donation); //不能要 n
   amount=amount+donation;
 }
 printf("%d",amount);
时间: 2024-12-23 19:33:01

循环哪里出错了,逻辑错误查找,高手帮帮忙的相关文章

编程-C51左循环函数调用出错了

问题描述 C51左循环函数调用出错了 这个是什么问题,是因为我的函数库没有在正确位置吗.我已经知道dalay那个错误了可是函数调用还是有问题啊 解决方案 函数corl 改成 crol 你名字打错了

一段MATLAB程序运行不出来,不知道哪里出错了,跪求高手解答

问题描述 一段MATLAB程序运行不出来,不知道哪里出错了,跪求高手解答 %%%%%从o点出发达到目的地 function [chengyong,shuru,wq1,wq2]=gengxin(pfangan,guanxi,tm,chengyong,kchy) %%%若选择的为1-2,选择可供使用的方案(尽量满装) tf=find(pfangan(:,1)<=kchy(1,1)&pfangan(:,2)<=kchy(1,2)); if length(tf)>0 %%%方案存在(可以

往数据库插入不了数据,而且很奇怪,同一个页面,能插入试卷的选择信息,但插入不了考试成绩?我看不出是什么原因,请高手帮帮忙!!!!

问题描述 往数据库插入不了数据,而且很奇怪,同一个页面,能插入试卷的选择信息,但插入不了考试成绩?我看不出是什么原因,请高手帮帮忙!!!!usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Collections;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem

跪求高手出现-求高手帮帮忙,不知道该怎样解决

问题描述 求高手帮帮忙,不知道该怎样解决 Exception in thread "main" java.lang.StackOverflowError at java.text.DecimalFormat.subformat(DecimalFormat.java:903) at java.text.DecimalFormat.format(DecimalFormat.java:692) at java.text.DecimalFormat.format(DecimalFormat.j

c#调用c++编写的dll总是出现问题,哪位高手帮帮忙

问题描述 我的这个程序,使用c#调用c++编写的dll,总是出现以下这个问题,那位高手能够帮帮忙,小女子在此先感谢了.大家就救我吧.c++编写的dll中的函数voidEFSgetUsrThesaurus(pUsrDicFileNameTableDicFlNmTbl,pUsrKeyWordTableKeyWdTbl,pUsrThesaurusTableThTbl,EFSDICSTATUS*EFS_dicstatus);c++中的结构体typedefstruct{intCnt;struct{char

我想在html页面中引用freemarker但不知道该怎么配置,求各位高手帮帮忙

问题描述 我想在html页面中引用freemarker但不知道该怎么配置,求各位高手帮帮忙 我想在html页面中引用freemarker但不知道该怎么配置,求各位高手帮帮忙 解决方案 纯html中无法使用.在动态项目中才能使用,如jsp,asp 你要想使用freemarker标签,必须能够被FreemarkerServlet拦截到,然后解析处理成html 所以你直接用ftl页面就行了,为什么要静态网页和动态模版混着用呢 如果真想用..web.xml 中freemarker拦截器(制定拦截*.ht

指令-mysql莫名奇妙出问题了,求各位帮帮忙,急

问题描述 mysql莫名奇妙出问题了,求各位帮帮忙,急 一早起来发现明明用show tables指令都还存在的table,查询时却提示doesnt exist, 之后我到data目录下把相关的文件都删了,重新建该table却又显示table already exists, 真是灵异事件了. 解决方案 你的外键关系好像写错了吧 constraint userId_FK foreigin key(userId) references user(id) 解决方案二: 你的数据库类型是什么?Innodb

c#-自己用C#做了一个可以实现多人聊天的程序 调试时一直提示错误 大神帮帮忙 修改一下!!!谢谢了

问题描述 自己用C#做了一个可以实现多人聊天的程序 调试时一直提示错误 大神帮帮忙 修改一下!!!谢谢了 文件下载地址:https://pan.baidu.com/s/1i3NdLf3 提取密码:iw3h 大神帮忙看看 修改一下 小弟谢谢了!!! 解决方案 这个网上有很多栗子的哦. 解决方案二: 想知道我的程序到底哪里错了 求大神能解答 解决方案三: 想知道我的程序到底哪里错了 求大神能解答

24色位图,字母图片验证码识别,基于MFC对话框的程序,在线求助,高手帮帮忙

问题描述 24色位图,字母图片验证码识别,基于MFC对话框的程序,在线求助,高手帮帮忙 24色位图(如下图)字母图片验证码识别,基于MFC对话框的程序,在线求助,高手帮帮忙