c语言,如何将键盘输入的n个整数存入一个数组中,n的大小未知
10个回答
展开全部
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; // 程序结束前要释放动态内存
...................................................................
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; // 程序结束前要释放动态内存
展开全部
这样来实现
#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");
}
#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");
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要把n个整数依次存入数组,有多种方法,如果一个一个输入,循环的终止条件必定要设立一个标志位的,就像你输入一个字符串要有\0结尾一样,一个程序的确定性是程序运行的前提,计算机只能认识你输入的东西,你要告诉它你结束了,就要让它从你的输入中找到记号。
追问
请问大神,除了一个一个输入,还有什么办法?
追答
额。我不是大神,就是个菜鸟。。。
昨天写得有点快了写错了,呵呵,我意思是输入到内存中是有多种方法,比如可以弄到链表里面等等,引起歧义不好意思。
我是不知道你的本意是什么,如果想在程序中随时随地写入一个值,但是不想重复写什么scanf等语句,可以把输入一个数作为一个单独的功能,写一个void InputANum(int *Source, unsigned int Position, int input); 如果你要输入一个数到数组里面就调用一下这个函数,在程序的各个地方都可以方便的把数据放到数组里面,这个也是模仿一下链表的新建节点的操作。
希望可以帮助到你
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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个数
#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中才可以这样用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int a[100];//看你的需要来确定数组大小
int i,n;(n要是确定的数就不要定义不要输入 直接用)
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
int i,n;(n要是确定的数就不要定义不要输入 直接用)
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
更多追问追答
追问
你这个n未知的话,那个for就是死循环了啊,我试了,它会一直让我输入。。。
追答
当你知道n是什么的时候,先输入n啊
不确定n的组 有数字个数定的话
int i=0,k;
while(scanf("%d",&k)!=EOF){
a[i]=k;
i++;
}
输入结束时按ctrl+z就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询