当前位置:首页 » 编程语言 » c语言任意长度数组

c语言任意长度数组

发布时间: 2022-09-09 06:15:44

‘壹’ c语言如何输入任意长度的字符串数组

方法:
1)逐个元素进行赋初值。例如:
char
a[12]={'g','o','o','d','
','m','o','r','n','i','n','g'};
采用这种方式对字符数组初始化,可以不包括结束标志,这是合法的。但在对数组整体输出时系统无法判断字符串是否结束,输出结果会存在问题。因此通常人为的加上‘\0’。上例做如下改动更合理:
char
a[13]={'g','o','o','d','
','m','o','r','n','i','n','g','\0'};
2)用字符串常量来初始化字符数组:
char
a[]="good
morning";或
char
a[]={"good
morning"};
采用这种方式初始化字符数组,可以不指定数组长度,但数组的实际长度比字符串常量的长度多1,因为系统会在最后添加字符串结束标志‘\0’;若指定了数组的长度,如果字符串常量的长度大于数组长度会出错,如果小于数组长度,系统会将未赋值的元素全部充成‘\0’。

‘贰’ c语言,怎么写一个任意长度(1000位以内)的整数用数组的话要怎么求出它的长度呢

直接使用strlen就可以了,比如下面

#include<stdio.h>
#include<string.h>
intmain()
{
charstr[1010];
gets(str);
printf("%d ",strlen(str));
return0;
}

‘叁’ C语言主函数定义一个任意长度的一维数组,主函数输入数组元素(已排序),分别调用函数

#include #define N 10 /*函数前置声明*/ int sortArr(int *p,int n); int printArr(int * p, int n); /*冒泡排序*/ int sortArr(int *p,int n) { int i, j, t; for(i = 0; i < n; i++) { for(j = 0; j p[j+1]) { t = p[j]; p[j] = p[j+1]; p[j+1] = t; } } } return 0; } /*打印数组*/ int printArr(int * p, int n) { int i; for(i=0; i

‘肆’ C语言,对任意长度的数组进行冒泡排序,我的代码哪里有问题为什么我输入数组第一个元素,第一个数会没

数据输入方式错误,以一个整数紧接着一个回车结束输入过程的初步解决方法参考如下:
将以上代码5至8行替换为
char ch;
i=0;
while(1){
scanf("%d%c",&t,&ch);
a[i++]=t;
if(i>=100) break;//防止越界
if(ch=='\n') break;
}

‘伍’ C语言 两个任意长度一维数组的加法

#include<stdio.h>
#include<string.h>
char s[100001];
int a[100001],b[100001],c[100001];

int main(){
long i,j,k,m,n;
long alen,blen,clen;
gets(s);
alen=strlen(s);
for(i=alen-1;i>=0;i--)
a[alen-i]=s[i]-'0';
gets(s);
blen=strlen(s);
for(i=blen-1;i>=0;i--)
b[blen-i]=s[i]-'0';
if(alen>blen)
clen=alen;
else
clen=blen;
for(i=1;i<=clen;i++)
c[i]=a[i]+b[i];
for(i=1;i<=clen;i++)
if(c[i]>9){
c[i+1]++;
c[i]-=10;
if(i==clen)
clen++;
}
for(i=clen;i>=1;i--)
printf("%d",c[i]);

printf("\n");
return 0;
}

‘陆’ 怎么用C语言定义一个无限长的数组

C语言支持定义一个不显式定义长度的数组,即通过初始化数据来分配数组长度。

比如int a[] = {1,2,3,4,5}; 数组a的长度没有显式给出,由于有5个初始化数据,所以分配空间长度为5个int型。

但是无论如何定义,数组的长度都是固定的,在定义的时候就已经分配好空间,从这个角度上C语言无法定义无限长的数组。但很多实际应用中又事先无法确定数组的长度,对于这类情况,一般有两种方法可以使用。


1 由malloc和realloc两个函数,分配动态空间,随时按需改变数组的最大长度。

通过下面例子来理解该方法:

#include<stdio.h>
#include<stdlib.h>

intmain()
{
intsize=100;//最初为100个元素空间。
int*a=NULL;
inti=0;

a=malloc(sizeof(int)*size);
if(a==NULL)return-1;
while(scanf("%d",a+i)==1)//循环向a中输入数据,直到输入非数值字符为止
{
i++;
if(i==size)//数组空间不足
{
size*=2;//将数组空间扩大二倍,也可以改用size+=100;之类的操作,使size每次增加固定值。
a=realloc(a,size);//分配新的空间
if(a==NULL)
{
return-1;//这种情况下运行载体(如PC)内存不足以提供,中断程序。
}
}
}

if(a)free(a);//对申请的内存进行释放。
return0;
}

从以上程序可以看到,这种方式的原理就是每当数组空间不足时,利用函数realloc分配一段新的内存空间以增大数组长度。 直到占满所有剩余空间。

如果到占满所有空间还是无法存下数据,那么是硬件无法支持了。

所以这种方法可以做到软件意义上的无限大数组空间。


但是这种方法代码量比较大,而且需要频繁的进行内存的分配,如果实现知道数据的最大可能规模,那么可以用另一个方法。


2 事先知道数据的最大规模,比如统计一个班的分数时,一个班最多不超过百人,那么可以直接定义一个长度为100的数组,或者保险起见,定义一个长度为1000的数组,并对其操作。这样在操作范围内,这个就是一个“无限长”的数组了。

‘柒’ C语言怎么定义一个二维数组可以使每行的输入长度任意

1、使用动态数组可以实现变长度数组。建动态数组,其他就像数组一样使用就行了。


2、例程:

introw=0;//函数
intcol=0;//列数
inti;
int**arr=NULL;//下面假设存储的数据类型为int
printf(“请输入二维数组的行数和列数:”);
scanf("%d%d",&row,&col);
//要不要加判断输入是否合法你自己决定,这里就不加,
arr=(int**)malloc(sizeof(int*)*row);//arr在这里可以看出成数组,数组的每个成员都是指向int类型的指针,这样每个指针指向的代表一行,共row行
for(i=0;i<row;i++)//为每行申请空间
{
arr[i]=(int*)malloc(sizeof(int)*col);//每一行有col列
}

之后就可以用a[i][j]的形式访问二维数组了

‘捌’ c语言中如何自定义数组长度

动态分配的数组可以自定义数组的长度,示例如下:
#include
<stdio.h>
#include
<string.h>
#include
<stdlib.h>
int
main()
{
printf("输入要分配的内存大小:");
int
size;
scanf("%d",
&size);
//输入自定义的数组长度
int
*pstart
=
(int
*)malloc(sizeof(int)
*size);
if
(pstart==0)
{
printf("不能分配内存\n");
return
0;
}
memset(pstart,
0x00,
sizeof(int)
*
size);
int
inx;
for
(inx=0;
inx!=size;
++inx)
pstart[inx]
=
inx;
for
(inx=0;
inx!=size;
++inx)
printf("%d\t",
pstart[inx]);
printf("\n");
return
0;
}

‘玖’ C语言,这题,看图,怎么输入任意长度的整型数组啊字符数组还可以当字符串,整型的呢

“任意长度”实际上是做不到的,即使所用的软件平台没有限制,硬件环境也不允许。所以“任意长度”应当理解为在一个很大的空间之内没有限制地输入字符串而不用事先确定长度。鉴于这种理解,可以定义一个输入函数,先动态申请一个较大的空间,直接向其内输入字符串;输入完毕后检测其长度,再按实际需要申请一个合适大小的空间,把刚才输入的字符串拷贝到这个合适大小的空间里,再把原先申请的大空间释放。举例代码如下:

热点内容
成都少儿编程培训机构 发布:2025-01-13 03:21:20 浏览:88
linuxatop 发布:2025-01-13 03:19:01 浏览:438
彩38源码下载 发布:2025-01-13 03:16:51 浏览:971
手机app缓存可不可以删 发布:2025-01-13 03:10:46 浏览:937
安卓怎么显示第五个人图鉴 发布:2025-01-13 03:03:23 浏览:922
内网访问很慢 发布:2025-01-13 03:01:01 浏览:454
魔兽脚本p闪 发布:2025-01-13 02:58:40 浏览:291
java递减 发布:2025-01-13 02:54:40 浏览:490
决策树的算法例题 发布:2025-01-13 02:53:15 浏览:448
脚本四要素 发布:2025-01-13 02:40:18 浏览:930