当前位置:首页 » 编程语言 » c语言数字迷
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言数字迷

发布时间: 2022-01-16 01:01:30

㈠ 关于乘除法数字谜的matlab程序ABCDEF*B=EFABCD,怎么写啊,我编写的实在算不对,不知哪里出问题了!

076923*3=230769

可以用两种方法:
1、笔算:把上式看成:ABCDEF*F=EFABCD,然后令F等于0、1、2、3.....9,然后通过上算式的关系依次推出直至结果出来!
2、编程序算:可以用turbo.c 2.0编写c语言程序,用FOR循环做,这需要一定的编程能力。

结果如上,LZ可以验证一下。

㈡ c语言字母与数字之间的 转换很迷茫。

#include<stdio.h>
void main()
{
char t,f;
int i,n;
printf("f:\n");
scanf("%c",&f);
getchar(); //需要一个getchar()把'回车'去掉
int a=f;
printf("t:\n");
scanf("%c",&t);
int b=t;
if(a>b)
{
n=b;
b=a;
t=n;
}
for(i=a;i<=b;i++)
{
if(i>=97&&i<=122)
{
printf("%c ",i);
}
}
}

㈢ 猜字谜:SEND+MORE=MONEY,求S、E、N、D、M、O、R、Y。

参考答案:9567+1085=10652)*/ S=9、E=5、N=6、D=7、M=1、O=0、R=8、Y=2
/*n[1] = s;n[2] = e;n[3] = n;n[4] = d;n[5] = m;n[6] = o;n[7] = r;n[8] = y;*/
void main()
{
int n[9];
for(n[1] = 0; n[1] < 10; n[1]++)
for(n[2] = 0; n[2] < 10; n[2]++)
for(n[3] = 0; n[3] < 10; n[3]++)
for(n[4] = 0; n[4] < 10; n[4]++)
for(n[5] = 0; n[5] < 10; n[5]++)
for(n[6] = 0; n[6] < 10; n[6]++)
for(n[7] = 0; n[7] < 10; n[7]++)
for(n[8] = 0; n[8] < 10; n[8]++)
{
if(((n[1] + n[5])* 1000 + (n[2] + n[6]) * 100 + (n[3] + n[7]) * 10 + n[4] + n[2]) == (n[5] * 10000 + n[6] * 1000 + n[3] * 100 + n[2] * 10 + n[8]))
{
printf("s:%d\te:%d\tn:%d\td:%d\tm:%d\to:%d\tr:%d\ty:%d\t%d%d%d%d + %d%d%d%d = %d%d%d%d%d\n",n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8],n[1],n[2], n[3], n[4],n[5], n[6], n[7], n[2], n[5], n[6], n[3], n[2], n[8]);
}
}
getch();
}

㈣ 怎么用C语言控制16*16的LED显示汉字数字,汉字比如“欢迎光临”,数字比如“520”; 谢谢高手指点迷津!

踩个脚印,回去看看
======================================
汇编的代码给你,相关的注释也写了,设计自己弄一下吧

SER EQU P1.0 ; TPIC6B595 第3脚
OE EQU P1.1;TPIC6B595 第8脚
RCK EQU P1.2;TPIC6B595 第12脚
MR EQU P1.3;TPIC6B595 第9脚
SRCLK EQU P1.4;TPIC6B595 第13脚
ORG 0000H
LJMP MAIN
ORG 0100H
;**************************主程序**********************************
MAIN: MOV SP,#70H
SETB OE
MOV 2BH,#00H
MOV 27H,#00H
START: ;初始化寄存器RAM单元
MOV R0, #30H
MOV R1,#64H ;30H~6FH单元清零
MOV A, #00H
ST: MOV @R0,A
INC R0
DJNZ R1,ST
;2Dh------寻址偏址 ;整屏四个字一起显示
LOOP:MOV DPTR,#TAB;赋查表初值
MOV R3,#56
PLAY: MOV 2DH,#00H
MOV 2FH,#10H
GG: LCALL LINE16;扫描显示一次
MOV 2DH,#00H
DJNZ 2FH,GG
MOV A,DPL
CLR C
ADD A, #16
MOV DPL ,A
MOV A, DPH
ADDC A ,#00H
MOV DPH, A
DJNZ R3,PLAY
SJMP START
LINE16: MOV 2BH,#16;扫16行,2BH放后还剩几行
FF: LCALL LINE1;扫描显示一行子程序
DJNZ 2BH,FF;扫描行直到16行扫完再转
RET
LINE1:LCALL MSTR;将显示的内容移入内存单元
LCALL SEND;发送串口子程序
LCALL XH;选通行子程序
RET
MSTR: ;显示内容移入内存单元
MOV R0,#30H
MOV R4,#9
MOV A,2DH;
BB: MOVC A,@A+DPTR
MOV @R0,A
INC R0
MOV A,2DH
ADD A,#16;加16移到下一行
MOV 2DH,A
DJNZ R4,BB
MOV A,2DH
SUBB A,#143
MOV 2DH,A
RET
;$$$$$$$$$$$$$$$$$$$$$$$$$$$发送数据到串口子程序$$$$$$$$$$$$$$$$$$$$$$$$$
SEND:MOV R0,#30H
MOV R5,#8 ;一行有8个字节,如每次显示字数不同要作相应改动
SETB OE
SETB MR
CLR SRCLK
CLR RCK
SETB P1.6
SETB P1.7

LQ: CLR C
MOV R2,#8
MOV A,@R0
; CPL A ;TPIC6B595应该不用这一步
LCALL DD1;调用显示一个字节的子程序
INC R0;指向下一个显示单元
DJNZ R5,LQ
RET
DD1: CLR SRCLK;清串行CP端
RLC A;
MOV SER,C
SETB SRCLK ;触发串行CP端
DJNZ R2,DD1;每个字节移8次够了向下执行
RET
;选通行子程序
XH: CLR RCK ;将输出CP变成低电平为上升沿做准备
NOP
SETB RCK
CLR P1.6
;CLR P1.7
MOV A,27H
MOV P0,A
CLR OE
LCALL DE25MS
INC A
SETB OE
SETB P1.6
MOV A,27H
ANL A,#0F0H
SWAP A
ADD A,#01H
SWAP A
MOV 27H,A
CLR MR
SETB MR
RET
DE25MS: MOV R5,#09H
DEL2: MOV R6,#0FH
DEL3: MOV R7,#01H
DJNZ R7,$
DJNZ R6,DEL3
DJNZ R5,DEL2
RET
TAB:
字库
END

两点说明:
1. 上述程序可以整屏四个字一起显示,要是要显示你说的那么些字,还得作半屏控制,实现汉字滚动,太麻烦,一时半会儿出不来。

2.
TAB:
字库
END
上面的字库根据你要显示的字,自己弄一下吧,给你个例子:
显示“欢迎光临”的话,字库为:
TAB: ;欢
DB 00H,20H,3CH,10H
DB 44H,08H,84H,04H
DB 04H,03H,04H,03H
DB 84H,04H,44H,08H
DB 3CH,10H,00H,20H
DB 00H,00H,07H,20H
DB 04H,10H,0F4H,0FH
DB 04H,10H,1CH,20H

;迎
DB 00H,00H,49H,20H
DB 6AH,10H,0DCH,0FH
DB 08H,10H,00H,20H
DB 0FEH,27H,02H,22H
DB 02H,21H,81H,20H
DB 00H,20H,02H,20H
DB 0FEH,2FH,02H,22H
DB 02H,22H,0FEH,21H

;光
DB 00H,00H,00H,20H
DB 22H,20H,24H,20H
DB 28H,10H,30H,08H
DB 0E0H,07H,3FH,00H
DB 20H,00H,0F0H,3FH
DB 28H,20H,24H,20H
DB 22H,20H,20H,20H
DB 00H,38H,00H,00H

;临
DB 00H,00H,0F0H,03H
DB 00H,00H,00H,00H
DB 0FFH,3FH,00H,00H
DB 40H,00H,20H,3FH
DB 10H,21H,0FH,21H
DB 14H,21H,24H,3FH
DB 44H,21H,04H,21H
DB 04H,21H,04H,3FH
DB 00H,00H,00H,00H

END ;程序结束

㈤ c语言迷宫问题,以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。

说一下我的想法吧
1 把初始点放入一个队列
2 出队列->获取该点的上下左右坐标,并且是有意义的坐标(不超出边界,不是障碍)
3 将 2 获取的点 判断是不是终点 是结束 不是继续
4 将 2 获取的点 加入队列 重复 234步骤

有些细节可以需要注意,可能你要排除重复的点不加入该队列 不然会造成上下点死循环

㈥ 一条文字数字谜!!!高分

已知条件:
ABCDEF*F=EFABCD,
隐含条件:
F不等于0、1,最可能是2、3
则将2、3代入,根据已知条件试算,
(1)若F=2,则推导出:D=4、B=1;根据已知条件,由于2×4+(1或0)不可能等于1,等式不成立;排除。

(2)若F=3,则推导出:D=9,且A不可能大于3;
若A=0;根据已知条件,则E=1或2,
当E=1时C=3,C与F均为3,排除;
当E=2时C=6,B=7;此时等式076923×3=230769成立。

其它若F>3,试一试都不对。

然后令F等于0、1、2、3.....9,然后通过上算式的关系依次推出直至结果出来!

㈦ c语言中%u的使用不太明白,对运行后输出一大串的数字感到迷惑不解

负数在内存中存储的格式是补码,-3的补码是 0XFFFFFFFFC,所以输出了4294967292

㈧ c语言数字迷宫问题怎么做图片如下

可以参考八皇后问题用回溯的方式来解决。

这道迷宫题,观察一下,与某个格子相邻的格子至多为4个,也就是有4种可能的前进方向,需要穷举所有可能。在穷举下一种可能前,需要恢复初始状态(即回溯)。写了一个简单的代码,还有很多需要优化的地方,但关键是能用^_^,你可以调试一下,把实现的思路写出来,就可以顺利完成这道题了。

#include <stdio.h>

#include <string.h>


/***


1、 迷宫大小n*n,扩展为(n+2)*(n+2),外围一圈的格子作为不可再前进的边界。

2、 若所有相邻格子均已访问,表明此路不通,回溯。

3、 计数器达到总步数,检查是否位于终点及中间路径是否合法,通过则显示。

4、 查找函数Lookup()以递归方式反复调用自身,a->b->c->...,以查找某条可能的路径。

...c,b,a等返回前,均回溯,逐步恢复tag。

离开a时,tag已经恢复到初始状态,如此就不影响查找其他路径了。

5、 若迷宫够大或数据特别,都可能存在不同的路线

6、 先查看main(),了解基本步骤及初始化过程

***/


const int N = 6;


// eg1. N = 6

int row[N] = { 0, 4, 3, 1, 3, 0}; // 4 + 3 + 1 + 3 = 11

int col[N] = { 0, 1, 4, 3, 3, 0};


// eg2. N = 6

//int row[N] = { 0, 3, 4, 4, 2, 0}; // 3 + 4 + 4 + 2 = 13

//int col[N] = { 0, 3, 2, 4, 4, 0};


// eg3. N = 8

//int row[N] = { 0, 3, 1, 4, 3, 3, 1, 0};

//int col[N] = { 0, 1, 1, 5, 3, 1, 4, 0};


// 计数器

// Lookup()用g_counter与COUNTER比较是否走到了规定的步数

int g_counter = 0; // 无论是否成功,每查找一条路径后自动恢复为0

int COUNTER = 0; // 总步数,等于row(或col)数组各元素之和,在main()中初始化


// Lookup()用tag记录行走状况

// 在main()中初始化

// 每查找一条路径后自动恢复为初始状态

struct _tag

{

int row[N];

int col[N];

int arr[N][N]; // 走过,按顺序标记

} tag;


// 显示迷宫

// inside为false时,打印扩展的迷宫

// inside为true时,打印未扩展的迷宫

void Display(bool inside)

{

int i, j;


for (i = 0; i < N; i++)

{

if ((i == 0 || i == N-1) && inside)

continue;


for (j = 0; j < N; j++)

{

if ((j == 0 || j == N-1) && inside)

printf("%4s", " ");

else

printf("%4d", tag.arr[i][j]);

}

printf(" ");

}

printf(" ");

}


// 检查路径是否符合已给条件

bool Check()

{

bool b = true;

int sum_row, sum_col;


for (int i = 1; i < N-1; i++)

{

sum_row = 0;

sum_col = 0;

for (int j = 1; j < N-1; j++)

{

sum_row += tag.arr[i][j] > 0 ? 1 : 0;

sum_col += tag.arr[j][i] > 0 ? 1 : 0;

}


if (sum_row != row[i] || sum_col != col[i])

{

b = false;

break;

}

}


return b;

}


// 递归查找路径,返回前擦除痕迹,恢复现场

// 当前访问的格子(i,j),i:行坐标,j:列坐标

void Lookup(int i, int j)

{

g_counter++; // 总步数加1

tag.arr[i][j] = g_counter; // visited

tag.row[i]--; // 行计数减1

tag.col[j]--; // 列计数减1


// 走完了

if (g_counter >= COUNTER)

{

// 位于终点,且路径合法

if (i == N-2 && j == N-2 && Check())

{

Display(true);

}


// 此格子已判别,恢复现场,以查找其他路径(此即回溯的思想)

tag.arr[i][j] = 0;

tag.row[i]++;

tag.col[j]++;

g_counter--;


return;

}



// 行方向

if (tag.row[i] > 0)

{

if (!tag.arr[i][j+1])

{

Lookup(i, j+1); // 从当前格子向右走一步

}


if (!tag.arr[i][j-1])

{

Lookup(i, j-1); // 从当前格子向左走一步

}

}


// 列方向

if (tag.col[j] > 0)

{

if (!tag.arr[i+1][j])

{

Lookup(i+1, j); // 从当前格子向下走一步

}


if (!tag.arr[i-1][j])

{

Lookup(i-1, j); // 从当前格子向上走一步

}


}


// 此格子已判别,恢复现场,以查找其他路径(此即回溯的思想)

tag.arr[i][j] = 0;

tag.row[i]++;

tag.col[j]++;

g_counter--;

}


int main()

{

// 格子初始化为全0

memset(tag.arr, 0, sizeof(tag.arr));


for (int i = 0; i < N; i++)

{

tag.row[i] = row[i];

tag.col[i] = col[i];

COUNTER += row[i];


tag.arr[0][i] = 1;

tag.arr[N-1][i] = 1;

tag.arr[i][0] = 1;

tag.arr[i][N-1] = 1;

}

printf("初始化: ");

Display(false);


printf("合法路径: ");

Lookup(1, 1); // 从格子(1, 1)出发


//getchar();

return 0;

}

㈨ 数字谜,谁告诉我

1 4 2 8 5 7
× 3
———————
4 2 8 5 7 1
A是1
B是4
C是2
D是8
E是5
F是7

㈩ c语言编程 ——数字迷

#include<stdio.h>
intmain()
{
intT,R,e,n,i,g,v,q,Q,C,E,G,I,N,V;
inta,b,c;

#include<stdio.h>
intmain()
{
intT,R,e,n,i,g,v,q,Q,C,E,G,I,N,V;
inta,b,c;

for(i=4;i<=9;i=i+5){
for(v=8;v<=9;v++){
for(e=1;e<=9;e=e+2){
for(n=0;n<=9;n++){
for(g=0;g<=9;g++){
for(c=1;c<=9;c++){
for(q=0;q<=9;q++){
a=v*10000+i*1000+n*100+g*10+1;
b=(c*1000+i*100+n*10+q)*2;
c=100000+e*1000+n*100+10+e;
if((a+b)==c){
printf("%d:%d",C,c);
printf("%d:%d",E,e);
printf("%d:%d",G,g);
printf("%d:%d",I,i);
printf("%d:%d",N,n);
printf("%d:%d",Q,q);
printf("R:0 ");
printf("T:1 ");
printf("%d:%d",V,v);}}}}}}}}

return 0;
}