求C预言编程题目
大学4年就学了半本王爽的C,现在自己看了些资料,但是没有老师教没有作业感觉学的没有体系,有点混乱。自己搜出来的题目要么太简单,要么根本不会。希望给一套编程题目,可以循序渐进的按照顺序往下编。
2015-01-15 10:20
2015-01-15 14:40
2015-01-15 14:51
2015-01-15 17:06
2015-01-15 17:12
程序代码:#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