如何 用c语言 实现输入不定数目的一行整数
增加判断结束的标志就可以了,比如说我这里判断是以-1 作为结束符,然后输入所有已经输入的内容。
#include
void main(){
printf("input you integer
");
int a[100];
int temp=0;
scanf("%d",&temp);
int i=0;
while(temp!=-1){
a[i]=temp;
scanf("%d",&temp);
i++;
}
int j=0;
while(j<i){
printf("%d ",a[j]);
j++;
}
}
代码如下:
#include
int main()
{
int num[1000];
char ch;
do
{
scanf("%d",&a[i++]);
}while((ch=getchar())!= '
');// 这里用来判断是否输入了回车
return 0;
}
while(cin>>b[cnt++],cin.get()!='
');//也可用这句代替
扩展资料:
C语言编写注意事项:
1、'x'与"x"的区别: 'x'表示一个整数, 字母x在极其字符集中对应的数值. "x"表示一个包含一个字符x 以及一个结束符'\0'。
2、const在声明变量中起限制作用, 该限定变量的值不能被修改。
3、%运算符不能应用与float或double类型。
4、char类型转换为int型时, 无法判断它是signed还是unsigned.这样其结果有可能为负数, 因此转换时尽量指定signed和unsigned限制符。
5、++i与i++不同之处: ++i是先+1在使用, i++是先使用i在递加1。
6、三元运算符"?:" 第一个表达式的括号不是必须的,但是由于三元表达式的优先级非常低,我们还是将第一个表达式用()括起便于阅读和理解。
7、C语言中可以使用递归 (即函数调用自身函数), 其不节省储存器开销也不加快执行速度, 只是使程序紧凑便于理解。
1 在输入前,先输入一个总数,然后输入总数个整数。
2 约定输入的结束符,如遇到换行结束输入,或者以EOF为结束输入标记。
对于每种情况,处理的方式大致相同,但略有区别。
1 不需要保存每个值,而是只需要使用该值即可。这样可以读入每个数,逐个处理即可。
2 需要保存所有值的,可以将所有值保存在数组中,这个数组可以是静态的,也可以是动态的。
如果可以确定数据的最大规模,比如最多1000个数,那么可以先创建一个足够大的,比如1000个元素的数组,静态动态均可。然后依次将元素存入。
如果无法确定最大规模,那么就必须用动态数组。
对于先输入总数的情况,可以在得到总数后,根据总数申请一个动态数组。
对于总数在输入完成前始终未知的情况,可以先申请一定空间的值,在每次空间不足时,使用realloc函数,重新分配空间,实现不定量存储。
先将输入的数据按字符串一次读入,后面自己分离数据。
定义一个字符型的一维数组,char s[81];——最多能接收80个数字字符,即一行。
假定以空格隔离整数,遇到非法数字退出
#include "stdafx.h"
void main(void)
{
char buffer[1024];
char* p = buffer;
int data[32];
gets(buffer);
int n = 0;
while (*p != 0)
{
// 过滤空格
while (*p == ' ' || *p == '\t')
p ++;
// 读整数
if (sscanf(p, "%d", &data[n]) == 0)
break;
n ++;
// 偏移指针,包括符号和数字
p ++;
while (*p >= '0' && *p <= '9')
p ++;
}
for (int i = 0; i < n; i ++)
printf("%d\n", data[i]);
}
暨放铿锵: 我给你写一个,绝对没有输入数目的限制.用指针来解决这个问题.数组是不行的. #include<stdio.h> #include<alloc.h> void main() {int *p,i,k; scanf("%d",&k);/*你想输入几个数,就输入几.*/ p=(int *)malloc(20*sizeof(int));/*申请20个整数类...
缙云县18677685775: 在c程序中怎样输入不确定数目的n个数字 - ?
暨放铿锵: 这种技术叫做动态数组,C语言中的实现方法如下,涉及内存的申请等:#include #include int main() { int n1,i; int *array; puts("输入你需要的数组的长度:"); scanf("%d",&n1); array=(int*)malloc(n1*sizeof(int)); for(i=0;i{ array[i]=i+1; printf("%d\t",array[i]); } free(array);//释放你申请的内存 return 0; }
缙云县18677685775: 求关于c语言连续输入不定个数的算法 - ?
暨放铿锵: 动态分配算法~~#include "stdio.h"#include "stdlib.h" void main() { int i,n,*p; printf("输入元素个数n=:"); scanf("%d",&n); if((p=(int *)calloc(n,sizeof(int)))==0)//开辟动态数组,并检查是否成功. { printf("未能开辟数组p!程序结束.\n"); exit(0); } for(i=0;i scanf("%d",p+i); printf("输入元素为:\n"); for(i=0;i printf("%d ",p[i]); printf("\n"); free(p); } 完~
缙云县18677685775: C语言中如何实现不确定个数的数据输入(不能使用提前开辟大空间的办法) - ?
暨放铿锵: 那就在程序运行的时候动态开辟空间,使用链表数据结构呗
缙云县18677685775: c语言如何输入不确定值的个数 - ?
暨放铿锵: 你说的是不确定个数的变量,还是不确定值得变量? 前者你可以scanf("%d",&i), int * p = malloc(sizeof(int) * i) 这样可以分配i个int 类型的空间给你. 后者的话,就有点无语了,int a 不初始化,那么a就是个不确定值得变量
缙云县18677685775: C语言 怎样实现不确定元素个数的数组的数据输入 - ?
暨放铿锵: int n,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(...
缙云县18677685775: 如何用C语言编写输入不知道个数目的数组?并输出最大值与最小值?要用C语言不能用C++ - ?
暨放铿锵: #include void main() { int j,k; for(j=0;;j++) { int a[100]; int i,m; printf("--------------------\n"); printf("--------------------\n"); printf("请输入一个一维数组,\n当输入0时完成输入:\n"); printf("--------------------\n"); for(i=0;i { scanf("%d",&a[i]); if(a[i]=...
缙云县18677685775: C语言中,如何利用数组输入不知道个数的若干数, - ?
暨放铿锵: 在数据结构里面,一般使用动态分配空间的方式,malloc首次分配和realloc重新分配更大空间.你可以先malloc一个比较大点的空间,比如20个int的数组空间,当输入个数超过20时,realloc一片20+10的空间,也就是一次性增大10个int的空间,再输入到30个了,就再realloc一片30+10的空间.需要一个变量存贮当前最大空间,然后一个变量记录你输入了多少个数据.
缙云县18677685775: 如何用c语言编写变量数不定的程序 - ?
暨放铿锵: 你这个描述不是很清楚.如果只是定义一个变量的话,可以用malloc和free动态分配数组
缙云县18677685775: C语言如何输入不明个数的数字并用于运算 - ?
暨放铿锵: 问题是,要做什么运算.....数组可以预留足够多的空间,或者说,可以动态分配 ——————————————————————————