标题:C语言入门,代码错误,但是我实在看不出来那里错误,
只看楼主
陈安元
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2014-6-28
结帖率:100%
已结贴  问题点数:20 回复次数:41 
C语言入门,代码错误,但是我实在看不出来那里错误,
#include <stdio.h>
#include <stdlib.h>
int main()
{
float a,b,c,d;
a=11.22;
b=22.33;
c=33.44;
d=a+b+c;
printf("%f+%f+%f=%f",a,b,c,d);
system ("color b2");
printf("\n");
    system("pause");
    return 0;
}
搜索更多相关主题的帖子: include system return C语言 color 
2014-06-28 09:17
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:20 
你认为有什么错误?

授人以渔,不授人以鱼。
2014-06-28 09:20
陈安元
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2014-6-28
得分:0 
回复 2 楼 TonyDeng
后面多了很多0000和其他的数字!应该是11.22+22.33+33.44=??

自学无门!论坛求神
2014-06-28 10:15
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
书上没说float的精度是多少位?你输出有叫它用2位?书上也有说float的表达不是百分百精确,看过没有?字面的33.44无法在二进制的float机制下精确表达出来,也就是说,你虽然在代码中写的是33.44,但编译之后到了计算机里面,它的实际储存值就是显示出来的那个,当你用%.2f的格式输出时,就看到33.44了。

授人以渔,不授人以鱼。
2014-06-28 10:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
你这代码没有错误,只是运行结果与预期不符,所以不要在标题说代码错误。这是很多“求助”帖常见的问题,不说自己的意图,开口就问人为什么有错,你不说想怎样的,谁知道你指什么,像这个,根本就没错误,人家怎么答你?更糟糕的是,若被人追问要他说清楚,还不耐烦的。你这次态度算好的了。

授人以渔,不授人以鱼。
2014-06-28 10:38
马刀66
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2014-6-28
得分:0 
二楼说得对诶,我也是小白
2014-06-28 10:41
陈安元
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2014-6-28
得分:0 
回复 3 楼 陈安元
我晕 这个书上没有提到,我琢磨了半天也没有看出那里错了,看不尽信书不如无书
总之还是感谢你帮忙!谢谢

自学无门!论坛求神
2014-06-28 10:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
书上一定有讲的,不知你看什么书而已,较正规的书都有。另外,告诉你一个某些书上可能会没说的经验,写程序,浮点数尽量用double,不要用float,首先其精确度更高,其次double型的执行速度实际上比float的要快,不是康熙时代那样说尺寸小的float会快(好像谭浩强的书爱教人用float吧)。你这个程序,如果用double,可能未必会发现精度问题,至少没那么容易遇到。

[ 本帖最后由 TonyDeng 于 2014-6-28 10:51 编辑 ]

授人以渔,不授人以鱼。
2014-06-28 10:49
马刀66
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2014-6-28
得分:0 
回复 5 楼 TonyDeng
#include<stdio.h>
void main()
 {  
     char char1,char2,char3;
     char char1_1,char2_1,char3_1;
     int i=1;
     do{
         printf("please enter 3 letters(用空格键隔开字母)\n第%d次测试\n",i);
         scanf("%c %c %c",&char1,&char2,&char3);
            char1_1=char1-1;
            char2_1=char2-1;
            char3_1=char3-1;
            i++;
         printf("letters in the front of three:\n%c\t%c\t%c\n",char1_1,char2_1,char3_1);
          }while(i<6);
 }


我这个怎么回事啊,求告知
2014-06-28 10:53
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
回复 9 楼 马刀 66
printf("letters in the front of three:\n%c\t%c\t%c\n",char1_1,char2_1,char3_1);
你在这句中把char1、char2、char3也输出来看看。

授人以渔,不授人以鱼。
2014-06-28 10:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-433433-1-1.html




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

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