| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 475 人关注过本帖
标题:谁能帮忙看下这个代码是哪儿错了为什么完全得不到想要的结果????
只看楼主 加入收藏
cquwt
Rank: 1
等 级:新手上路
帖 子:41
专家分:2
注 册:2013-12-24
结帖率:69.23%
收藏
已结贴  问题点数:5 回复次数:4 
谁能帮忙看下这个代码是哪儿错了为什么完全得不到想要的结果????
就连第一个函数N1=[a/2][b/2]得到的结果也不对??[a/2][b/2]代表两个数除以2取整相乘得到整数。
程序代码:
#include<stdio.h>
#include<math.h>
int no1(double a,double b);
int no2(double a,double b);
int no3(double a,double b);

main(){
    double a,b;
    
    printf("请输入矩形的长和宽:\n");
    scanf("%lf,%lf\n",&a,&b);

    printf("方案一可获得圆盘个数为:%d\n",no1(a,b));
    printf("方案二可获得圆盘个数为:%d\n",no2(a,b));
    if(a==b) 
      printf("方案三可获得圆盘个数为:%d\n",no3(a,b));
} 

int no1(double a,double b){
    int n1;
    n1=(int)floor(a/2.0)*floor(b/2.0);
    return n1;
}

int no2(double a,double b){
    int n2,m;
    m=(int)floor((a-2)/pow(3,0.5))+1;
    if((int)floor(b)/2==0&&m%2!=0)
       n2=m*(floor(b)-1)/2+1/2;
    if(m%2==0)
       n2=m*(floor(b)-1)/2;   
    return n2;
}

int no3(double a,double b){
    int n3,n31,n32,m1;
    double b1;
    
    b1=floor((3/10)*a);
    n31=floor(a/2)*floor(b1/2);
    m1=(int)floor((a-2)/pow(3,0.5))+1;
    
    if(floor(a)/2==0)
       n32=m1*(floor(a)-1)/2+1/2;
    else
       n32=m1*(floor(a)-1)/2;
    
    n3=n31+n32-floor(a);
    return n3;
}
搜索更多相关主题的帖子: color 
2014-09-18 23:48
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:2 
不知道你的程序想干嘛

DO IT YOURSELF !
2014-09-19 09:23
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:2 
printf("请输入矩形的长和宽:\n");
    scanf("%lf,%lf\n",&a,&b);
楼主是怎么输入矩形的长和宽的?中间加逗号了吗?

总有那身价贱的人给作业贴回复完整的代码
2014-09-19 10:37
黄粱一梦
Rank: 1
等 级:新手上路
帖 子:3
专家分:2
注 册:2014-9-19
收藏
得分:2 
首先,scanf函数里面的格式要注意和你输入时的格式是否完全一致,上面有人提到了。floor函数本身有将数据转换成整形的功能所以不需要用int强制转换了,nod函数中if((int)floor(b)/2==0&&m%2!=0)里面我估计你要判断floor(b)是否为偶数,所以我猜这里应该是floor(b)%2。b1=floor((3/10)*a)和n2=m*(floor(b)-1)/2+1/2中不管是3/10还是1/2,值都会为零,这个你应该要用小数表示这几个数。你如果能把这段程序想要解决的问题给表述出来那就更好了,大家就会明白你到底要做什么,代码一看就清楚了。
2014-09-19 11:02
erty1001
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:331
专家分:1433
注 册:2014-8-31
收藏
得分:2 
简单说一点:
 scanf("%lf,%lf\n",&a,&b);改成 scanf("%lf%lf",&a,&b);  
因为你的方法一 使用了floor  它是截断取整  所以方法一输出没有什么问题 但是不符合四舍五入的方法
2014-09-19 20:35
快速回复:谁能帮忙看下这个代码是哪儿错了为什么完全得不到想要的结果????
数据加载中...
 
   



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

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