gpt4 book ai didi

c - 获取数组的输入

转载 作者:太空宇宙 更新时间:2023-11-04 07:29:26 24 4
gpt4 key购买 nike

在为我的计算机科学类(class)做一个项目时,我遇到了一个数组问题。基本上,我必须从用户那里获取他们想要输入数据的年数。然后我必须使用该输入创建两个数组(一个用于他们需要数据的实际年份,一个用于数据本身)。然后我必须打印出用户刚刚输入的年份和数据。

问题是,当我这样做时,年份的数据可以很好地打印出来,但年份本身会作为随机内存地址打印出来。另一件奇怪的事情是,这只有在我工作三年或更长时间后才会发生。当我做两个或更少时,其他一切都很好。年份的变量是一个 int,数据的变量是一个 double。

int numberofyears;
printf("Enter the number of years you wish to take data for: " );
scanf("%d",&numberofyears); //take input for how many times arrays run

int years[numberofyears];
double dataforyear[numberofyears];

int a;
printf("Enter the years and their respective data");
for (a=0;a<numberofyears;a++){
scanf("%d %lf",&years[a],&dataforyear[a]);} //take inputs for both arrays

int b;
for (b=0;b<numberofyears;b++){
printf("%d %.2lf\n",years[b],dataforyear[b]);}

输入:

Enter the number of of years you wish to take data for: 5
Enter the years and their respective data
1950 200.96
2000 300.55

打印出来:

1950 200.96
2000 300.55

输入:

Enter the number of of years you wish to take data for: 5
Enter the years and their respective data
1956 325.21
1989 386.22
2003 400.00

打印出来:

0 325.21
1081671680 386.22
2003 400.00

任何超过 3 年的时间都可以做到这一点。尽管无论出于何种原因,超过 5 年的事情似乎都不像 3 年那样保留最后一年,如果这有帮助的话。

最佳答案

你是如何声明你的dataforyear[]数组的?
如果它是 float dataforyear[] 然后将您的 scanf 语句更改为
scanf("%d %f",&years[a],&dataforyear[a]);

如果您想保持scanf 语句原样,则将您的数组声明为double dataforyear[]

关于c - 获取数组的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15239068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com