【发布时间】:2017-06-29 17:33:48
【问题描述】:
所以我有这个代码是逐个字符地获取用户输入(不使用字符数组),应该发生的是每 7 个字母对应一个字母,7 个字母中的每个字母是 1 或 0,取决于该字母的 ascii 值是偶数还是奇数(0s 偶数,1s 奇数)。
例如:"GCJLLBI" = "1100001",转换为十进制 = 97,即 'a' 的 ascii 码。
因此,如果用户输入“GCJLLBI”,则程序需要将其转换为二进制,然后再转换为十进制,然后使用 %c 和十进制值打印。
不得使用数组 I我试图只用原语,没有抽象数据类型或数组来做到这一点。
这是我目前得到的代码:
/** given a binary number, convert to decimal. */
int binToDec(int binary)
{
int decimal = 0, i = 1, remainder;
/* Iterate until number becomes zero */
while (binary != 0)
{
remainder = binary % 10;
decimal = decimal + remainder * i;
i = i * 2;
binary = binary / 10;
}
return decimal;
}
/* Decodes text.*/
int decode(void) {
char ch;
printf("? ");
discardToEOL(); /*Discards any newlines from previous. */
/*Get Input */
do {
scanf("%c", &ch);
if (ch >= 0 && ch <= 128 && ch != 10) {
//Send each char to get converted
//to binary and then convert binary to ddecimal,
//then display as char.
}
} while(ch != '\n');
printf("\n");
}
所以我真正需要帮助但不明白的是,如果用户输入了 21 个字符,这些字符是逐字符输入的,而不是数组,我该如何将它们解析成组7,然后根据它们的偶数或奇数将它们转换为二进制?
【问题讨论】:
-
类似
int b = 0; for (i=0; i<7; i++) { int ch = fgetchar(); b = b*2 + (ch&1); }
标签: c