主题:为什么不对?
进制数
给出一个正整数n(1≤N≤1023),将其化为10位二进制数,然后计算出二进制数中的“1”的个数,若1的个数为奇数,则在最高位前加上一个1,否则加上一个0,最后将在此基础上形成的11位二进制数,用3个十六进制数输出。
例 如:输入 23 化为二进制数为: 0000010111
因为1的个数是4个,在最高位前加0,得到:00000010111
输出:0H,1H,7H
再例如:输入 453 化为二进制数为: 0111000101
因为1的个数是奇数,所以在最高位前加1,得到:10111000101
输出:5H,CH,5H
【输入格式】键盘输入。一个正整数n。
【输出格式】根据形成的11位二进制数,用3个十六进制数输出。
【样例】
输入: 输出
453 5H,CH,5H
我的程序:
CLS
INPUT n
IF n < 1 OR n > 1023 THEN PRINT "重输": END
DO
y = n MOD 2
n = n \ 2
x$ = LTRIM$(STR$(y)) + x$
LOOP UNTIL n = 0
IF LEN(x$) <> 10 THEN q$ = STRING$(10 - LEN(x$), "0"): x$ = q$ + x$
FOR i = 1 TO LEN(x$)
IF VAL(MID$(x$, i, 1)) = 1 THEN h = h + 1
NEXT i
IF h MOD 2 <> 0 THEN x$ = "1" + x$ ELSE x$ = "0" + x$
a$(1) = LEFT$(x$, 3): a$(2) = MID$(x$, 4, 4): a$(3) = RIGHT$(x$, 4)
FOR i = 1 TO 3
y$ = "": x$ = "": n$ = a$(i): GOSUB 20
PRINT x$; "H"
NEXT i
PRINT m$
END
20 FOR i = LEN(n$) TO 1 STEP -1
a = VAL(MID$(n$, LEN(n$) + 1 - i, 1))
x = x + a * 2 ^ (i - 1)
NEXT i
DO
y = x MOD 16
x = x \ 16
IF y > 9 THEN y$ = CHR$(55 + y) ELSE y$ = CHR$(48 + y)
x$ = y$ + x$
LOOP UNTIL x = 0
RETURN
为什么不对,请高手指点.
给出一个正整数n(1≤N≤1023),将其化为10位二进制数,然后计算出二进制数中的“1”的个数,若1的个数为奇数,则在最高位前加上一个1,否则加上一个0,最后将在此基础上形成的11位二进制数,用3个十六进制数输出。
例 如:输入 23 化为二进制数为: 0000010111
因为1的个数是4个,在最高位前加0,得到:00000010111
输出:0H,1H,7H
再例如:输入 453 化为二进制数为: 0111000101
因为1的个数是奇数,所以在最高位前加1,得到:10111000101
输出:5H,CH,5H
【输入格式】键盘输入。一个正整数n。
【输出格式】根据形成的11位二进制数,用3个十六进制数输出。
【样例】
输入: 输出
453 5H,CH,5H
我的程序:
CLS
INPUT n
IF n < 1 OR n > 1023 THEN PRINT "重输": END
DO
y = n MOD 2
n = n \ 2
x$ = LTRIM$(STR$(y)) + x$
LOOP UNTIL n = 0
IF LEN(x$) <> 10 THEN q$ = STRING$(10 - LEN(x$), "0"): x$ = q$ + x$
FOR i = 1 TO LEN(x$)
IF VAL(MID$(x$, i, 1)) = 1 THEN h = h + 1
NEXT i
IF h MOD 2 <> 0 THEN x$ = "1" + x$ ELSE x$ = "0" + x$
a$(1) = LEFT$(x$, 3): a$(2) = MID$(x$, 4, 4): a$(3) = RIGHT$(x$, 4)
FOR i = 1 TO 3
y$ = "": x$ = "": n$ = a$(i): GOSUB 20
PRINT x$; "H"
NEXT i
PRINT m$
END
20 FOR i = LEN(n$) TO 1 STEP -1
a = VAL(MID$(n$, LEN(n$) + 1 - i, 1))
x = x + a * 2 ^ (i - 1)
NEXT i
DO
y = x MOD 16
x = x \ 16
IF y > 9 THEN y$ = CHR$(55 + y) ELSE y$ = CHR$(48 + y)
x$ = y$ + x$
LOOP UNTIL x = 0
RETURN
为什么不对,请高手指点.