| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 18907 人关注过本帖, 1 人收藏
标题:C语言输入任意长度数组
只看楼主 加入收藏
擦腚扣破纸
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-10-15
结帖率:50%
收藏(1)
已结贴  问题点数:20 回复次数:6 
C语言输入任意长度数组
求解,如何输入不定个数的数字到一个数组中,以回车键作为输入结束;
搜索更多相关主题的帖子: C语言 如何 
2016-11-04 13:29
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:7 
最好用动态数组
程序代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int i=0,n=1;
    int *a;
    a=malloc(n*sizeof(int));
    do
    {
        scanf("%d",&a[i++]);
        realloc(a,++n*sizeof(int));
    }while(getchar(a[i-1])!='\n');
    for (i=0;i<n-1;i++)
        printf("%d ",a[i]);
    printf("\n");
}

这样看看如何,我还加了输出数组检验结果的准确性。

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-04 14:55
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:7 
getchar(a[i-1])!='\n'
我蛮疑惑的,您把一个char数据保存到int里面去然后执行判断。。。
这样不会因想到a[i-1]原本保存的数据吗?
getchar()!='\n'  不是就行了?
收到的鲜花
  • 九转星河2016-11-04 17:54 送鲜花  5朵   附言:我很赞同
  • 静夜思2018-03-30 03:03 送鲜花  5朵   附言:我也赞同

φ(゜▽゜*)♪
2016-11-04 17:44
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 3楼 书生牛犊
可以哦,这个我没试过,可行。

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-04 17:54
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:7 
回复 2楼 九转星河
#include<stdio.h>
#include<stdlib.h>
int main()
 {
     int i=0,n=1;
     int *a;
    a=malloc(n*sizeof(int));  //a=(int*)malloc(n*sizeof(int))
     do
     {
         scanf("%d",&a[i++]);
         realloc(a,++n*sizeof(int));
     }while(getchar(a[i-1])!='\n');
     for (i=0;i<n-1;i++)
         printf("%d ",a[i]);
     printf("\n");
 }

早知做人那么辛苦!  当初不应该下凡
2016-11-04 18:03
zhusiming
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-3-30
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>

int main()
{
    int i=0,n=1;
    int *a=(int*)malloc(n*sizeof(int));  //注意malloc calloc realloc均在stdlib.h库中
    char b;
    while((b=getchar())!='\n')
    {
        ungetc(b,stdin);                 //ungetc()在stdio.h库中
        scanf("%d",&a[i++]);
        a = (int*)realloc(a,++n*sizeof(int));
    }


    for (i=0;i<n-1;i++)
        printf("%d",a[i]);
    printf("\n");

    free(a);    //释放内存空间,避免内存泄漏
    a = NULL;   //指针赋值空,避免错误引用,C++中才有nullptr,注意大小写;
}
2018-03-30 00:57
zhusiming
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-3-30
收藏
得分:0 
一行输入个数未定的整数数组,元素间以空格分开,然后颠倒顺序打印出来;

使用注意:一行输入的最后不能以空格结尾,否则scanf()会始终挂起,程序无法继续执行;

#include <stdio.h>
#include <stdlib.h>

int main()
{
    //1-数组的动态输入
    int i=0,n=0;
    int *a=(int*)malloc(n*sizeof(int));    //注意malloc calloc realloc均在stdlib.h库中
    char b;
    while((b=getchar())!='\n')
    {
        ungetc(b,stdin);                   //ungetc()在stdio.h库中
        a = (int*)realloc(a,++n*sizeof(int));
        scanf("%d",&a[i++]);

    }
    printf("%d\n",n);

    for (i=0;i<n;i++)
        printf("%d ",a[i]);

    printf("\n");

    //2-数组的顺序交换
    for(int i=0;i<=(int)(n/2-1);i++)
    {
        int temp;
        temp = a[i];
        a[i]=a[n-1-i];
        a[n-i-1]=temp;
    }

    for(int i=0;i<n;i++)
    {
        printf("%d ",a[i]);
    }

    free(a);
    a = NULL;

    return 0;
}


2018-04-04 16:23
快速回复:C语言输入任意长度数组
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022828 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved