#include?stdio.h
成都創(chuàng)新互聯(lián)主營(yíng)寶興網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app軟件開發(fā)公司,寶興h5微信平臺(tái)小程序開發(fā)搭建,寶興網(wǎng)站營(yíng)銷推廣歡迎寶興等地區(qū)企業(yè)咨詢
#include?stdlib.h
#include?string.h
void?check(int*?Hui)//這個(gè)函數(shù)用來檢測(cè)是否是5位數(shù)
{
int?i;
int?count=0;//計(jì)數(shù)變量
char?lenth[10];
for(i=0;istrlen(itoa(*Hui,lenth,10));i++){
count++;
}//這里for循環(huán)可以換成count=strlen(itoa(*Hui,lenth,10))
printf("這是%d位數(shù)",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;//末位數(shù)字
int?First_digit;//首位數(shù)字
int?Thou_digit;//千位數(shù)字
int?Ten_digit;//十位數(shù)字
Huiwenshu=(int*)malloc(sizeof(int*));//申請(qǐng)int*大小的連續(xù)空間
puts("請(qǐng)輸入一個(gè)5位數(shù):");
scanf("%d",*Huiwenshu);//獲取5位數(shù)
check(Huiwenshu);//將5位數(shù)導(dǎo)入檢查函數(shù)
/*將5位數(shù)分解,涉及"%"取余數(shù)的技巧*/
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){ //判斷回文數(shù)
if(Ten_digit==Thou_digit){
printf("%d是回文數(shù)!",*Huiwenshu);
}
else{
printf("%d不是回文數(shù)!",*Huiwenshu);
return?0;
}
}
else{
}
free(Huiwenshu);//釋放內(nèi)存
return?0;
}
代碼里的注釋很清晰,如果不懂再問噢。其實(shí)還有另一種方法,就是直接定義一個(gè)int型數(shù)組,然后通過取對(duì)應(yīng)的位數(shù)進(jìn)行比較,然后得出結(jié)果,不過這種方法通用性較低,但是也行。
這是C語(yǔ)言中的指令。
是無條件跳轉(zhuǎn)到指定的標(biāo)號(hào)位置開始執(zhí)行程序。
這個(gè)指令用起來要慎重,它容易讓你的程序變得可讀性比較差,日后維護(hù)和調(diào)試都不方便。
但是有時(shí)用一下會(huì)顯得十分方便。
曾經(jīng)有建議可以使用大量的這樣的語(yǔ)句來對(duì)程序驚醒反編譯的加密。
ifstream infile("1.txt");
while(1)
if(infile.get()=='\n')/跳過第一行
break;
while(1)
{
//go on
}
/*goto?可以調(diào)到指定位置處執(zhí)行新的程序,經(jīng)常用來從多重循環(huán)內(nèi)跳出來。
如下程序所示:
*/
#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 ; ;上電自動(dòng)轉(zhuǎn)向主程序
org 0003h ;【外部中斷0入口 】
ajmp start ; ;轉(zhuǎn)向start 子程序
org 000bh ;【定時(shí)器T0中斷入口】
ajmp time ; 轉(zhuǎn)向time子程序
org 0030h ; ;主程序首地址
main: mov tmod,#1; 0000 0001 置T/C 1為【方式0】,計(jì)數(shù) ;【置T/C 0為方式1,定時(shí)】
mov th0,#0b1h; ;送T/C 0定時(shí)初值
mov tl0,#0e0h
mov ie, #83h ; ;設(shè)置中斷
setb tr0 ;【啟動(dòng)T0】
mov r3,#0
mov r4,#0
mov 30h,#0; ;顯示秒表的個(gè)位LED數(shù)碼管清零
mov 31h,#0; ;顯示秒表的十位LED數(shù)碼管清零
mov 32h,#0; ;顯示選手號(hào)的LED數(shù)碼管清零
disp: mov sp,5fh
mov a,#03h ; 0000 0011 ;對(duì)8155初始化,A口、B口輸出,C口輸入
mov dptr,#0ff20h ;【控制口的地址】
movx @dptr,a ;【寫8155控制字】
loop: mov r5,#1 ; ;置字位碼初值
mov r0,#30h ; ;置顯示緩沖區(qū)指針初值
mov a,r5
loop1: mov dptr,#0ff21h ; ;字位碼送8155 A口
movx @dptr,a ;把a(bǔ)的值送到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個(gè)字節(jié))】
movc a,@a+pc ; ;查字位碼表
movx @dptr,a ; ;字形碼送8155 B口 【(本指令占1個(gè)字節(jié))】
acall dlay ; ;延時(shí)1MS 【(本指令占2個(gè)字節(jié))】
inc r0 ; 【(本指令占1個(gè)字節(jié))】
mov a,r5 ; 【(本指令占1個(gè)字節(jié))】
jb acc.2,ld ; 【(本指令占3個(gè)字節(jié))】
rl a ; 【(本指令占1個(gè)字節(jié))】
mov r5,a ; 【(本指令占1個(gè)字節(jié))】
ajmp loop1 ; 【(本指令占2個(gè)字節(jié))】
ld: sjmp loop ; ;周而復(fù)始 ; 【(本指令占2個(gè)字節(jié))】
table:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0c8h ; 共陽(yáng) 字形碼表
;【 0 1 2 3 4 5 6 7 8 9 0】
dlay: mov r7,#02h ; ;延時(shí)子程序,【大約延時(shí)2*255+2*2+2*2us=518us】
dl1: mov r6,#0ffh
dl2: djnz r6,dl2
djnz r7,dl1
ret ; ;【子程序返回】而非【中斷返回】,兩者不一樣
time: mov th0,#0b1h ; ;重新裝入計(jì)數(shù)初值
mov tl0,#0e0h
push psw ; ;保護(hù)現(xiàn)場(chǎng)
push acc
mov a,#0fh
orl p1,a ;【p1口低四位輸出高電平】
mov a,p1 ;【讀P1口】
anl a,#0fh ;【屏蔽高四位】
cjne a,#0,go_on ;【A低四位不為零就轉(zhuǎn)移到go_on】
inc r3 ;
cjne r3,#25,back ;【r3不等于25就轉(zhuǎn)移到back,即直接返回】
mov r3,#0 ;【如果r3等于25了,就把r3的值清零】
inc r4
mov a,r4
mov b,#10
div ab ;【r4除以10,以分離出個(gè)位和十位。個(gè)位(余數(shù))放在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計(jì)時(shí)
sjmp back
go_on: clr tr0
jnb acc.0,two ; ;判斷是不是一號(hào)選手按鍵,若不是,轉(zhuǎn)向二號(hào)
mov 32h,#01h ; ;LED顯示1
sjmp back
two: jnb acc.1,three ; ;判斷是不是二號(hào)選手按鍵,若不是,轉(zhuǎn)向三號(hào)
mov 32h,#02h; ;LED顯示2
sjmp back
three: jnb acc.2,four ; ;判斷是不是三號(hào)選手按鍵,若不是,轉(zhuǎn)向四號(hào)
mov 32h,#03h ; ;LED顯示3
sjmp back
four: mov 32h,#04h ; ;LED顯示4
back: pop acc
pop psw
reti ; ;中斷返回
start: setb tr0
reti ; ;中斷返回
end