您的位置:

c语言数字方格,数字方格C语言

本文目录一览:

C语言打印方格

#include stdio.h

int main()

{

int t;

int l[10];

int c[10];

int i,line,col;

scanf("%d", t);

if (t 0 t 10)

{

for (i = 0;i t;i++)

{

scanf("%d %d", l[i], c[i]);

}

for (i = 0;i t;i++)

{

//每组i开始的*

printf("-");

for (col = 0;col c[i];col++)

{

printf("---");

}

printf("\n");

//1行1列打印

for (line = 0;line l[i];line++)

{

printf("|");

for (col = 0;col c[i];col++)

{

printf(" |");

}

printf("\n");

printf("|");

for (col = 0;col c[i];col++)

{

printf(" |");

}

printf("\n");

printf("-");

for (col = 0;col c[i];col++)

{

printf("---");

}

printf("\n");

}

}

}

return 0;

}

用C语言在下图每个方格中分别填入1~12,每个数字只能填一次

int res[12];

int check(int t) {

int sum_rule[][4] = {{0,1,2,3}, {0,2,4,6}, {1,3,5,7}, {0, 1, 8, 9}, {2,3,10,11}};

int i,j;

for (i = 0; i 4; i++) {

int s = 0;

for (j = 0; j  4; j++) {

if (sum_rule[i][j]  t) break;

s += res[sum_rule[i][j]];

if (s  26 || (j ==3  s != 26)) {

return 0;

}

}

}

return 1;

}

int print() {

printf("\t%d\t%d\n", res[4],  res[5]);

printf("%d\t%d\t%d\t%d\n", res[8], res[0], res[1], res[9]);

printf("%d\t%d\t%d\t%d\n", res[10], res[2], res[3], res[11]);

printf("\t%d\t%d\n\n", res[6],  res[7]);

}

void find(int t) {

int i, j;

for (i = 1; i = 12; i++) {

for (j = 0; j  t; j++) {

if (i == res[j]) break;

}

if (j = t) {

res[t] = i;

if (check(t)) {

if (t == 11) {

print();

}

else {

find(t + 1);

}

}

}

}

}

int main() {

find(0);

return 0;

}

C语言题(方格取数)

/*

方格取数(grid.cpp)

问题描述:

给一个n行m列的网格,每个格子里都有一个整数(正负任意),每一步只能向下或向右:

向下一次只能走一格;但是如果向右走,则每次可以走一格或者走到该行的列数是当前所在列数倍数的格子,

即:如果当前格子是(x,y),下一步可以是(x+1,y),(x,y+1)或者(x,y*k) 其中k1。

编程计算从左上角(1,1)走到右下角(n,m)所经过的格子的数字和的最大值。

输入格式:

第一行为两个整数n和m(1≤n≤20,10≤m≤1000),表示网格大小;

接下来n行,每行m个整数,表示对应格子里的整数ti(|ti|100)。

输出格式:

仅一个整数,表示最大和值。

Author:Im_hear

*/

#includeiostream

#includecstring

#includecmath

using namespace std;

int N,M;

int map[21][1001]={0};

int ans[21][1001]={0};

int factor[1001][33]={0};

int fun(int row);

int init(int row);

int main()

{

int x,y;

scanf("%d%d",N,M);

init(N);

for(x=1;x=N;++x){

for(y=1;y=M;++y){

scanf("%d",map[x][y]);

}

}

for(x=1;x=N;++x){

//理解为输入的矩阵只有一行

fun(x);

}

printf("%d\n",ans[N][M]);

return 0;

}

/*将第row行每个位置能达到的最大值记录到ans[row][]行中*/

int fun(int row)

{

int i,index,y,step=1,maxPre,iCount;

int temp = 0;

//第一列只能从上行过来

ans[row][1] = ans[row-1][1] + map[row][1];

for(y=2;y=M;++y){

//假设从左边过来时,累加的值最大

maxPre = ans[row][y-1];

if(row1 ans[row-1][y]maxPre){

//假设从上边过来时,累加的值最大

maxPre = ans[row-1][y];

}

//取得y的因数个数

iCount = factor[row][0];

for(i=1;i=iCount;++i){

//取得y的第i个因数

index = factor[row][i];

//比原先更好的路线,从(row,factor[row][i])位置过来

if(ans[row][index] maxPre){

maxPre = ans[row][index];

}

}

//更新当前位置的最大累计值

ans[row][y] = maxPre + map[row][y];

}

/*

//去掉注释可以看到每行的变化

for(y=1;y=M;++y){

printf("%3d, ",ans[row][y]);

}

printf("\n");

*/

return 0;

}

/*储存1000内每个数的因数*/

int init(int row)

{

int x,y,icount,step;

factor[1][1] = 1;

for(x=2;x=row;++x){

icount=1;

//x是奇数时,因数都是奇数,步长可设为2

step = x1?2:1;

y = x1?1:2;

for(;y=x/2;y+=step){

if(x%y == 0){

factor[x][icount++] = y;

}

}

factor[x][0] = icount-1;

}

return 0;

}

c语言 程序设计 关于方格 黑方格

ASCII码,

在书后面应该有表格的话,查一下就知道了,然后%c是字符输出,我C语言也不是很好219是一个数值,因为字符和数值是可以通用的,所以219代表的字符就是黑方块了,然后就输出了两个黑方块了,不知道你懂了没有,呵呵~ - -我也不是很会。。。

C语言, 加密函数,为什么程序执行后,输出的数字成了方块,怎么解决?

对于数字,你的加密方式是减去22,于是变成不可见字符了。

要想改成可见的,除非换方法,比如把0-9一样做一个凯撒加密