本文目录一览:
- 1、C语言打印方格
- 2、用C语言在下图每个方格中分别填入1~12,每个数字只能填一次
- 3、C语言题(方格取数)
- 4、c语言 程序设计 关于方格 黑方格
- 5、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一样做一个凯撒加密