| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1572 人关注过本帖
标题:C语言程序设计习题 搞不明白
只看楼主 加入收藏
Cpiano
Rank: 1
等 级:新手上路
帖 子:11
专家分:7
注 册:2014-5-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:22 
C语言程序设计习题 搞不明白
# include<stdio.h>
int main()
{
    int a,b,c;
    int e;
    scanf("%d,%d,%d",&a,&b,&c);
    printf("a=%d,b=%d,c=%d",a,b,c);
    if(a>b)
        e=a;a=b;b=e;  //为什么这里要a=b,b=e
    {
        if(a>c) //如果在 if 前面加上 else 就提示不合法
        e=a;a=c;c=e;   //同上 为什么
    }
    {
        if(b>c)
        e=b;b=c;c=e;   //同上 为什么
    }
    printf("e=%d,\n",a,b,c);
    return 0;
}    //运行结果 错误 不是按照大小排列 e只等于第一个输入的数字 为什么


请各位前辈 指导。。。。。在线等待~~~~~~~~~~~~~
搜索更多相关主题的帖子: 程序设计 include return C语言 
2014-05-16 01:21
Cpiano
Rank: 1
等 级:新手上路
帖 子:11
专家分:7
注 册:2014-5-16
收藏
得分:0 
新人 完全自学中,,,,没有任何基础和老师指导,,痛苦中。。。
2014-05-16 01:23
Cpiano
Rank: 1
等 级:新手上路
帖 子:11
专家分:7
注 册:2014-5-16
收藏
得分:0 
# include<stdio.h>
int main() //定义主函数
{          //主函数开始
    int max(int x,int y,int z);        //对被调用函数 max 的声明
    int a,b,c,e;        //定义变量
    scanf("%d,%d,%d",&a,&b,&c);      //输入变量
    e=max(a,b,c); //调用 max函数,将得到的值赋给 e
    printf("max=%d,%d,%d\n",e); //输出 e
    return 0; //返回函数
}
int max (int x,int y,int z)  为什么要定义 x y z ..。。如果是5个数呢?或者说100个数呢?那该怎么定义???
{
    int f,g;
    if(x>y)f=x;
    else f=y;
    if(f>z)g=x;
    else g=y;
    return(f);
}

我用书上2个整数求最大者的例子 重新写了一遍,可是结果还是不对,只显示 一个最大的数值 别的都是0、、、、、、、

很郁闷的感觉。。。。
2014-05-16 02:14
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:10 
//为什么这里要a=b,b=e         为交换a、b值,过渡一下;

//如果在 if 前面加上 else 就提示不合法         花括号{}内是独立的程序块,else if前应该有if与它配对

//运行结果 错误 不是按照大小排列 e只等于第一个输入的数字 为什么         printf执行栈操作,你使用的编译器采用反向压栈

梦想拥有一台龙芯3A-4000
2014-05-16 02:18
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:0 
楼主你的程序想实现什么功能?  

你遇到什么问题了?  这个问题在什么地方? 代码中? 运行中? 还是运行结果没有达到你的目的?  

问问题的时候把这些说明白了,别人看你的程序的时候能省很多时间和力气, 如果别人不知道你的目的, 可能你的程序运行起来没错,别人就认为没问题,而实际程序运行的结果和你的初中并不相同.

你写的程序看起来就是求a,b,c三者的最大值,并赋给e,然后输出.  你的算法不正确, 结果最后的结果是e=c的值.

在1楼的帖子中,
printf("e=%d,\n",a,b,c);

printf()函数用法有误, e只能接受c的值. e只有一个,没法接收三个数字的值, 编译器把a,b,c当做逗号表达式来看,因此只将最后一个值赋给e.

代码测试环境:  WinXP+C-Free5.0.
2014-05-16 08:19
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:0 
2楼这段代码:
程序代码:
int max (int x,int y,int z)  为什么要定义 x y z ..。。如果是5个数呢?或者说100个数呢?那该怎么定义???
{
    int f,g;
    if(x>y)f=x;
    else f=y;
    if(f>z)g=x;
    else g=y;
    return(f);
}

定义的变量 g 毫无用处,且逻辑也错误。可改为:
程序代码:
int max (int x,int y,int z)
{
    int f = x;
    if (f<y) f=y;
    if (f<z) f=z;
    return f;
}


对于很多个数求最大值的情况,应该采用循环方法逐个比较。
2014-05-16 10:04
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:0 
2楼代码中:
    printf("max=%d,%d,%d\n",e); //输出 e
指定的输出格式中有3个 %d,表明要输出3个 int 类型的值,但你仅提供了一个变量 e 的值。

请楼主先打好基础,再盖楼,否则一定是豆腐渣工程。
2014-05-16 10:08
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:10 
printf("%d\n", 2, 3, 4);

梦想拥有一台龙芯3A-4000
2014-05-16 10:21
Cpiano
Rank: 1
等 级:新手上路
帖 子:11
专家分:7
注 册:2014-5-16
收藏
得分:0 
回复 4 楼 ditg
感谢你的解惑,除了最后一句 反向........没有学习到,所以没有明白什么意思。其他的已经搞明白。。。
2014-05-16 13:33
Cpiano
Rank: 1
等 级:新手上路
帖 子:11
专家分:7
注 册:2014-5-16
收藏
得分:0 
回复 5 楼 vvvcuu
多谢你的提醒。。
我仅仅只是一个 C语言程序设计  看到第二章的 初学者,对问题的描述难免不全面,毕竟第一次接触 代码类的 语言,和自然语言有一定的对冲,所以一下子不太能清晰的描述问题。。。

我要求的是 3个数 按大小排列。
例如运行后 输入数据 是 ,4 7,3 给出的结果就只有一个 4 ,然后后面的不是0 就是一些 负数。。。
2014-05-16 13:37
快速回复:C语言程序设计习题 搞不明白
数据加载中...
 
   



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

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