c语言,如何将键盘输入的n个整数存入一个数组中,n的大小未知
发布网友
发布时间:2022-07-31 11:08
我来回答
共5个回答
热心网友
时间:2023-11-24 23:09
1、可以预先定义足够大的数组(浪费在所难免),然后将键盘输入的整数存入数组,并累计数据个数。
...................................................................
int i,n = 0,a[1024]
while(1) {
printf("输入整数(q: 结束输入过程)%d : ", n + 1);
if(scanf("",&a[n]) != 1) break;
++n;
}
for(i = 0; i < n; ++i) printf("%d ",a[i]);
printf("\n");
.............................................................
2、动态申请空间
.................................................................
#include <stdlib.h>
int i,n,*a;
printf("数据个数 : ");
scanf("%d",&n);
a = (int *)malloc(n * sizeof(int));
for(ii = 0; i < n; ++i) {
printf("数%d = ",i + 1);
scanf("%d",&a[i]);
}
for(i = 0; i < n; ++i) printf("%d ",a[i]);
printf("\n");
.........................................................
delete a; // 程序结束前要释放动态内存
热心网友
时间:2023-11-24 23:10
这样来实现
#include<stdio.h>
void main()
{
int a[50];
int i=0,j=0;
printf("请输入数据,中间用空格间隔,用回车结束输入:\n");
do
{
scanf("%d",&a[i++]);
}while(getchar()!='\n');
for(j=0;j<i;)
{
printf("%3d",a[j]);
j++;
if(j%5==0)
printf("\n");
}
printf("\n");
}
热心网友
时间:2023-11-24 23:10
你要把n个整数依次存入数组,有多种方法,如果一个一个输入,循环的终止条件必定要设立一个标志位的,就像你输入一个字符串要有\0结尾一样,一个程序的确定性是程序运行的前提,计算机只能认识你输入的东西,你要告诉它你结束了,就要让它从你的输入中找到记号。追问请问大神,除了一个一个输入,还有什么办法?
追答额。我不是大神,就是个菜鸟。。。
昨天写得有点快了写错了,呵呵,我意思是输入到内存中是有多种方法,比如可以弄到链表里面等等,引起歧义不好意思。
我是不知道你的本意是什么,如果想在程序中随时随地写入一个值,但是不想重复写什么scanf等语句,可以把输入一个数作为一个单独的功能,写一个void InputANum(int *Source, unsigned int Position, int input); 如果你要输入一个数到数组里面就调用一下这个函数,在程序的各个地方都可以方便的把数据放到数组里面,这个也是模仿一下链表的新建节点的操作。
希望可以帮助到你
热心网友
时间:2023-11-24 23:11
#include <stdio.h>
#define MAXN 1000
int main ()
{
int num[MAXN];
int id = 0;
while (scanf("%d",&num[id])!=EOF)
{
id ++ ;
}
int i;
for(i=0;i<id;i++)
{
printf("%d ",num[i]);
}
printf("\n");
return 0;
}
可以采用文件结束为结束位置,输入ctrl+z,回车结束输入n个数追问不行的,你把它放在编译器里试试吧,编译都通不过,将i的声明移到开头,编译倒是通过了,但运行无结果,就是那!=EOF有问题,这在getchar中才可以这样用
热心网友
时间:2023-11-24 23:12
int a[100];//看你的需要来确定数组大小
int i,n;(n要是确定的数就不要定义不要输入 直接用)
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);