我的错误在哪里? (转换数基)
Where is my error? (Converting number bases)
我的程序读入一个数字并将其转换为另一个基数。它忽略所有白色 space.
我得到了错误的答案;但是,如果我删除第一个 while 循环,它就可以工作(不忽略白色 space)。这是我的基本转换代码:
while ((d = getchar()) == '\n' || d == ' ' || d == ' ') {
}
while (((d = getchar()) != EOF) && (d != '\n') && (d!= ' ') && (d!=' ')) {
if (a<=10) {
if ((d-'0')<0 || (d-'0')>=a) {
printf("Invalid number!\n");
return 0;
}
num = num*a + (d-'0');
printf("%d\n", num);
}
else {
if (d >= 48 && d<= 57) {
num = num*a + (d-'0');
printf("%d\n", num);
}
else if (d>=97 && d<a+87) {
num = num*a + (d-87);
printf("%d\n", num);
}
else if (d>=65 && d<a+55){
num = num*a + (d-55);
printf("%d\n", num);
}
else {
printf("Invalid number!\n");
return 0;
}
}
}
您吞掉了号码的第一个数字。使用 do
循环重复使用最后一次正确读取。
while ((d = getchar()) == '\n' || d == ' ' || d == ' ') {
}
if (d != EOF) do {
/* ... */
} while (((d = getchar()) != EOF) && (d != '\n') && (d!= ' ') && (d!=' '));
我的程序读入一个数字并将其转换为另一个基数。它忽略所有白色 space.
我得到了错误的答案;但是,如果我删除第一个 while 循环,它就可以工作(不忽略白色 space)。这是我的基本转换代码:
while ((d = getchar()) == '\n' || d == ' ' || d == ' ') {
}
while (((d = getchar()) != EOF) && (d != '\n') && (d!= ' ') && (d!=' ')) {
if (a<=10) {
if ((d-'0')<0 || (d-'0')>=a) {
printf("Invalid number!\n");
return 0;
}
num = num*a + (d-'0');
printf("%d\n", num);
}
else {
if (d >= 48 && d<= 57) {
num = num*a + (d-'0');
printf("%d\n", num);
}
else if (d>=97 && d<a+87) {
num = num*a + (d-87);
printf("%d\n", num);
}
else if (d>=65 && d<a+55){
num = num*a + (d-55);
printf("%d\n", num);
}
else {
printf("Invalid number!\n");
return 0;
}
}
}
您吞掉了号码的第一个数字。使用 do
循环重复使用最后一次正确读取。
while ((d = getchar()) == '\n' || d == ' ' || d == ' ') {
}
if (d != EOF) do {
/* ... */
} while (((d = getchar()) != EOF) && (d != '\n') && (d!= ' ') && (d!=' '));