本文目錄一覽:
- 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一樣做一個凱撒加密
原創文章,作者:IBHO,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/139580.html