看一下这个C语言问题,我不知道我做错了什么哪儿错了

已被0人收藏
&我看了半天就是不知道这段代码哪里错了?(C语言)
来自:保密
发帖:27+81
This is exercise2.19
int a, b, c, largest,
printf("Enter three different integer :\n");
scanf("%d%d%d", &a, &b, &c);
printf("Sum is : %d\n", a+b+c);
printf("Average is %d\n", (a+b+c)/3);
printf("Product is %d\n", a*b*c);
if(smallest>a)
smallest=a;
if(smallest>b)
smallest=b;
if(smallest>c)
smallest=c;
if(largest
-------------------------------------------------------------------------------------------
我爱JAVA!
...楼主...
来自:保密
发帖:6+568
你,我问你,smallest的值在开始的时候是多少?一个不赋予值的变量是不应该被使用的.但不赋值的变量并不意味着没有值,它会有一个随机值,至于是多少,我不知道.
-------------------------------------------------------------------------------------------
Will Never
来自:保密
发帖:30+65
你说的情况我没发生啊。
lagtest 和smallest都没有赋初值,所以他们的值都是随机数,一般都是一个很小的负值,如果你一正常人的思维输入三个数的话,一般来说smallest没办法比你输入的三个值中的大,所以smallest一直没有赋值;而largest如果小于你输入的数话,(一般来说是会这样的。难道你回去输一个-xxxxxxxx的数吗?)那largest就有可能先被复值为a,然后进行正常的比较。
-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......
来自:保密
发帖:27+81
我没有给smallest赋值。但是也没有给largest赋值。
我不明白的是:为什么smallest运行的结果是正确的,而largest则不正确。
给largest赋值后运行结果正确。可smallest不赋值运行的结果也能正确呢?
-------------------------------------------------------------------------------------------
我爱JAVA!
来自:保密
发帖:30+65
yeoman你也在啊。
可能我写的你没看到,我觉得说得很清楚了。静下来想一想,很简单的。
-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......
来自:保密
发帖:84+470
出于安全的考虑,请在使用前赋初值.
-------------------------------------------------------------------------------------------
心,是不会老的.当它还没有彻底放弃的时候.
爱,是不会断的,当我们生活在这个世界的每一天.
来自:保密
发帖:27+81
问题是,既然smallest没有被赋值。那运行显示的应该是smallest的随机数吧。
可是我运行后却能正确显示我所输入的几个数中(12,13,14)最小那个。
largest如果能正常和a,b,c比较的话,运行后应该正确啊。
-------------------------------------------------------------------------------------------
我爱JAVA!
来自:保密
发帖:27+81
我只是想搞明白为什么变量“smallest”不用赋值也能计算正确。而“largest”就不行。
-------------------------------------------------------------------------------------------
我爱JAVA!
来自:保密
发帖:27+81
大家把顶楼的代码拷去编译运行一下,看看“Largest is ”处是不是老是显示“1245036”。
-------------------------------------------------------------------------------------------
我爱JAVA!
来自:保密
发帖:0+184
“Larget is”处是不是老是显示“1245036”。
不是!!!
我在gcc里是显示。
如果你在scanf之前打印smallest的值,照样能使smallest出错。现在没有出错是因为你的a,b,c取得巧。
-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......
来自:保密
发帖:17+24
我把你的程序分别用vc++
6.0和turbo c2.0编译,vc++6.0的结果是smallest一直 :-
largest为正确值,但用tc2.0编译。如果input :12 13 14 和 10 13 17却是smallest正确,而largest一直是226,而用 100,
1252, 1334
, smallest:100
而用0, smallest:-31072 largest:226
请问各位为什么 会有不同的结果?
-------------------------------------------------------------------------------------------
快乐就是举重若轻
...10楼...
来自:保密
发帖:20+721
天之川已经说出了答案:你程序的运行结果取决于
largest, smallest 的初值,而你的程序中没有为它们赋初值,那么它们的初值就无法确定,所以你的程序运行结果也就无法确定。
请仔细阅读你手边的 C 语言教材。
-------------------------------------------------------------------------------------------
Program is my incantation
Computer is my golem
Internet is my world of magic
...11楼...
来自:保密
发帖:27+81
哦,知道了。
那么小的问题都搞得我头大。真是惭愧。
-------------------------------------------------------------------------------------------
我爱JAVA!
...12楼...
来自:保密
发帖:12+19
if(smallest>a)
你的问题就是在这里了,为什么本来就是没有初始化的东西smallest怎么可以直接
进行比较呢?你先搞清楚smallest到底是什么东西啊?
-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......
...13楼...
来自:保密
发帖:13+128
只要把这两行去掉,就行了
if(smallest>a)
if(largest
-------------------------------------------------------------------------------------------
水不是这么灌di
...14楼...
来自:保密
发帖:20+36
楼上noword说的真好!艺术般的。
一般来说编译器给一个变量赋较大的初值。所以会有这样的结果
-------------------------------------------------------------------------------------------
Inprise,Good!Delphi,Good!
...15楼...
首先,请你以一种,团成一个团的姿势,然后,慢慢地比较圆润的方式,离开这座让你讨厌的城市,或者讨厌的人的周围首先,请你以一种,团成一个团的姿势,然后,慢慢地比较圆润的方式,离开这座让你讨厌的城市,或者讨厌的人的周围
我看了半天就是不知道这段代码哪里错了?(C语言)
数码影像推荐
最新二手发布
扫描关注官方微信
扫描下载客户端
你可以发私信给一个或多个听众。默认不能发给非听众,除非对方设置了允许。
奖励分值:您今日还有 3 点分值可以奖励 [ 20 点奖分可自动换取 1 点PP]
请输入4位有相同表情的数字
&违反国家法律&&&&&&&&&含有色情内容
&对他人进行恶意攻击
&散布广告以及其它商业化的宣传
&干扰或混乱kds宽带山网络服务
&发布任何包含种族、 性别、宗教歧视性和猥亵性的信息内容
&恶意刷屏&&&&&&&&&&&&&&&内容重复&&&&&&&&&&&&&&&攻击管理员
&本人要求删除&&&&&&&&当事人要求删除
&与主题无关&&&&&&&&&&&水贴软文&&&&&&&&&&&涉及敏感政治内容
&被要求删除,你懂的&&&&&&&&&&&盗号并发布违规或广告内容
扣除hp值:
宽带山警务室
&恶意刷屏&&&&&&&&&水贴软文
&违反国家法律
&含有色情内容
&对他人进行恶意攻击
&散布广告以及其它商业化的宣传
&干扰或混乱kds宽带山网络服务
&发布任何包含种族、 性别、宗教歧视性和猥亵性的信息内容
&网页不能打开
&图片不能显示
已报名参加的人员:麻烦c语言帮我看看我这段程序错在哪里-麻烦帮我看下这个简单的C语言程序哪儿错了,谢谢。 _汇潮装饰网
您当前位置:
麻烦c语言帮我看看我这段程序错在哪里
麻烦c语言帮我看看我这段程序错在哪里
Y',&a);if(a==&#39#include&stdio.h&,&c);if(c=='){switch(a){case &#39!\n&||a==');%c&quot:printf(&Do you have bachelor degree?\);n&);case &#39:printf(&We are so sorry to tell you.;break:case '||c=='Y'||c==&#39:printf(&We are so sorry to tell you.,c;y':case 'N';main(){Y&#39..\||a==&#39..;:printf(&);n&#39.\n&%c&n&);scanf(&){switch(c){case '%c&N'n&#39,b..\);printf(&Do you have Experience with C?Press y/n\n&case &#39?\n&||a==&#39:case 'N'.\n&,&b);if(b=='y'||b=='Y'||b=='n'||b=='N'){switch(b){case 'n';Y'||c=='}}}}}}else printf(&scanf(&quot..;Wy':printf(&:case 'N'n&);case 'y';y':case 'N';Do you less than 30;n'scanf(&:case 'Y';We are so sorry to tell you:printf(&n');y&#39
.&#92,这样就明了多了;y'Y&#39,而且运行通过。#include&stdio.h&gt..:printf(&We are so sorry to tell you.,调试了我半个小时,呼呼.\n&n&);case 'y';);||c=='n':case 'Y';y'y&#39..;,&c); if(c==':printf(&Y&#39:case ':printf(&We are so sorry to tell you.同学;||a=='){switch(c){case 'n':case 'Y'%c&)?\n&||a=='scanf(&%c&;We are );}}scanf(&main(){char a,b,c;printf(&Do you have Experience with C?Press y/n\n&||c==&#39..\n':case 'N':case 'N&#39,终于知道怎么一回事了,你看看你用的SWITCH 一层又一层;,&b);if(b=='y'||b=='Y'||b=='n'||b=='N'){switch(b){case ':printf(&Do you less than 30?\);if(a=='N':printf(&n&);}}else printf(&quot:printf(&Welcome join us!\){switch(a){case 'n':case 'Y'n'case 'N'N&#39.\n&Do you ||a=='||c=='n&);case 'y';n&);}}scanf(&%c&quot,&a),看到我头晕晕,我帮你改成一个一个地判断
买一本w.r.stevens的UNIX高级环境编程。从stdin中读入数据,一定要把指针弄清楚,分为带缓冲与不带缓冲两种,也要弄清楚。我建议你把你的电脑系统换成n&#39。在数据的读写时。 如:read(STDIN_FILENO, &b, 1);在学C的时候。想改进话,我建议你采用不带缓冲区的read函数,在第二次scanf的时候,它读缓冲区的数据;\n'。如果你想看过你想要的结果,你可以一次性输入yyy+'\n'给赋予了b.就结束了程序,此时把'后你这里的问题是scanf的问题,在你第一次输入y+'&#92
scanf()函数使用的不清楚。你程序中会使用1~2次scanf()。问题就出现在第二次使用上面。因为scanf扫描输入完成后,输入缓冲区中会保留一个回车字符(很多人都以回车作为结束,此外scanf还会以空格和tab作为结束标志)。这样第二次scanf就会直接从缓冲区中读取那个回车字符,so,你后面的if判断就全部为假,直接over掉。 增加fflush(stdin)清空缓冲区即可,
首先说明下原因,当你在第一个提问之后敲下:y然后回车,这时候缓冲区里面有一个字符“y”和一个“回车”。因此,很自然的,a=='y',因为缓冲区里还有一个回车符,因此到程序执行到scanf(&%c&,&b);的时候便把回车符赋给了b,于是b=='\n',不符合if(b=='y'||b=='Y'||b=='n'||b=='N')的判断,于是程序就结束了。解决的方法可以在后面两条scanf语句前面加一句getchar(),来消掉缓冲区的回车符,当然更简单的,可以通过scanf(& %c&,&b);/*注意%c前面有个空格*/,用来忽略空白字符。当然还有其他的方法,现在附上第二种方法修改后的程序。。#include&stdio.h&int main(){
char a,b,c;
printf(&Do you have Experience with C?Press y/n\n&);
scanf(&%c&,&a);
if(a=='y'||a=='Y'||a=='n'||a=='N')
case 'n':
case 'N':printf(&We are so sorry to tell you...\n&);
case 'y':
case 'Y':
printf(&Do you have bachelor degree?\n&);
scanf(& %c&,&b);/*注意%c前面有个空格*/
if(b=='y'||b=='Y'||b=='n'||b=='N')
case 'n':
case 'N':printf(&We are so sorry to tell you...\n&);
case 'y':
case 'Y':
printf(&Do you less than 30?\n&);
scanf(& %c&,&c);/*注意%c前面有个空格*/
if(c=='y'||c=='Y'||c=='n'||c=='N')
switch(......
完全看不清楚, 动手打一下题目也可以啊)
int i,j,*p=x; 改为: int i,j,*p=&x; 效率太低了,给你个代码: 回溯算法...)
for(int i = 1; i &= 9; ++i){ for(int j = 1; j &= i...)
标志位,用于判定程序有没进入相应的地方 while(fleg)相当于while(fleg == 1)...)
A 7个字符的字符串要用至少8个元素的字符数组保存 因为还有个尾巴 '\0')
#include &stdio.h&#include &math.h&int main(){doub...)
第一题: 这里的p是一个指针,他指向数组a的第一个元素,其实这里的p就可以认为是a了。 还有就是这个...)
要保存什么东东呀? 使用文件保存, FILE 你们学了吧, 用这个就可以.)
帮忙读一个c语言程序 从每一个语句上分析 并帮忙从函数调用上分析一下 真是麻烦啦 程序太长 我表示真...)}

我要回帖

更多关于 不知道是谁的错 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信