Arrays 输出数组的最后一个数字-C中的动态内存分配
以下是作业: 编写一个程序来打印双精度数组中的最后一个元素。数组应具有动态长度。长度应取自命令行参数。如果没有向程序提供命令行参数,则数组长度应为5。数组应该动态创建,并填充以0.0->0.1->0.2开始的值 例如: 调用您的程序:mycalc.exe 42 程序的输出将在本例中:我的最后一个数组元素是:4.1Arrays 输出数组的最后一个数字-C中的动态内存分配,arrays,c,visual-studio,command-line,dynamic-memory-allocation,Arrays,C,Visual Studio,Command Line,Dynamic Memory Allocation,以下是作业: 编写一个程序来打印双精度数组中的最后一个元素。数组应具有动态长度。长度应取自命令行参数。如果没有向程序提供命令行参数,则数组长度应为5。数组应该动态创建,并填充以0.0->0.1->0.2开始的值 例如: 调用您的程序:mycalc.exe 42 程序的输出将在本例中:我的最后一个数组元素是:4.1 然而,当我运行这段代码时,无论我如何更改命令行参数,甚至我没有命令行参数,它总是显示0.0。有什么问题,有人能纠正我的代码吗。 我赶时间,非常感谢你 下面是我写的代码: #inclu
然而,当我运行这段代码时,无论我如何更改命令行参数,甚至我没有命令行参数,它总是显示0.0。有什么问题,有人能纠正我的代码吗。 我赶时间,非常感谢你 下面是我写的代码:
#include <stdio.h> // standard input/output functions
#include <string.h>
#include <stdlib.h>
#define last_digit_of_Matrikelnummer 5
int main(int argc, char* argv[])
{
int i;
int DynArraylen;
double* DynArray;
if (argc == 1)
{
DynArraylen = last_digit_of_Matrikelnummer;
DynArray = (double*)malloc(DynArraylen * sizeof(double));
DynArray[0] = 0.0;
for (i = 1; i < DynArraylen; i++)
{
DynArray[i] = DynArray[i - 1] + 0.1;
}
printf("My last array element is: %.1f\n", DynArray[i]);
//Free memory
free(DynArray);
}
else if (argc == 2)
{
//Dynamic memory allocation
DynArraylen = (int)argv[1];
DynArray = (double*)malloc(DynArraylen * sizeof(double));
DynArray[0] = 0.0;
//check
if (DynArray == NULL)
{
printf("out of memory\n");
}
else
{
DynArray[0] = 0.0;
for (i = 1; i < DynArraylen; i++)
{
DynArray[i] = DynArray[i - 1] + 0.1;
}
printf("My last array element is: %.1f\n", DynArray[i]);
}
//Free memory
free(DynArray);
}
return 0;
}
#包括//标准输入/输出函数
#包括
#包括
#定义矩阵NUMMER 5的最后一位数字
int main(int argc,char*argv[])
{
int i;
int DynArraylen;
双*DynArray;
如果(argc==1)
{
DynArraylen=矩阵的最后一位;
DynArray=(双*)malloc(DynArraylen*sizeof(双));
DynArray[0]=0.0;
对于(i=1;i
在循环之后
for (i = 1; i < DynArraylen; i++)
strtol
函数包括字符串验证,您确实需要检查该字符串,以确保调用后DynArraylen
有效。printf(“我的最后一个数组元素是:%.1f\n”,DynArray[i])代码>最后一个参数应该是DynArray[i-1])
或DynArray[DynArraylen-1]
DynArraylen=(int)argv[1]代码>这不是将字符串转换为int的正确方法。OT:不应该在每个条件块中重复相同的代码。唯一需要有条件的代码行是设置DynArrayLen
的代码行。在那之后,所有的代码都是一样的。为什么会这样?在循环“for(i=1;ii
是正确的。这意味着它将在i==DynArraylen
时结束(因为i
将为false)。
DynArraylen = strtol(argv[1], NULL, 10);