蓝桥杯c语言试题2015
25
int main(int argc, char* argv[])
26
{
27
int x[] = {0,0,0,0};
28
29
bigmul(87654321, 12345678, x);
30
31
printf("%d%d%d%d\n", x[0],x[1],x[2],x[3]);
32
33
return 0;
34
}
第七题:
补全代码,有个6*6的棋盘,预先已经放置了一部分棋子,现在要再补充棋子使得每行每列都有3个棋子
题目附带的不完整代码:
001
int N = 0;
002
003
bool CheckStoneNum(int x[][6])
004
{
005
for(int k=0; k<6; k++)
006
{
007
int NumRow = 0;
008
int NumCol = 0;
009
for(int i=0; i<6; i++)
010
{
011
if(x[k][i]) NumRow++;
012
if(x[i][k]) NumCol++;
013
}
014
if(_____________________) return false; // 填空
015
}
016
return true;
017
}
018
019
int GetRowStoneNum(int x[][6], int r)
020
{
021
int sum = 0;
022
for(int i=0; i<6; i++) if(x[r][i]) sum++;
023
return sum;
024
}
025
026
int GetColStoneNum(int x[][6], int c)
027
{
028
int sum = 0;
029
for(int i=0; i<6; i++) if(x[i][c]) sum++;
030
return sum;
031
}
032
033
void show(int x[][6])
034
{
035
for(int i=0; i<6; i++)
036
{
037
for(int j=0; j<6; j++) printf("%2d", x[i][j]);
038
printf("\n");
039
}
040
printf("\n");
041
}
042
043
void f(int x[][6], int r, int c);
044
045
void GoNext(int x[][6], int r, int c)
046
{
047
if(c<6)
048
_______________________; // 填空
049
else
050
f(x, r+1, 0);
051
}
052
053
void f(int x[][6], int r, int c)
054
{
055
if(r==6)
056
{
057
if(CheckStoneNum(x))
058
{
059
N++;
060
show(x);
061
}
062
return;
063
}
064
065
if(______________) // 已经放有了棋子
066
{
067
GoNext(x,r,c);
068
return;
069
}
070
071
int rr = GetRowStoneNum(x,r);
072
int cc = GetColStoneNum(x,c);
073
074
if(cc>=3) // 本列已满
075
GoNext(x,r,c);
076
else if(rr>=3) // 本行已满
077
f(x, r+1, 0);
078
else
079
{
080
x[r][c] = 1;
081
GoNext(x,r,c);
082
x[r][c] = 0;
083
084
if(!(3-rr >= 6-c || 3-cc >= 6-r)) // 本行或本列严重缺子,则本格不能空着!
085
GoNext(x,r,c);
086
}
087
}
088
089
int main(int argc, char* argv[])
090
{
091
int x[6][6] = {
092
{1,0,0,0,0,0},
093
{0,0,1,0,1,0},
094
{0,0,1,1,0,1},
095
{0,1,0,0,1,0},
096
{0,0,0,1,0,0},
097
{1,0,1,0,0,1}
098