| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1294 人关注过本帖
标题:求C预言编程题目
只看楼主 加入收藏
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
回复 10楼 rjsp
我的这道题的坐标是用户任意给出的,并且两个矩形可能根本不相交,此时的面积应为0

一片落叶掉进了回忆的流年。
2015-01-15 17:04
lyl930130
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:323
专家分:111
注 册:2013-5-13
收藏
得分:0 
回复 9楼 tlliqi
谢谢
2015-01-15 17:06
lyl930130
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:323
专家分:111
注 册:2013-5-13
收藏
得分:0 
回复 6楼 zklhp
谢谢指点
2015-01-15 17:12
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:0 
以下是引用rjsp在2015-1-15 16:10:49的发言:

#include <stdio.h>

#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))

int main()
{
    int a_x1= 0, a_y1=10;
    int a_x2=10, a_y2= 0;
    int b_x1= 9, b_y1= 8;
    int b_x2=29, b_y2=28;

    printf( "area = %d\n", max( min(max(a_x1,a_x2), max(b_x1,b_x2)) - max(min(a_x1,a_x2), min(b_x1,b_x2)), 0 ) * max( min(max(a_y1,a_y2), max(b_y1,b_y2)) - max(min(a_y1,a_y2), min(b_y1,b_y2)), 0 ) );
    return 0;
}

看了你这个题。。。。。。我还是先复习以下几何吧。
2015-01-15 18:31
lyl930130
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:323
专家分:111
注 册:2013-5-13
收藏
得分:0 
回复 7楼 诸葛欧阳
程序代码:
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
#define _CRT_SECURE_NO_DEPRECATE
#include<stdio.h>
void change(int *a);//保证小的坐标在前,大的坐标在后
int cul_(int *a, int *b);//计算重合面积
void f_printf(int a);
int main()
{
    int x_[4] = { 0 }, y_[4] = {0}, area;//0.1   2.3
    printf("请分别输入两个矩阵的横坐标x1_1,x1_2,x2_1,x2_2,以空格隔开\n");
    scanf("%d %d %d %d",&x_[0], &x_[1], &x_[2], &x_[3]);
    printf("请分别输入两个矩阵的纵坐标y1_1,y1_2,y2_1,y2_2,以空格隔开\n");
    scanf("%d %d %d %d",&y_[0], &y_[1], &y_[2], &y_[3]);
    change(x_);
    change(y_);
    area=cul_(x_,y_);
    f_printf(area);
    return 0;
}

void change(int *a)
{
    if (a[0] > a[1])
    {
        int temp = a[0];
        a[0] = a[1];
        a[1] = temp;
    }

    if (a[2] > a[3])
    {
        int temp = a[2];
        a[2] = a[3];
        a[3] = temp;
    }

}

int cul_(int *a, int *b)
{
    if (a[0] >= a[3])
        return 0;
    else if (a[1] <= a[2])
        return 0;
    else if (b[0] >= b[3])
        return 0;
    else if (b[1] <= b[2])
        return 0;
    else//前面都是没有重叠的情况,这里是重叠的情况
    {
        int x, y;
        x=(a[1] - a[2])<(a[3] - a[0]) ? (a[1] - a[2]) : (a[3] - a[0]);
        y = (b[1] - b[2])<(b[3] - b[0]) ? (b[1] - b[2]) : (b[3] - b[0]);
        return x*y;
    }
}

void f_printf(int a)
{
    if (a)
        printf("重叠部分面积为%d\n", a);
    else
        printf("没有重叠部分\n");

}
2015-01-15 22:29
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
以下是引用诸葛欧阳在2015-1-15 17:04:04的发言:

我的这道题的坐标是用户任意给出的,并且两个矩形可能根本不相交,此时的面积应为0

我的代码中考虑到“两个矩形可能根本不相交”的情况
要不,你给个反例输入给我吧,我重新改一下
2015-01-16 10:49
颜寻
Rank: 2
来 自:ccnu
等 级:论坛游民
帖 子:74
专家分:32
注 册:2014-12-27
收藏
得分:0 
谭浩强拜倒

......................................既然琴瑟起,何以笙箫默
2015-01-17 13:18
快速回复:求C预言编程题目
数据加载中...
 
   



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

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