① c語言中,從鍵盤輸入一個十六進制無符號整數將該整數的第二個位元組,從低字到高位元組,清0後輸出怎麼編程
要求的程序代碼如下:
#include "stdio.h"
int main()
{ int a;
scanf("%x",&a);
printf("%x\n",0xffff00ff|a);
return 0;
}
② C語言如何以十六進制輸出短整型
#include <stdio.h>
#include <stdlib.h> //可以省略
int main()
{
short i;
scanf("%hd",&i); //加個h
i=(short) i; //可以省略
printf("%hx\n",i); //加個h
return 0; //可以省略
}
h是長度修飾符,作用是將整專型數修正為屬short型
③ 怎麼用java語句從鍵盤上輸入一個十六進制數
你輸入就是了,接收要按String接收、再Interget.parseInt( num, 16 )轉換一下——處理一下異常。
④ 匯編語言怎樣實現從鍵盤輸入一個十六進制數列印出其對應的十進制
assume cs:code
code segment
main proc near
Begin:
call Input
mov dl, 0ah
mov ah, 02h
int 21h
mov dl, 0dh
int 21h
call ToDec
mov dl, 0ah
int 21h
mov dl, 0dh
int 21h
jmp Begin
Exit:
mov ah, 4ch
int 21h
ret
main endp
Input proc near
mov dh, 00h;
mov bx, 0000h
Loop1:
cmp dh, 03h
jg Ret1;
mov ah, 07h
int 21h
cmp al, 1bh
je Exit
mov dl, al
mov ah, 02h
int 21h
sub al, 30h
cmp al, 0ah
jl Num
add al, 30h;
sub al, 61h
add al, 0ah;
cmp al, 10h
jl Let
jmp Ret1
Num:
cmp al, 00h
jl Ret1
jmp Bin
Let:
cmp al, 0ah
jl Ret1
jmp Bin
Bin:
mov cl, 04h
shl bx, cl
mov ah, 00h
add bx, ax
add dh, 01h
jmp Loop1;
Ret1:
ret
Input endp
ToDec proc near
mov cx, 10000d
mov ax, bx
mov dx, 0000h
div cx
call Output
mov cx, 1000d
mov ax, bx
mov dx, 0000h
div cx
call Output
mov cx, 100d
mov ax, bx
mov dx, 0000h
div cx
call Output
mov cx, 10d
mov ax, bx
mov dx, 0000h
div cx
call Output
mov ax, bx
call Output
Ret2:
ret
ToDec endp
Output proc near
mov bx, dx
add al, 30h
mov dl, al
mov ah, 02h
int 21h
Ret3:
ret
Output endp
code ends
end 運行效果
⑤ 如何用匯編語言編寫:從鍵盤上輸入一個十六進制數,將其轉換成一個十進制數顯示。
匯編是復雜的,可以下載或者Radasm編譯如下代碼,在linux平台 可以直接用gcc自帶的as匯編器進行編譯。
DATASEGMENT
DATA1DB?
DATA2DB2DUP(?)
DATA20DB2DUP(?)
DATA3DB'InputError,PleaseEnterAgain!','$'
DATAENDS
STACKSEGMENT
DB5DUP(?)
STACKENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACK
START:MOVAX,DATA
MOVDS,AX
MOVAX,STACK
MOVSS,AX
MOVBX,0
INPUT:MOVAH,01H
INT21H
CMPAL,51H;判斷輸入的字元是否為Q
JEEXIT
;如果是Q就退出
CMPAL,71H;判斷輸入的字元是否為q
JEEXIT
;如果是Q就退出
PUSHAX
;把從鍵盤輸入的字元的ASCII存到堆棧段
SUBAL,30H;判斷是否為數字
CMPAL,00H
JLINDI;如果不是就提示錯誤
CMPAL,09H;
MOVBL,AL;
JLEOUTPUT2;如果是數字就輸出
POPAX;把AL的值取出來
PUSHAX;
MOVBL,AL
SUBAL,41H;判斷是否為大寫字母A到F
CMPAL,00H
JLINDI
;如果不是就提示錯誤
CMPAL,06H
JLCHANGE
POPAX
PUSHAX
MOVBL,AL
SUBAL,61H;判斷是否為小寫字母a到f
CMPAL,00H
JLINDI;如果不是就提示錯誤
CMPAL,06H
JLCHANGE
POPAX
JMPINDI
CHANGE:MOVSI,0
MOVDI,0
MOVCL,4
MOVAL,BL
ANDAL,11011111B;統一換為大寫字母再轉換,如果是大寫字母就不變
SUBAL,31H
MOVBL,AL
ANDAL,0FH;與運算,取低位
MOV[DATA2+SI],AL;把個位數存到DATA2中
MOVAL,BL
SARAL,CL;算術右移,取高位
MOV[DATA20+DI],AL;把十位數存到DATA20中
OUTPUT1:MOVDL,48H;輸出十六進制符號H
MOVAH,02H
INT21H
MOVDL,3DH;輸出等號『=』
MOVAH,02H
INT21H
MOVDL,[DATA20+DI];輸出十位數
ADDDL,30H
MOVAH,02H
INT21H
MOVDL,[DATA2+SI];輸出個位數
ADDDL,30H
MOVAH,02H
INT21H
MOVDL,20H
MOVAH,02H
INT21H
JMPINPUT;跳到輸入數字
OUTPUT2:MOVDL,48H;輸出數字
MOVAH,02H
INT21H
MOVDL,3DH
MOVAH,02H
INT21H
MOVDL,BL
ADDDL,30H
MOVAH,02H
INT21H
MOVDL,20H
MOVAH,02H
INT21H
JMPINPUT
INDI:MOVDL,20H;提示子程序
MOVAH,02H
INT21H
MOVDX,OFFSETDATA3;顯示提示信息
MOVAH,09H
INT21H
JMPINPUT
EXIT:MOVAH,4CH
INT21H
CODEENDS
ENDSTART
⑥ C語言以十六進制輸入無符號短整型
可以再通過強制類型轉換為unsignedshort
⑦ 編程從鍵盤輸入一個2位的十六進制整型數據,將這個十六進制整型數轉換為二進制
/*這題非常簡單,你要學過數據結構就非常容易*/
/*我用個棧來幫你做*/
/*此棧數據項為整型,只定義初始化棧,入棧,出棧操作,輸出棧中元素操作*/
#include<iostream.h>
#define MaxSize 100
typedef struct {
int data[MaxSize];
int top;
}Stack;//順序棧,也可用鏈棧
void InitStack(Stack &S)//初始化棧
{
S.top=-1;
}
int push(Stack &S,int x)//入棧
{
if(S.top==MaxSize)
return 0; //棧滿
else{
S.top++;
S.data[S.top]=x;
return 1;
}
}
int pop(Stack &S,int &x)//出棧
{
if(S.top==-1)
return 0; //棧空
else{
x=S.data[S.top];
S.top--;
return 1;
}
}
void display(Stack &S)
{
int x;
while(S.top!=-1)
{
pop(S,x);
cout<<x<<' ';
}
cout<<endl;
}
//應用程序
void func(int n,int m)//n為十進制數,m為2,8,或16
{
Stack S;
InitStack(S);
while(n!=0)
{
push(S,n%m);
n=n/m;
}
display(S);
}
void main()//這用來測試func
{
int n=12,m=2;
func(n,m);
m=8;
func(n,m);
m=16;
func(n,m);
}
//已在vc2005中測試過,可用,至於16進制時怎麼輸出A,B,..,F,吃過飯我再來貼
⑧ c語言 從鍵盤輸入任意十六進制整數a,判斷其最高為是0或1,
#include<stdio.h>
void main()
{
int a;
scanf("%d",&a);
if((a& 0x8000)==0)
printf("%d is positive number\n",a);
else
printf("%d is negative number\n",a);
}
⑨ c語言 從鍵盤輸入字元型數字,比如「0.75」,怎麼把對應的7和5轉換成整形的數字
樓上程序可行,原理是 字元型是ACI碼形式,其中的0 用十六進製表示就是 0X30,1=0X31
那麼 轉化為數字就是用 字元直接減去 0x30,也就是『0』,
⑩ 從鍵盤輸入一個16進制數,轉換成十進制數然後輸出,匯編程序實現啊
我幫你寫,不懂的可以問我。
加了個錯誤提示信息,而且寫上注釋給你
DATA SEGMENT
DATA1 DB ?
DATA2 DB 2 DUP(?)
DATA20 DB 2 DUP(?)
DATA3 DB 'Input Error, Please Enter Again!','$'
DATA ENDS
STACK SEGMENT
DB 5 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA,SS:STACK
START:MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV BX,0
INPUT:MOV AH,01H
INT 21H
CMP AL,51H;判斷輸入的字元是否為Q
JE EXIT
;如果是Q就退出
CMP AL,71H;判斷輸入的字元是否為q
JE EXIT
;如果是Q就退出
PUSH AX
;把從鍵盤輸入的字元的ASCII存到堆棧段
SUB AL,30H ;判斷是否為數字
CMP AL,00H
JL INDI ;如果不是就提示錯誤
CMP AL,09H ;
MOV BL,AL ;
JLE OUTPUT2;如果是數字就輸出
POP AX ;把AL的值取出來
PUSH AX ;
MOV BL,AL
SUB AL,41H;判斷是否為大寫字母A到F
CMP AL,00H
JL INDI
;如果不是就提示錯誤
CMP AL,06H
JL CHANGE
POP AX
PUSH AX
MOV BL,AL
SUB AL,61H;判斷是否為小寫字母a到f
CMP AL,00H
JL INDI ;如果不是就提示錯誤
CMP AL,06H
JL CHANGE
POP AX
JMP INDI
CHANGE:MOV SI,0
MOV DI,0
MOV CL,4
MOV AL,BL
AND AL,11011111B;統一換為大寫字母再轉換,如果是大寫字母就不變
SUB AL,31H
MOV BL,AL
AND AL,0FH ;與運算,取低位
MOV [DATA2+SI],AL ;把個位數存到DATA2中
MOV AL,BL
SAR AL,CL ;算術右移,取高位
MOV[DATA20+DI],AL;把十位數存到DATA20中
OUTPUT1: MOV DL,48H;輸出十六進制符號H
MOV AH,02H
INT 21H
MOV DL,3DH ;輸出等號『=』
MOV AH,02H
INT 21H
MOV DL,[DATA20+DI];輸出十位數
ADD DL,30H
MOV AH,02H
INT 21H
MOV DL,[DATA2+SI];輸出個位數
ADD DL,30H
MOV AH,02H
INT 21H
MOV DL,20H
MOV AH,02H
INT 21H
JMP INPUT;跳到輸入數字
OUTPUT2: MOV DL,48H ;輸出數字
MOV AH,02H
INT 21H
MOV DL,3DH
MOV AH,02H
INT 21H
MOV DL,BL
ADD DL,30H
MOV AH,02H
INT 21H
MOV DL,20H
MOV AH,02H
INT 21H
JMP INPUT
INDI:MOV DL,20H ;提示子程序
MOV AH,02H
INT 21H
MOV DX,OFFSET DATA3 ;顯示提示信息
MOV AH,09H
INT 21H
JMP INPUT
EXIT:MOV AH,4CH
INT 21H
CODE ENDS
END START