| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 20273 人关注过本帖
标题:怎么用回车结束整型数组输入
只看楼主 加入收藏
aneeg
Rank: 1
等 级:新手上路
帖 子:75
专家分:8
注 册:2014-4-10
结帖率:86.67%
收藏
已结贴  问题点数:20 回复次数:13 
怎么用回车结束整型数组输入
程序代码:
#include <stdio.h>
int main( int argc, char *argv[] )
{
    int i,j,k,t,n,a[100];
    printf("请输入一组数字:");
    for(n=0;;n++)
        if(scanf("%d",&a[n])==0)break;//这里我用字母控制输入结束,怎么才能按回车键就结束输入,显示结果.
    for(i=0;i<n-1;i++){
        k=i;
        for(j=i+1;j<n;j++){
            if(a[k]>a[j])
                k=j;
        }
        if(k!=i)
        t=a[i],a[i]=a[k],a[k]=t;
    }
    for(i=0;i<n;i++)
        printf("%-4d",a[i]);
    return 0;
}

2014-04-30 20:52
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:4 
int main( int argc, char *argv[] )
{
    int i,j,k,t,n,a[100];
    char ch;
    printf("请输入一组数字:");
    for(n=0;;n++)
    {
        scanf("%d",&a[n]);
        if(getchar()=='\n')
        break;//这里我用字母控制输入结束,怎么才能按回车键就结束输入,显示结果.
    }
    for(i=0;i<n-1;i++){
        k=i;
        for(j=i+1;j<n;j++)
        {
            if(a[k]>a[j])
                k=j;
        }
        if(k!=i)
        t=a[i];
        a[i]=a[k];
        a[k]=t;
    }
    for(i=0;i<n;i++)
    {
        printf("%-4d",a[i]);
    }
    return 0;
}

我不是砖家,要努力成为砖家。
2014-04-30 21:27
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:0 
只需要getchar()=='\n'就可以跳出了!

我不是砖家,要努力成为砖家。
2014-04-30 21:27
aneeg
Rank: 1
等 级:新手上路
帖 子:75
专家分:8
注 册:2014-4-10
收藏
得分:0 
回复 3 楼 砖家的谎言
getchar会不会吃掉一部分数字
2014-04-30 21:35
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:4 
if(scanf("%d",&a[n])==0)break;

.. scanf的返回值是神马 返回你输入数据的个数
所以你的这个for循环怎么看都感觉怪怪的。。

一般来说提前输入一个int值 这个值是要输入数组元素的个数 然后根据这个来控制数组的读取。

如果你不知道多少个。。。那就麻烦点。。
先想好输入神马算是结束标志~
然后
循环,判断是不是结束标志,不是就继续循环,是就继续循环

关于scanf函数 嗯 http://www.
内容还是很多很有讲究的

未知令人期待!
2014-04-30 21:37
aneeg
Rank: 1
等 级:新手上路
帖 子:75
专家分:8
注 册:2014-4-10
收藏
得分:0 
回复 5 楼 神机军师
是有点怪,不过是我能想到的最简单的结束方法了.就是不知道输入的个数才麻烦,我想让回车当结束标志,但不知道怎么做.
2014-04-30 21:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
用流輸入模式是沒有辦法的

授人以渔,不授人以鱼。
2014-04-30 21:58
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
收藏
得分:4 
可以另选一个结束标记。
2014-04-30 22:22
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:0 
getchar()只会吃掉最后一个数字,你可以多输入一个,最后一个数字不作为你要用的,这样也能满足你想要的结果!

我不是砖家,要努力成为砖家。
2014-04-30 22:52
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:0 
你是不是要把你输入的数进行冒泡排序,我这里改动了下,putchar();并没有吃掉数字,你程序有问题,下面是我改动后的程序,这下没有问题了,你可以试试看
int main( int argc, char *argv[] )
{
    int i,j,k=0,t,n,a[100];
    printf("请输入一组数字:");

        for(n=0;n<100;n++)
        {
            scanf("%d",&a[n]);
            k++;
            if(getchar()=='\n')
            break;
        }

    for(i=0;i<k;i++)
    {
        for(j=0;j<k-1;j++)
        {
            if(a[j]>a[j+1])
            {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }

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

我不是砖家,要努力成为砖家。
2014-04-30 23:53
快速回复:怎么用回车结束整型数组输入
数据加载中...
 
   



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

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