程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 數組-12. 簡易連連看,數組-12連連看

數組-12. 簡易連連看,數組-12連連看

編輯:關於C語言

數組-12. 簡易連連看,數組-12連連看


 1 /*
 2  * Main.c
 3  * E12-數組-12. 簡易連連看
 4  *  Created on: 2014年8月22日
 5  *      Author: Boomkeeper
 6  ********測試通過*********
 7  */
 8 
 9 #include <stdio.h>
10 #include <stdlib.h>
11 
12 int main(void){
13 
14     int x1,y1,x2,y2;
15     int i,j,k;
16     int N;//題目中的N
17     char array[10][10];
18     int count=0;//計次匹配錯誤的次數
19     int m=0;//玩家輸入的次數
20     int letterLeft;//盤面中剩余的字母個數,當減少到0時,則勝利
21 
22     scanf("%i",&N);
23     getchar();
24 
25     letterLeft=2*N*2*N;
26 
27     for(i=0;i<(2*N);i++)
28         for(j=0;j<(2*N);j++){
29             array[i][j]=getchar();
30             getchar();
31         }
32 
33     scanf("%d",&m);
34     getchar();
35     
36     for(i=0;i<m;i++){
37         scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
38 
39         //匹配成功,則將兩個符號消為“*”
40         if((array[x1-1][y1-1]==array[x2-1][y2-1]) &&
41                 (array[x1-1][y1-1]<='Z' && array[x1-1][y1-1]>='A')){
42             array[x1-1][y1-1]='*';
43             array[x2-1][y2-1]='*';
44             letterLeft=letterLeft-2;
45 
46         } else{
47             printf("Uh-oh\n");
48             count++;
49             continue;
50         }
51         //若匹配錯誤達到3次,則輸出“Game Over”並結束游戲
52         if(count==3){
53             printf("Game Over\n");
54             exit(0);
55         }
56         //當全部符號匹配成功,則輸出“Congratulations!”,然後結束游戲
57         if(letterLeft==0){
58             printf("Congratulations!\n");
59             exit(0);
60         }
61         //輸出盤面
62         for(j=0;j<2*N;j++){
63             for(k=0;k<2*N-1;k++)
64                 printf("%c ",array[j][k]);
65             printf("%c\n",array[j][2*N-1]);
66         }
67 
68     }
69 
70     return 0;
71 }

剛看到這個題目頭都大了,簡直就是一篇短文閱讀理解,那麼多字...一下子就沒了耐心。

但最後發現,它比“數組-11. 猴子選大王”還是簡單多了,因為沒有涉及很高深的數學問題,只要耐住性子,還是做了出來。

只是讀題目就讀了三四遍,測試了幾十遍...這要是在考試中...%>_<%   %>_<%

 

題目鏈接:

http://pat.zju.edu.cn/contests/basic-programming/%E6%95%B0%E7%BB%84-12

 

.


C語言寫出 ,將2維數組a[3][4]z轉化成一維數組b[12]

可以按照 第二樓 同志的說法.
如果實在要轉換的話可以使用,如下
int a[3][3];
int b[12];
int t=0;
for(i=0;i<3;i++){
for(j=0;i<4;j++){
b[t++] = a[i][j];
}
}
 

給定一個數組:int[]array = {12,1,3,34,121,565};將其元素按照從小到大的順序打印

#include<stdio.h>

void paixu(int x[],int n) /*形參用數組 x[],下標法引用。*/
{ int i,j,k,t;
for(i=0; i<n-1; i++) /*取基准數序號 i=1 -- n-1 (當前名次守擂者 i-->k)*/
{
for(k=i, j=i+1; j<n; j++) /*取比較數序號 j=i+1 -- n (競爭對手-->j)*/
if(x[j]<x[k]) k=j ; /* 決第k名(較量:若對手 < 守擂者,則記錄 j-->k */
if(k!=i) t=x[i],x[i]=x[k],x[k]=t ; /* i!=k 序號 i與 k 中的數交換。 */
}
for(i=0; i<n; i++)
printf("%d\t",x[i]);
}
void main() /***主函數**** 賦值 與輸出***/
{
int a[] = {12,1,3,34,121,565},n=6 ; /* n = 數據個數*/
paixu( a , n);
getchar(); /* 暫停用 */
}
 

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