C语言编程中数组的定义

发布网友 发布时间:2022-04-24 03:50

我来回答

2个回答

热心网友 时间:2023-10-26 01:52

这种题目一般不希望设计内存管理。所以一般都是进可能给一个比较大的数组。
例如
a[10];
表示位数不会超过十,你输入的时候需要个索引记录a[]数组有效的位数。
使用的时候,只使用有效位数。
肯定会有一段内存不用的。或多或少。这就是数组存储动态数据特点。
如果内存管理的话,你设计个增量比如5.
一旦索引告诉你10个位置用完了,地方不够,你在动态申请
15个位置,把原来的复制到新的内存空间。
这就是数组内存管理的方法,但是一般程序不要求这样,因为你要作的是实现算法思想,而不是去想这些内存管理的方面。
所以现在大多不需要程序员考虑内存管理。对实现算法而讲,注重的是实现的思想。
a[10]不行,你就设置你认为足够长的。比如a[100]
通常这种情况,你要考虑你输入的最大数字对应的位数,这种题目肯定是有上限的,不是任何数都可以。
我刚看你的程序了,10进制变16进制程序有误,你没有考虑余数10,11...
10对应A,11对应B..
这样的话,应该用char[]数组存储。
下面是程序
你输入15,会输出F
100,会输出
#include <stdio.h>
#include <math.h>
void main()
{
int num;
printf("请输入一个十进制整数:");
scanf("%d",&num);

char a[100]; //这里的数组长度应当依据什么来定义
int i=0;
int yushu;
while(num>0)
{
yushu=num%16;
if(yushu<10)
a[i]=yushu+'0';
else
a[i]='A'+(yushu-10);
num=num/16;
i++;

}
i--;
printf("转化为十六进制的数为:");
for(;i>=0;i--)
{
printf("%c",a[i]);

}
printf("\n");
}

热心网友 时间:2023-10-26 01:52

用longint试试看...

热心网友 时间:2023-10-26 01:52

这种题目一般不希望设计内存管理。所以一般都是进可能给一个比较大的数组。
例如
a[10];
表示位数不会超过十,你输入的时候需要个索引记录a[]数组有效的位数。
使用的时候,只使用有效位数。
肯定会有一段内存不用的。或多或少。这就是数组存储动态数据特点。
如果内存管理的话,你设计个增量比如5.
一旦索引告诉你10个位置用完了,地方不够,你在动态申请
15个位置,把原来的复制到新的内存空间。
这就是数组内存管理的方法,但是一般程序不要求这样,因为你要作的是实现算法思想,而不是去想这些内存管理的方面。
所以现在大多不需要程序员考虑内存管理。对实现算法而讲,注重的是实现的思想。
a[10]不行,你就设置你认为足够长的。比如a[100]
通常这种情况,你要考虑你输入的最大数字对应的位数,这种题目肯定是有上限的,不是任何数都可以。
我刚看你的程序了,10进制变16进制程序有误,你没有考虑余数10,11...
10对应A,11对应B..
这样的话,应该用char[]数组存储。
下面是程序
你输入15,会输出F
100,会输出
#include <stdio.h>
#include <math.h>
void main()
{
int num;
printf("请输入一个十进制整数:");
scanf("%d",&num);

char a[100]; //这里的数组长度应当依据什么来定义
int i=0;
int yushu;
while(num>0)
{
yushu=num%16;
if(yushu<10)
a[i]=yushu+'0';
else
a[i]='A'+(yushu-10);
num=num/16;
i++;

}
i--;
printf("转化为十六进制的数为:");
for(;i>=0;i--)
{
printf("%c",a[i]);

}
printf("\n");
}

热心网友 时间:2023-10-26 01:52

用longint试试看...

热心网友 时间:2023-10-26 01:52

这种题目一般不希望设计内存管理。所以一般都是进可能给一个比较大的数组。
例如
a[10];
表示位数不会超过十,你输入的时候需要个索引记录a[]数组有效的位数。
使用的时候,只使用有效位数。
肯定会有一段内存不用的。或多或少。这就是数组存储动态数据特点。
如果内存管理的话,你设计个增量比如5.
一旦索引告诉你10个位置用完了,地方不够,你在动态申请
15个位置,把原来的复制到新的内存空间。
这就是数组内存管理的方法,但是一般程序不要求这样,因为你要作的是实现算法思想,而不是去想这些内存管理的方面。
所以现在大多不需要程序员考虑内存管理。对实现算法而讲,注重的是实现的思想。
a[10]不行,你就设置你认为足够长的。比如a[100]
通常这种情况,你要考虑你输入的最大数字对应的位数,这种题目肯定是有上限的,不是任何数都可以。
我刚看你的程序了,10进制变16进制程序有误,你没有考虑余数10,11...
10对应A,11对应B..
这样的话,应该用char[]数组存储。
下面是程序
你输入15,会输出F
100,会输出
#include <stdio.h>
#include <math.h>
void main()
{
int num;
printf("请输入一个十进制整数:");
scanf("%d",&num);

char a[100]; //这里的数组长度应当依据什么来定义
int i=0;
int yushu;
while(num>0)
{
yushu=num%16;
if(yushu<10)
a[i]=yushu+'0';
else
a[i]='A'+(yushu-10);
num=num/16;
i++;

}
i--;
printf("转化为十六进制的数为:");
for(;i>=0;i--)
{
printf("%c",a[i]);

}
printf("\n");
}

热心网友 时间:2023-10-26 01:52

用longint试试看...

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com