① 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