咖喱饭咖喱 发表于 2017-11-16 16:09:39

数组相关程序求解

对于下划线部分不明白:
1.为什么要定义一个 N+1而不是N?
2.while中的条件?

三更未眠 发表于 2017-11-16 16:24:57

本帖最后由 三更未眠 于 2017-11-16 16:30 编辑

因为你的数组x的下标是从1开始的   所以是N+1即101,结合下边的for循环来看,do while 循环,会先执行一次do里边的代码再做判断,如果为真则继续循环,假则跳出循环,你要输入的是1 到 100 之间的数,那么判定的时候就会是假了,就会跳出循环往下执行;%lf 是因为你声明的s变量是double类型的 对应的就使用%lf咯,int就%d, 其它数据类型也是有固定的对应的

lyjlyj 发表于 2017-11-16 16:35:05

对于你这个程序,N+1,多出来的一个用于存放平均数
while中的是限制输入的n的范围,如果输入的数n,小于等于0或者是大于等于100,就会一直循环
%lf,是指输入的格式被当作double类型,就如%d,输入的类型为整形

BngThea 发表于 2017-11-16 16:41:05

1.为什么要定义一个 N+1而不是N?
根据代码来看,其实可以设置为N,因为虽然for循环中判断条件都是i<=n,但do-whlie循环中条件表明
n最大只能取到99

2.while中的条件?
do-while循环中的条件表示只有用户当输入1~99之间的数才能结束

%lf 格式化输入输出标识,用来表示该位置用一个double变量来填充,后面的s就是一个double变量

echo000 发表于 2017-11-18 20:53:37

1 因为你的for语句中 i是从1开始的,也就是说x并没有用到 但用户输入的数很有可能是100个数所以这里用的101减去x【0】就是100个数了,这是为了看起来好看一点,当然也可以用N,只要把i初始化为0就好了。
但这里呢,又跟下面冲突了呢。具体看第二条吧
2.首先这个do while是问了让用户输入这个题有几个xn的,题目里虽然没有规定这个数列必须少于100个数,但码代码的人可能为了方便?就自作主张把数列的个数限制在100个以内了,也就是把xn的n限制在1到99了,冲突就在这了,上面申请的数组个数特意申请了100个,结果下面又只让用99个?那N+1的确是没啥意义了。不过本来初衷还是好的。。。。
3.这个%lf是必须这么写的一种格式呢,因为你数组是double类型的,如果是float类型的用%f就好了
顺带一提,输出的时候double也尽量用%lf呢,虽然输出的时候%f也能行,不过会有微小的精度损失呢
希望能帮到你
页: [1]
查看完整版本: 数组相关程序求解