C语言中数组输入的值个数不够声明的个数无法进行

RT.
有以下源代码
int a[100];
int i;
for(i=0;i<=99;i++)
scanf("%d",&a[i]);
如果这个时候我只想输入少于100个的数 如只需要输入10个数 此时按enter 程序没反应 即需要输满100个 这个时候应怎么修改代码
谢了。

这个如果要用户指定输入的数量,最好给那个数组进行动态赋值,
如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *a;//使用指针代理数组
int i;
int b;//用来确定数组的大小
printf("\n请设置数组的大小:");
scanf("%d",&b);
a=(int *)malloc(sizeof(int)*(b+1));//确定数组的大小并把数组的首地址传给指针
for(i=0;i<b;i++)
scanf("%d",&a[i]);
printf("输入数组为:");
for(i=0;i<b;i++)
{
printf("%4d",*a);
a++;
}
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-08-09
你不知道楼主的意思是???
是打算十个数这样输入吗
13 23 31 21 14 11 17 15 15 15然后回车?

如果是这样的话。楼主开头加一个控制量
char a

然后在for里循环判断。当a='\n'跳出循环

int a[100]={0};//这边先初始化一下
int i;
char c;
for(i=0;i<=99;i++)
{
scanf("%d",&a[i]);
scanf("%c",&c);//主要是这个量。当你输完几个后回车就自动结束输入。比如1 2 3 4 5回车。数字之间有空格的。就输入了5个数
if(c=='\n')
break;
}

你只要严格控制格式就可以达到目的。
还有如果楼主输入的数不满100个的话。一定要对数组初始化。要不结果会出错的!!!!!本回答被提问者采纳
第2个回答  2009-08-16
你可以再设一个变量,不过这涉及到了空间复杂度。
int a[100];
int i,n;
for(i=0;i<=n;i++)
scanf("%d",&a[i]);
还可已不设变量,在循环体中加一个break语句在符合条件时跳转出去。
int a[100];
int i;
for(i=0;i<=99;i++){
scanf("%d",&a[i]);
if (a[i]="\0")break;
}
还有一楼的你的代码过于死板,没有通用性,在logo语言中通用性是很重要的。
第3个回答  2009-08-09
int n;
printf("请输入元素个数\n");
scanf("%d\n",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);

虽然这样不是最好的,但是能达到要求了。
第4个回答  2009-08-09
int a[100];
int i;
for(i=0;i<=99;i++)
{
scanf("%d",&a[i]);
if(a[i]==-1)break;
}

自己定义一个特殊的字符表示输入结束。

C语言中数组输入的值个数不够声明的个数无法进行
这个如果要用户指定输入的数量,最好给那个数组进行动态赋值,如下:include<stdio.h> include<stdlib.h> int main(){ int *a;\/\/使用指针代理数组 int i;int b;\/\/用来确定数组的大小 printf("\\n请设置数组的大小:");scanf("%d",&b);a=(int *)malloc(sizeof(int)*(b+1));\/\/确定数组...

C语言设定一个数组,从键盘给数组赋值。然后判断输入数的个数,如果小于...
int main(){ float a[4],s,area;int i;char ss[80];do { while(1){ printf("input side lengths a b c:\\n");gets(ss);i = sscanf(ss,"%f %f %f %f",&a[0],&a[1],&a[2],&a[3]);if (i==3 && a[0]>0 && a[1]>0 && a[2]>0) break;if (i<3) printf(...

C语言里面要定义一个字符串数组,数组元素个数不确定,每个元素的长度也不...
你可以用动态分配内存的方法,比如你要建立一个字符串数组:char *str;str=(char *)malloc(n);n是变量,可以在确定了变量的值后再用以上代码分配内存,而str字符串可以以一般数组的用法使用,比如 str="hello";的话 str[1]='l';最后别忘了释放内存 free(str);

用C语言实现从键盘上输入不确定个数的数字,将数字从小到大排序后输出...
对于输入的数据的个数不确定的情况,一般会预设一个特殊的非法值(这个值是属于论域之外的一个值)作为终止值,例如如果论域是正整数,则通常会将0作为终止值,即当输入0时结束,且0不作为有效数据。 因此如果你要输入的都是正整数,则程序可如下(对于其它情况可采用类似方法) #include <stdi...

c语言中输入数组的问题
逐个输入数组中的数,是要用&的,但是如果是字符数组,以字符串形式整体输入,就不用,示例:include<stdio.h>int main(){int n;int t=0;scanf(“%d”,&n);char arr[n];int i;for(i=0;i<n;i++){scanf(“%c”,&arr[i]);}printf(“%c\\n”,arr[0]);for(i=...

C语言 数组未知个数 怎么声明
C语言在数组个数未知的情况下,根据应用情况不同,有三种方式。1,数组元素总数未知,但是需要存储的内容是已知的。其实这是一种变相的已知个数,只是编程者不去计算总个数,把这个工作交给系统来做。这时可以通过数组个数留空,显式初始化数组进行声明。比如 char s[] = "this is a test string";...

数组问题(c语言),如何让输入者定义个数,并输入数值,形成数组
严格意义上讲,c语言里面定义数组时其长度不能为变量,必须为固定值,因为c语言程序在定义数组时,必须先给数组开辟一个内存空间。不过,你所提的要求还是可以实现的,一般的做法是,可以先假设一个较大的数(不超过你所想输入的输入的数组长度的最大值MXLENGTH,)作为初始定义时数组大小,然后在输入...

如何 用c语言 实现输入不定数目的一行整数
1 不需要保存每个值,而是只需要使用该值即可。这样可以读入每个数,逐个处理即可。2 需要保存所有值的,可以将所有值保存在数组中,这个数组可以是静态的,也可以是动态的。如果可以确定数据的最大规模,比如最多1000个数,那么可以先创建一个足够大的,比如1000个元素的数组,静态动态均可。然后依次将...

数组问题(c语言),如何让输入者定义个数,并输入数值,形成数组.
可以使用变长数组或malloc函数动态分配内存。 变长数组: #include <stdio.h> void array_show(const int ); int main(void) { int rows; puts("输入数组大小: "); scanf("%d", &rows); array_show(rows); return 0; } void array_show(const int cols) { int array[cols]; ………...

请问在C语言里如何将一个数组元素的个数设为输入的值?
C\/C++ 语言里, 声明 数组大小时,只允许用常数,例如:int a[10];int b[5*4*3];不允许用 变量。如何将一个数组元素的个数设为输入的值呢,一般用动态分配。int *a; \/\/ 声明为指针。知道大小n后, 用动态分配:a = (int *) malloc(sizeof(int) * n);接下来就可以 把 a 看成 你...

相似回答