有关数组的赋值问题
/*按年份输出银行存款100元的金额
*/
#include <stdio.h>
int main(){
int years = 0,n = 0;//年份和一个用于循环的n
float rate = 0;//利率
printf("请输入年利率:");
scanf("%f",&rate);
printf("请输入存款年份:");
scanf("%d",&years);
float money;//定义金额数组
money = 100;//给数组第一个数赋值
printf("年 %.2f\n",rate);
for (n = 1; n <= years; n++) {
money=money*rate;//数组第n+1个数按照第n个数乘以rate来进行赋值
printf("%d %.2f\n",n,money);
}
return 0;
}
运行结果如下
请输入年利率:1.04
请输入存款年份:7
年 1.04
1 104.00
2 108.16
3 112.49
4 0.00
5 0.00
6 0.00
(lldb)
前三年的输出都还正常,为什么后面的都不可以了?
尝试了其他利率,都是只能算到第三年。
然后存款年份如果是三年以下就可以正常结束程序……
请问这个是错在什么地方了?
是浮点型的数据类型计算问题?
还是数组的定义有问题? 有可能是位数太多了,给money换double类型试试行不? alltolove 发表于 2016-11-6 11:00
有可能是位数太多了,给money换double类型试试行不?
我试了试,并不可以……
改成double以后,竟然第二年开始就不能继续计算了。 本帖最后由 巴塞罗那 于 2016-11-6 12:25 编辑
应该是要将数组的长度定义好吧。
#include <stdio.h>
int main(){
int years = 0,n = 0;//年份和一个用于循环的n
float rate = 0;//利率
float money;//定义金额数组,应该要定义好长度
printf("请输入年利率:");
scanf("%f",&rate);
printf("请输入存款年份:");
scanf("%d",&years);
money = 100;//给数组第一个数赋值
printf("年 %.2f\n",rate);
for (n = 1; n <= years; n++) {
money=money*rate;//数组第n+1个数按照第n个数乘以rate来进行赋值
printf("%d %.2f\n",n,money);
}
return 0;
} 数组的定义是固定的长度,不能指定一个变量n,c语言不允许动态数组类型 Cy86183570 发表于 2016-11-6 12:37
数组的定义是固定的长度,不能指定一个变量n,c语言不允许动态数组类型
C99标准允许了动态数组类型啊,比如:
int n = 0,a = 0;
printf("请输入利率个数:");
scanf("%d",&a);
float money;
for (n = 0; n < a; n++) {
money = 100.0f;
}
这样就可以给一个动态数组赋值。我就随便粘贴过来一段刚刚测试的代码。不要在意细节{:10_250:} 巴塞罗那 发表于 2016-11-6 12:24
应该是要将数组的长度定义好吧。
#include
int main(){
定义好长度以后确实没有问题,但是如果需要一个动态数组的话,应该如何修改我现在的程序呢?错误的地方是在哪里?C99标准以后C语言是可以定义动态数组的,我现在用的编译器也允许。但是为什么会报错没有想太清楚,对于数据类型和数组这里还是没有理解透彻_(:зゝ∠)_ 看上去只有数组越界的问题,但是你用变数定义数组长度的时候,编译器会预留很多空间才是,应该不会影响,而且你只越界5*4byte。
我想不到为什么不能正常运行
你在代码里增加printf("%x %x",&years,money);
看看两者在内存中的位置
页:
[1]