| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1008 人关注过本帖
标题:谢谢各位大大,新手请教个白菜
只看楼主 加入收藏
ophuanghao
Rank: 1
等 级:新手上路
帖 子:18
专家分:1
注 册:2010-2-24
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:16 
谢谢各位大大,新手请教个白菜
一个题要求输入4个整数,然后按由小到大输出,我想法是让i自加,遇到那个就输出那个,但是为啥每次都只输出第一位?大大些看看我程序错在那里~~
#include <stdio.h>
main ()
{
int a,b,c,d,i;
  printf("please input a,b,c,d\n");
  scanf("%d,%d,%d,%d\n",&a,&b,&c,&d);
  for (i=0;i<(a+b+c+d);i++)
  {
      if (i==a||i==b||i==c||i==d)
  printf("%d ",i);  
  }
}

谢谢了
搜索更多相关主题的帖子: 白菜 
2010-02-25 19:57
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:1 
scanf("%d,%d,%d,%d\n",&a,&b,&c,&d);--> scanf("%d,%d,%d,%d",&a,&b,&c,&d);
2010-02-25 20:29
ophuanghao
Rank: 1
等 级:新手上路
帖 子:18
专家分:1
注 册:2010-2-24
收藏
得分:0 
以下是引用ying8501在2010-2-25 20:29:46的发言:

 scanf("%d,%d,%d,%d\n",&a,&b,&c,&d);--> scanf("%d,%d,%d,%d",&a,&b,&c,&d);
还是不行呢~~
2010-02-25 20:47
lixnkei
Rank: 4
来 自:樱之国度
等 级:业余侠客
帖 子:133
专家分:227
注 册:2008-5-13
收藏
得分:9 
楼主的方法不太妥当,万一用户输入的是一些以万为单位的数字呢?

用互换的方式比较好。
程序代码:
#include <stdio.h>

void int_swap(int * p, int * q)
{
    int t;
    
    t = *p;
    *p = *q;
    *q = t;
    
    return;
}


int main (void)
{
    int a[4];
    int i;

    for (i=0; i<4; i++)
    {
        printf("请输入第 %d 个数字:", i+1);
        scanf("%d", &a[i]);
    }


    if (a[0]>a[1])
        int_swap(&a[0], &a[1]);
    if (a[1]>a[2])
        int_swap(&a[1], &a[2]);
    if (a[2]>a[3])
        int_swap(&a[2], &a[3]);
    if (a[0]>a[1])
        int_swap(&a[0], &a[1]);
    if (a[1]>a[2])
        int_swap(&a[1], &a[2]);
    if (a[0]>a[1])
        int_swap(&a[0], &a[1]);

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

    return 0;
}


老师说:会写代码的人多如牛毛,但写得很规范的却不多。代码要规范,养成好习惯~!
2010-02-25 20:58
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
这个如果输入小一点的数结果是正确的吗?
2010-02-25 21:01
ophuanghao
Rank: 1
等 级:新手上路
帖 子:18
专家分:1
注 册:2010-2-24
收藏
得分:0 
以下是引用lixnkei在2010-2-25 20:58:14的发言:

楼主的方法不太妥当,万一用户输入的是一些以万为单位的数字呢?

用互换的方式比较好。#include <stdio.h>
 
void int_swap(int * p, int * q)
{
    int t;
     
    t = *p;
    *p = *q;
    *q = t;
   ...
非常感谢,呵呵,说实话初学,书都才刚看到第6章,呵呵 不过还是想弄懂我那个到底错误在那里,以后好纠正
2010-02-25 21:03
ophuanghao
Rank: 1
等 级:新手上路
帖 子:18
专家分:1
注 册:2010-2-24
收藏
得分:0 
以下是引用pangding在2010-2-25 21:01:31的发言:

这个如果输入小一点的数结果是正确的吗?
输入小一点也只出来第一个数,不管第一个数是不是最小的,然后就over了
2010-02-25 21:04
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
虽然效率很低,但程序是可以运行的。注意输入数据的时候用逗号隔开,否则就会出错。另外,a,b,c,d不能是负数。
2010-02-25 21:04
lixnkei
Rank: 4
来 自:樱之国度
等 级:业余侠客
帖 子:133
专家分:227
注 册:2008-5-13
收藏
得分:0 
程序代码:
#include <stdio.h>  
  
int main (void)  
{  
    int a,b,c,d,i;  
    printf("please input a,b,c,d\n");  
  
    scanf("%d,%d,%d,%d",&a,&b,&c,&d); //原:scanf("%d,%d,%d,%d\n",&a,&b,&c,&d);  
  
    for (i=0;i<(a+b+c+d);i++)  
    {  
        if (i==a||i==b||i==c||i==d)  
            printf("%d ",i);    
    }  
  
    return 0;  
}  

以上代码经测试是可以的,虽然数值不大的情况下还可以,但建议再优化。如:

程序代码:
#include <stdio.h>  
int main (void)  
{  
    int a, b, c, d, i, t;  
    printf("please input a,b,c,d\n");  
    scanf("%d,%d,%d,%d",&a,&b,&c,&d);  
  
//取最大值  
    if(a>b)
        t = a;
    else
        t = b;
    if(c>t)
        t = c;
    if(d>t)
        t = d;          
//开始输出 -_,-!! 话说真的很低效。。。但能想到这个方法,确实值得钦佩。\"\" 
 
    for (i=0; i<=t; i++)  
    {  
        if (i==a||i==b||i==c||i==d)  
            printf("%d ",i);    
    }  
  
    return 0;  
}  





[ 本帖最后由 lixnkei 于 2010-2-25 21:18 编辑 ]


老师说:会写代码的人多如牛毛,但写得很规范的却不多。代码要规范,养成好习惯~!
2010-02-25 21:08
ophuanghao
Rank: 1
等 级:新手上路
帖 子:18
专家分:1
注 册:2010-2-24
收藏
得分:0 
那为啥我在vc上运行 每次都只能输出第一个数呢
2010-02-25 21:14
快速回复:谢谢各位大大,新手请教个白菜
数据加载中...
 
   



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

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