精英盒子 -> 程序设计 -> 求大神帮忙改正~小弟新学C++ [打印本页]

xiewei 2012-02-14 06:57

求大神帮忙改正~小弟新学C++

#include"stdio.h"
void values(int a,int b, int c)
{ printf("Enter a whole number: ");
scanf("%d", &a);
printf("Enter a second whole number: ");
scanf("%d", &b);
printf("Enter a third whole number: ");
scanf("%d", &c); }
int smallest(int a, int b, int c)
{
int small=a;
if (a>b){
small=b;
} if (b>c){
small=c;
}
return small;
}
int largest(int a, int b, int c)
{ int large=a;
if (a<b){
large=b;
}
if (b<c){
large=c;
}
return large;
}
void a2question2()
{
int a,b,c,sum,product;
float average;
values(a,b,c);
sum = a+b+c;
average = (a+b+c)/3;
product = a*b*c;
printf("Sum = %d\nAverage = %.2f\nProduct = %d\nSmallest = %d\nLargest = %d\n",sum,average,product,smallest(a,b,c),largest(a,b,c));
}
int main()

{
a2question2();
return 0;
}
---------------------------------------------
最后出来奇怪的结果 求指教,要求是必须让scanf作为单独的方程 values 读取input

[attachment=276]

墨阐 2012-02-14 07:31
童鞋你代码还没发完呢……
从图中看,估计你是因为求得的结果很郁闷.得到的Sum和Largest是随机数,对吧?
这是因为传给其他函数的abc并不是scanf来的三个数,因此其他函数从abc中读到的数字实际是内存中废弃或者别处的数据.
values()的形参是三个整型,这样相当于把这三个整型复制到values()内部作为它的参数.从你的意图看,你是要把输入的三个数写入a,b,c.这样应使用指针来操作,传给values()的应是int*类型,也就是这样:

  1. void values(int *a, int *b, int *c);
    {
            /*......*/
            scanf("%d",a);
            /*......*/
    }

main中类似这样:

  1. int *a,*b,*c;
    values(a,b,c);

顺便欠揍地提一句,从看到的你的代码看,这是纯正的C代码……想说C++,起码用用cin/cout吧……
抱歉,最近在看C++ Primer Plus,可能说得也不对,拍砖随意.

内容来自[手机版]

xiewei 2012-02-14 07:36
墨阐:童鞋你代码还没发完呢……
从图中看,估计你是因为求得的结果很郁闷.得到的Sum和Largest是随机数,对吧?
这是因为传给其他函数的abc并不是scanf来的三个数,因此其他函数从abc中读到的数字实际是内存 .. (2012-02-14 07:31) 

太感谢了 我是初学可能不懂,应该是C语言吧。

whtsky 2012-02-14 13:08
第2楼xiewei于2012-02-14 07:36发表的 回 墨阐 的帖子 的帖子
墨阐:童鞋你代码还没发完呢……
从图中看,估计你是因为求得的结果很郁闷.得到的Sum和Largest是 ..
珍爱生命,远离cpp.
面向对象obj-c足以.还有可选的gc

jybox 2012-02-14 14:20
墨阐:童鞋你代码还没发完呢……
从图中看,估计你是因为求得的结果很郁闷.得到的Sum和Largest是随机数,对吧?
这是因为传给其他函数的abc并不是scanf来的三个数,因此其他函数从abc中读到的数字实际是内存 .. (2012-02-14 07:31) 

C++就是兼容C的嘛...

jybox 2012-02-14 14:25

jybox 2012-02-14 14:25

jybox 2012-02-14 14:25
C++就是兼容C的嘛...

墨阐 2012-02-14 14:34
#3 那我60好几浪费了.

内容来自[手机版]

jybox 2012-02-14 14:58
墨阐:#3 那我60好几浪费了.
内容来自[手机版]  (2012-02-14 14:34) 

啥意思

墨阐 2012-02-14 15:07
#9 C++ Primer Plus,p170.

内容来自[手机版]

jybox 2012-02-14 16:48
墨阐:#9 C++ Primer Plus,p170.
内容来自[手机版]  (2012-02-14 15:07) 

具体

xttyctl9 2012-02-14 18:23

jybox 2012-02-14 18:36
xttyctl9:该主题已被管理员屏蔽! (2012-02-14 18:23) 

到底怎么回事

whtsky 2012-02-14 19:15
第4楼jybox于2012-02-14 14:20发表的 回 墨阐 的帖子 的帖子
墨阐:童鞋你代码还没发完呢……
从图中看,估计你是因为求得的结果很郁闷.得到的Sum和Largest是 ..
c99..




Powered by phpwind v8.7 Code ©2003-2011 phpwind
Time 0.045257 second(s),query:5 Gzip enabled