| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1827 人关注过本帖
标题:如何结束完美循环输入??
只看楼主 加入收藏
Mr黑绵羊
Rank: 2
等 级:论坛游民
帖 子:24
专家分:30
注 册:2010-12-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
如何结束完美循环输入??
输入2个或3个数,判断最小值:
#include<stdio.h>
int main()
{
    int a[3],i,min;
    printf("请输入2个或3个数以空格结束\n");
    scanf("%d",&a[0]);
    min=a[0];
    for(i=1;i<3;i++)
    {
        scanf("%d",&a[i]);
        if(a[i]==' ')
            break;
        else if(min>a[i])
            min=a[i];
    }
    printf("最小值为%d",min);
    return 0;
}
问题在于不能输入空格的ascil码了,如果就这样不问输入者要输入的个数要怎样结束循环输入呢??
搜索更多相关主题的帖子: return 
2011-03-02 19:25
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
1:整型数据每次输入都是以空格或回车等空字符结束的;
2:可以 while((scanf("%d",&a[i++]))==1) ,当输入字母等非数字字符时,就会结束输入;
2011-03-02 19:34
Mr黑绵羊
Rank: 2
等 级:论坛游民
帖 子:24
专家分:30
注 册:2010-12-7
收藏
得分:0 
我改成这样为什么输入2个数就自动停止工作了?
#include<stdio.h>
int main()
{
    int a[5],i,min;
    printf("请输入2个或3个数\n");
    scanf("%d",&a[0]);
    min=a[0];
    while((scanf("%d",&a[++i]))==1)
    {
        if(min>a[i])
            min=a[i];
    }
    printf("最小值为%d",min);
    return 0;
}
还有scanf有返回值的吗???
2011-03-02 19:47
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:20 
1:您的 i 没赋初值;
2:您的 i 没限制,也就是说,如果输入多于 5 个数,数组会越界,那还不如不用数组,而改用整型数据,那样会无限次输入;
3:scanf 有返回值.
2011-03-02 20:13
Mr黑绵羊
Rank: 2
等 级:论坛游民
帖 子:24
专家分:30
注 册:2010-12-7
收藏
得分:0 
嗯,改好了,谢谢
#include<stdio.h>
int main()
{
    int a[3],i,min,b;
    printf("请输入2个或3个数以空格结束\n");
    scanf("%d",&a[0]);
    min=a[0];
    for(i=1;i<3;i++)
    {
        if(!scanf("%d",&a[i]))
            break;
        else if(min>a[i])
            min=a[i];
    }
    printf("最小值为%d",min);
    return 0;
}
2011-03-02 20:16
pviva
Rank: 1
等 级:新手上路
帖 子:9
专家分:5
注 册:2011-3-2
收藏
得分:0 
现在的C资料很多都介绍过利用scanf函数的返回值来判断的
2011-03-02 21:39
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
以下是引用Mr黑绵羊在2011-3-2 20:16:06的发言:

嗯,改好了,谢谢
#include<stdio.h>
int main()
{
    int a[3],i,min,b;
    printf("请输入2个或3个数以空格结束\n");
    scanf("%d",&a[0]);
    min=a[0];
    for(i=1;i<3;i++)
    {
        if(!scanf("%d",&a))
            break;
        else if(min>a)
            min=a;
    }
    printf("最小值为%d",min);
    return 0;
}

LZ, 我给您写一个吧。
root@~ #cat 2.c
程序代码:
#include <stdio.h>

int main (void) {

        int a[3],i,min;
        printf ("Enter three digit:");
        for(i=0;i<3;i++) {
                scanf ("%i",&a[i]);
        }
        min=a[0];
        for(i=0;i<3;i++) {
                if(a[i]<min) {
                        min=a[i];
                }
        }

        printf ("Minimum is =%i\n",min);

        return 0;

}

测试:
root@~ #./2
Enter three digit:123 12 0
Minimum is =0
root@~ #./2
Enter three digit:-12132 -12 0
Minimum is =-12132
root@~ #./2
Enter three digit:1 2 3
Minimum is =1
root@~ #

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-02 21:49
快速回复:如何结束完美循环输入??
数据加载中...
 
   



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

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