重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#include stdio.h
成都创新互联主营宝兴网站建设的网络公司,主营网站建设方案,成都app软件开发公司,宝兴h5微信平台小程序开发搭建,宝兴网站营销推广欢迎宝兴等地区企业咨询
#include stdlib.h
#include string.h
void check(int* Hui)//这个函数用来检测是否是5位数
{
int i;
int count=0;//计数变量
char lenth[10];
for(i=0;istrlen(itoa(*Hui,lenth,10));i++){
count++;
}//这里for循环可以换成count=strlen(itoa(*Hui,lenth,10))
printf("这是%d位数",count);
if(count==5){
puts("go on..");
}
else{
puts("your input is error!");
exit(0);
}
}
int main()
{
int* Huiwenshu=NULL; //也可以用int Huiwenshu[6];,推荐前一种
int Last_digit;//末位数字
int First_digit;//首位数字
int Thou_digit;//千位数字
int Ten_digit;//十位数字
Huiwenshu=(int*)malloc(sizeof(int*));//申请int*大小的连续空间
puts("请输入一个5位数:");
scanf("%d",*Huiwenshu);//获取5位数
check(Huiwenshu);//将5位数导入检查函数
/*将5位数分解,涉及"%"取余数的技巧*/
Last_digit=*Huiwenshu%10;//取末位
Ten_digit=((*Huiwenshu%100-(Last_digit))/10);//取十位
Thou_digit=((*Huiwenshu%10000-(*Huiwenshu%1000))/1000);//取千位
First_digit=((*Huiwenshu%100000-(*Huiwenshu%10000))/10000);//取首位
if(Last_digit==First_digit){ //判断回文数
if(Ten_digit==Thou_digit){
printf("%d是回文数!",*Huiwenshu);
}
else{
printf("%d不是回文数!",*Huiwenshu);
return 0;
}
}
else{
}
free(Huiwenshu);//释放内存
return 0;
}
代码里的注释很清晰,如果不懂再问噢。其实还有另一种方法,就是直接定义一个int型数组,然后通过取对应的位数进行比较,然后得出结果,不过这种方法通用性较低,但是也行。
这是C语言中的指令。
是无条件跳转到指定的标号位置开始执行程序。
这个指令用起来要慎重,它容易让你的程序变得可读性比较差,日后维护和调试都不方便。
但是有时用一下会显得十分方便。
曾经有建议可以使用大量的这样的语句来对程序惊醒反编译的加密。
ifstream infile("1.txt");
while(1)
if(infile.get()=='\n')/跳过第一行
break;
while(1)
{
//go on
}
/*goto 可以调到指定位置处执行新的程序,经常用来从多重循环内跳出来。
如下程序所示:
*/
#includestdio.h
#includestdlib.h
#includememory.h
int main()
{
int i,j;
int a[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i3;i++){
for(j=0;j3;j++){
if(a[i][j] == 6)
{
goto Find;
}
}
}
Find:
printf("%d %d\n",i,j);
getchar();
return 0;
}
欢迎采纳,如有不明白的,可以追问^_^
^_^
^_^
如果有电路原理图就更好分析了。。。
org 0000h
ajmp main ; ;上电自动转向主程序
org 0003h ;【外部中断0入口 】
ajmp start ; ;转向start 子程序
org 000bh ;【定时器T0中断入口】
ajmp time ; 转向time子程序
org 0030h ; ;主程序首地址
main: mov tmod,#1; 0000 0001 置T/C 1为【方式0】,计数 ;【置T/C 0为方式1,定时】
mov th0,#0b1h; ;送T/C 0定时初值
mov tl0,#0e0h
mov ie, #83h ; ;设置中断
setb tr0 ;【启动T0】
mov r3,#0
mov r4,#0
mov 30h,#0; ;显示秒表的个位LED数码管清零
mov 31h,#0; ;显示秒表的十位LED数码管清零
mov 32h,#0; ;显示选手号的LED数码管清零
disp: mov sp,5fh
mov a,#03h ; 0000 0011 ;对8155初始化,A口、B口输出,C口输入
mov dptr,#0ff20h ;【控制口的地址】
movx @dptr,a ;【写8155控制字】
loop: mov r5,#1 ; ;置字位码初值
mov r0,#30h ; ;置显示缓冲区指针初值
mov a,r5
loop1: mov dptr,#0ff21h ; ;字位码送8155 A口
movx @dptr,a ;把a的值送到A口
mov dptr,#0ff22h ;8155 B口
mov a,@r0
add a,#0eh ;【a=0FH 0eH=14=1+2+1+1+3+1+1+2+2 (跳过14个字节)】
movc a,@a+pc ; ;查字位码表
movx @dptr,a ; ;字形码送8155 B口 【(本指令占1个字节)】
acall dlay ; ;延时1MS 【(本指令占2个字节)】
inc r0 ; 【(本指令占1个字节)】
mov a,r5 ; 【(本指令占1个字节)】
jb acc.2,ld ; 【(本指令占3个字节)】
rl a ; 【(本指令占1个字节)】
mov r5,a ; 【(本指令占1个字节)】
ajmp loop1 ; 【(本指令占2个字节)】
ld: sjmp loop ; ;周而复始 ; 【(本指令占2个字节)】
table:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0c8h ; 共阳 字形码表
;【 0 1 2 3 4 5 6 7 8 9 0】
dlay: mov r7,#02h ; ;延时子程序,【大约延时2*255+2*2+2*2us=518us】
dl1: mov r6,#0ffh
dl2: djnz r6,dl2
djnz r7,dl1
ret ; ;【子程序返回】而非【中断返回】,两者不一样
time: mov th0,#0b1h ; ;重新装入计数初值
mov tl0,#0e0h
push psw ; ;保护现场
push acc
mov a,#0fh
orl p1,a ;【p1口低四位输出高电平】
mov a,p1 ;【读P1口】
anl a,#0fh ;【屏蔽高四位】
cjne a,#0,go_on ;【A低四位不为零就转移到go_on】
inc r3 ;
cjne r3,#25,back ;【r3不等于25就转移到back,即直接返回】
mov r3,#0 ;【如果r3等于25了,就把r3的值清零】
inc r4
mov a,r4
mov b,#10
div ab ;【r4除以10,以分离出个位和十位。个位(余数)放在b,十位(商)放在a】
mov 31h,a
mov 30h,b
cjne r4,#20,back ; 判断是否到20秒
cpl p1.7 ; ;到20秒红灯亮警告
mov 32h,#10
clr tr0 ; ;停止T/C 0计时
sjmp back
go_on: clr tr0
jnb acc.0,two ; ;判断是不是一号选手按键,若不是,转向二号
mov 32h,#01h ; ;LED显示1
sjmp back
two: jnb acc.1,three ; ;判断是不是二号选手按键,若不是,转向三号
mov 32h,#02h; ;LED显示2
sjmp back
three: jnb acc.2,four ; ;判断是不是三号选手按键,若不是,转向四号
mov 32h,#03h ; ;LED显示3
sjmp back
four: mov 32h,#04h ; ;LED显示4
back: pop acc
pop psw
reti ; ;中断返回
start: setb tr0
reti ; ;中断返回
end