程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> ccf-CCF考試201403-2窗口,測試用例通過但0分,請各位大神幫忙看看哪兒有問題

ccf-CCF考試201403-2窗口,測試用例通過但0分,請各位大神幫忙看看哪兒有問題

編輯:編程解疑
CCF考試201403-2窗口,測試用例通過但0分,請各位大神幫忙看看哪兒有問題

問題描述  在某圖形操作系統中,有 N 個窗口,每個窗口都是一個兩邊與坐標軸分別平行的矩形區域。窗口的邊界上的點也屬於該窗口。窗口之間有層次的區別,在多於一個窗口重疊的區域裡,只會顯示位於頂層的窗口裡的內容。
  當你點擊屏幕上一個點的時候,你就選擇了處於被點擊位置的最頂層窗口,並且這個窗口就會被移到所有窗口的最頂層,而剩余的窗口的層次順序不變。如果你點擊的位置不屬於任何窗口,則系統會忽略你這次點擊。
  現在我們希望你寫一個程序模擬點擊窗口的過程。
輸入格式  輸入的第一行有兩個正整數,即 N 和 M。(1 ≤ N ≤ 10,1 ≤ M ≤ 10)
  接下來 N 行按照從最下層到最頂層的順序給出 N 個窗口的位置。 每行包含四個非負整數 x1, y1, x2, y2,表示該窗口的一對頂點坐標分別為 (x1, y1) 和 (x2, y2)。保證 x1 < x2,y1 2。
  接下來 M 行每行包含兩個非負整數 x, y,表示一次鼠標點擊的坐標。
  題目中涉及到的所有點和矩形的頂點的 x, y 坐標分別不超過 2559 和  1439。
輸出格式  輸出包括 M 行,每一行表示一次鼠標點擊的結果。如果該次鼠標點擊選擇了一個窗口,則輸出這個窗口的編號(窗口按照輸入中的順序從 1 編號到 N);如果沒有,則輸出"IGNORED"(不含雙引號)。
樣例輸入
3 4
0 0 4 4
1 1 5 5
2 2 6 6
1 1
0 0
4 4
0 5
樣例輸出
2
1
1
IGNORED
我的源代碼:
#include

int main()
{
int N,M,i,j,k;
scanf("%d %d",&N,&M);
struct Window
{
int floor;
int x1;
int y1;
int x2;
int y2;
}temp,W[N];
struct CLICK
{
int x;
int y;
bool flag;
}c[M];
for(i=0;i {
W[i].floor=i+1;
scanf("%d %d %d %d",&W[i].x1,&W[i].y1,&W[i].x2,&W[i].y2);
}
for(i=0;i {
scanf("%d %d",&c[i].x,&c[i].y);
c[i].flag=0;
}
for(i=0;i {
for(j=N-1;j>=0;j--)
{
if((c[i].x>=W[j].x1)&&(c[i].x<=W[j].x2)&&(c[i].y>=W[j].y1)&&(c[i].y<=W[j].y2))
{
c[i].flag=1;
printf("%d\n",W[j].floor);
temp=W[j];

for(k=j+1;k<N;k++)
{
W[k-1]=W[k];

}
W[N-1]=temp;

break;

}

}
if(c[i].flag==0)
{
printf("IGNORED\n");
}
}

return 0;

}

最佳回答:


我知道錯誤了,將flag由bool型改成int型,就可以了。C語言中沒有bool型

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved