㈠ c语言,这道题怎么做,不确定元素个数我没法定义数组啊
/* C99标准增加的变长数组(VLA) */
int N; /* 首先声明一个变量作为数组大小 */
scanf ("%d", &N); /* 程序运行时,在声明数组前设置N的值 */
int arr[N]; /* 声明大小为N的数组 */
/* 注意:N的值必须在声明数组前指定。声明变长数组时不可以初始化。N只能被赋值1次,一旦确定,不可改变。*/
㈡ C语言里面要定义一个字符串数组,数组元素个数不确定,每个元素的长度也不确定,求动态定义的方法
你可以用动态分配内存的方法,
比如你要建立一个字符串数组:
char *str;
str=(char *)malloc(n);
n是变量,可以在确定了变量的值后再用以上代码分配内存,
而str字符串可以以一般数组的用法使用,比如
*str="hello";的话
str[1]='l';
最后别忘了释放内存
free(str);
㈢ 在c语言不知道数组有多少个元素怎么用FOR循环输出
假如不知道数组的元素个数,一般为int数组,或char数组,下面看代码实现要求:
#include<stdio.h>
voidmain()
{
intnum[]={1,2,3};
charstr[]={'4','5','6'};
for(inti=0;i<sizeof(num)/sizeof(int);i++)//sizeof(num)/sizeof(int)计算长度
{
printf("%d",num[i]);
}
puts("");
for(i=0;i<sizeof(str)/sizeof(char);i++)
{
printf("%c",str[i]);
}
puts("");
}
假如是字符串数组的话,就可以用str[i]!=0来判断是否到达尾部,这个就不存在元素个数之说
㈣ C语音如果数组个数不确定应该怎样定义数组
第一种方法:最大值法。
申请的数组可能需要30个左右,于是申请数组大小固定为40;
第二种方法:动态分配,即指针。
需要大小为n的整型数组,int *pn = (int*)malloc(n*sizeof(int));
㈤ C语言中如何实现一个排列,但是需要排列的个数是不确定的,也就是说输进去多少就排多少
这个很好实现,你可以使用malloc函数进行内存申请,给你举个例子吧,哈哈,
例如需要5个int型的数排列,你就可以这样定义
int* a=(int)malloc(sizeof(int)*5);
这样就申请了5个int型的内存单元,而且使用起来很灵活方便。直接可以按照数组的操作方式来操作,例如你可以直接这样做, a[0]=100;a[1]=200;也可以进行数组操作。不过这个需要实现由用户输入要排序元素的个数。在这个基础上进行改进就可实现你要的。如下。
首先和上边一样,当用户每输入一个,你就用malloc申请一个int单元。当用户输入第二个时你可以使用realloc函数,这个函数是在malloc的内存上追加内存单元,使用如下;
int* a=(int)malloc(sizeof(int)*1);
int* a=(int*)realloc(a,sizeof(int)*1);追加一个
这样就可以了,使用还是一样,可以使用数组方式和指针方式。哈哈,给分吧。!!~~应该会帮到你。
㈥ 用C语言实现从键盘上输入不确定个数的数字,将数字从小到大排序后输出
对于输入的数据的个数不确定的情况,一般会预设一个特殊的非法值(这个值是属于论域之外的一个值)作为终止值,例如如果论域是正整数,则通常会将0作为终止值,即当输入0时结束,且0不作为有效数据。
因此如果你要输入的都是正整数,则程序可如下(对于其它情况可采用类似方法)
#include <stdio.h>
void Sort(int *s, int left, int right)
{
int i, j, min, tmp;
for(i = left; i < right; i++)
{
for(min = i, j = i + 1; j <= right; j++)
if(s[j] < s[min]) min = j;
if(min != i) tmp = s[i], s[i] = s[min], s[min] = tmp;
}
}
void main( )
{
int i, s[1000], length = 0, data;
scanf("%d", &data);
while(data > 0)
{
s[length++] = data;
scanf("%d", &data);
}
Sort(s, 0, length - 1);
for(i = 0; i < length; i++)
printf("%-4d", s[i]);
}
运行结果:
㈦ C语言 怎样实现不确定元素个数的数组的数据输入
intn,i;
int*a,*b,*c;
printf("请输入数组大小:");
scanf("%d",&n);
a=(int*)malloc(sizeof(int)*n);
b=(int*)malloc(sizeof(int)*n);
c=(int*)malloc(sizeof(int)*n);
printf("请输入数组a的数据:");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
printf("请输入数组b的数据:");
fflush(stdin);
for(i=0;i<n;i++)
{
scanf("%d",&b[i]);
}
for(i=0;i<n;i++)
{
c[i]=a[i]+b[i];
}
printf(" 数组c:");
for(i=0;i<n;i++)
{
printf(" %d",c[i]);
}
㈧ C语言中关于数组元素不定个数的问题
C语言的话,升级编译器就可以了,最新的编译器都支持variable length array