c++-本人新手,请问有哪个大神知道为什么这个代码中num只能取到8.

问题描述

本人新手,请问有哪个大神知道为什么这个代码中num只能取到8.
#include
#include
int main()
{
using namespace std;
double donation[10]aversum;
int minum;
sum=0.0;
m=0;
cout << ""input the numbers ; and no more than 10!n"";
for(i =0num=0;i {
cin >> donation[i];
if (!isalpha(donation[i]))
{
sum=sum+donation[i];
++num;
}
}
aver =sum/num;
for(i=0;i<num;i++)
if(aver<donation[i])
++m;
cout << ""the aver is : "" << aver << endl << ""the number is : ""<< m << endl;
return 0;
}
例如:输入 23 ,12, 34 ,35,56,67,45,34,23,67
运行的结果是错误;调试的时候发现num只能取到8,取不到10,但是i可以取到10,num只能取到8.

解决方案

 什么叫取到8,这个代码可以取到10aver =sum/(double)num;if (!isalpha(donation[i]))因为你的判断写在循环里面,所以如果你输入不是数字,那么循环的次数是10,但是数字可能少于10。你的循环条件for(i =0num=0;i<10;i++)->for(i =0num=0;num<10;i++)

解决方案二:
我也认为应该取到10,可是运行的结果是错误;调试的时候发现num只能取到8,取不到10,但是i可以取到10,num只能取到8.

解决方案三:
编程是一种美德,是促使一个人不断向上发展的一种原动力。

解决方案四:
isalpha 是C库函数么?如果是的
if (!isalpha(donation[i])){。。。}

donation[i]是 double
所以必须输入整数(值为整数的 浮点数)
因为52 Bits 内的整数,浮点数表示无误差
所以,最终还是输入的整数
范围在(a~z) 65~90,和(A~Z) 97~122

解决方案五:
搞错了,范围不在(a~z) 65~90,和(A~Z) 97~122 之间才行

解决方案六:
转换位整数。结果 不在(a~z) 65~90,和(A~Z) 97~122 之间才行

解决方案七:
if (!isalpha(donation[i])) 好奇怪的判断啊 浮点数,为何要判断这个?

解决方案八:
你的两个 67 其实都是 'c'
此时 if (!isalpha(donation[i]))为假,
所以 num 只有8个

解决方案九:
可以的吧

时间: 2024-09-19 21:06:05

c++-本人新手,请问有哪个大神知道为什么这个代码中num只能取到8.的相关文章

jsp-java文件上传问题,本人新手,望各位大神帮忙

问题描述 java文件上传问题,本人新手,望各位大神帮忙 我这边想要用户登录部署网站,上传一个excel,我得到用户文件的绝对路径,然后把这个绝对路径通过location.href 带参 传到了另一个jsp上进行读写,复制到服务器下.遇到问题就是,服务器读写是总把这个绝对路径当成自己本地的,读不到用户电脑下文件. 解决方案 绝对路径当然是指向本地的啦,服务器是不可能进入用户电脑中复制文件的.你应该把文件上传到服务器中 解决方案二: 上传的话有专门的表单,type="file",form

vista-VISTA上安装IBM DB2总是启动不了,各位我是新手,求各位大神指点我这迷途中的小羔羊

问题描述 VISTA上安装IBM DB2总是启动不了,各位我是新手,求各位大神指点我这迷途中的小羔羊 每当我点开的时候就会弹出这个,是我哪里设置错误?我是用安装向导安装的 解决方案 vista是一个失败的系统,因为份额极小,几乎厂商都不会再做和它的兼容性支持,建议在win7下试试. 解决方案二: 电脑用win7太弱了,这个IBM DB2我查了下是支持VISTA的.但是就是会出现这个,我又下了个msvcp110.dll还是失败了,不知道大神们有没有知道原因的呢 解决方案三: 最后,由于我糟了很多罪

本人是新手,请问各位大神,如何删除listview中的一项item,最好有代码

问题描述 本人是新手,请问各位大神,如何删除listview中的一项item,最好有代码 10C 本人是新手,请问各位大神,如何删除listview中的一项item,最好有代码 解决方案 android listview的创建及行删除操作2011-03-16 12:02 3102人阅读 评论(0) 收藏 举报Step1:创建listview ListView list = (ListView) findViewById(R.id.ListView01); list.setBackgroundCo

请问哪位大神有c++的视频教学,在下是个新手,十分感谢

问题描述 请问哪位大神有c++的视频教学,在下是个新手,十分感谢 请问哪位大神有c++的视频教学,在下是个新手,刚开始看书 primer 十分感谢 解决方案 孙鑫那个根本就是职业培训,而且是说的VC++和C++是两回事. 不推荐看视频,因为视频主要面向低端学习者,这些人主要应付考试.看视频唯一的好处就是熟悉下电脑操作,VS界面怎么用. 好歹考试的时候不会连复制粘贴都不会. 真的要学,看视频浪费时间,遇到些粗制滥造误人子弟的更糟糕,还是看书好. 解决方案二: 百度的讲学视频不行么 解决方案三: 孙

异常-大神,我的代码哪里错了·?求指教,本人是新手

问题描述 大神,我的代码哪里错了·?求指教,本人是新手 //filename:App9_4.java public class App9_4 { public static double multi(int n) { if(n<0) throw new IllegalArgumentException("求负数阶段异常"); double s=1; for(int i=1;i<=n;i++) { s=s*i; return s; } } public static void

c#控件-c#新手问题,求大神解决。

问题描述 c#新手问题,求大神解决. 用c#写个小程序.我现在要的功能是用Timer这个组建让窗口在75秒后自动销毁,75秒这个倒计时的时间显示在标签可见的,请问该怎么操作呢. 解决方案 声明一个全局变量int seconds=75:双击timer组件,在timer_tick事件里面编写每隔一秒减一的事件:{seconds--:label1.text=seconds.tostring():if(label1.text=="0"){this.closed()}},当然你得将你的时钟间隔设

jsp-求教:哪位大神帮忙看下代码,本人小白,实在不知道哪里有问题!!

问题描述 求教:哪位大神帮忙看下代码,本人小白,实在不知道哪里有问题!! 代码如下,登陆页面,把java逻辑放到了后台页面上,运行的时候没有报错,但是不跳转.测试账号密码正确不跳转因为没写,但是测试账号密码错误的情况下也不跳转. <%@ page language=""java"" import=""java.util.*java.sql.*info.DataBase"" pageEncoding=""

请问哪位大神有试过用c# 服务端开发百度云推送的

问题描述 请问哪位大神有试过用c# 服务端开发百度云推送的 c#服务端开发百度云推送的(特别是服务端推送一条消息给IOS手机,就报了一个403,说权限验证失败的),问了百度云的人,问了都不知道什么回事~! 解决方案 看看你的校验签名和key是否正确,百度有没有给你开权限和账户.如果百度自己的人都不知道,我只能无语了. 解决方案二: 楼主,请问有解决方案吗?同样遇到

补丁-本人linux小白,请教大神

问题描述 本人linux小白,请教大神 在ubuntu系统安装gcc时,如果要使编写的程序同时能在windows运行,需要安装几个补丁(如下),找到一个英文指导书,但里面有个地方不理解,截图如下: 这些图片中的'~/tools/mingw32/'.'~/tools/mingw32-binutils/'. '~/tools/mingw32-runtime/' 这三个文件夹在哪儿啊?是要自己创建吗? 解决方案 图片中的'~/tools/mingw32/'.'~/tools/mingw32-binut