我需要提取出奇数并给出输出,但是当我执行代码时,它给出了相反的想法。 例如1234 = 13,但是我的代码给了我31
int digit, num;
while (num > 0)
{
digit = num % 10;
if(digit % 2 != 0)
{
printf("%d" , digit);
}
num /= 10;
}
答案 0 :(得分:4)
这是因为您首先要在以下语句中打印除法运算的余数:
digit = num % 10;
您必须将其存储在数组中,并且在完成所有除法运算后仅打印它。
答案 1 :(得分:1)
您首先要打印单位。因此,您需要存储数据,或使用递归方法,以便最后打印出最后一个数字:
#include <stdio.h>
void podd(int num)
{
if (num > 0)
{
int digit = num % 10;
if (digit % 2)
{
printf("%d" , digit);
}
podd(num / 10);
}
}
int main()
{
podd(1234);
printf("\n");
return 0;
}
(此处描述的经典int到字符串转换问题的变体:Convert integer to string without access to libraries)
答案 2 :(得分:0)
很明显,它将输出31。
Coz,
while循环中的第一次迭代=>
num是1234
digit = num % 10;
数字= 1234%10(4)
if(digit % 2 != 0)
{
printf("%d" , digit);
}
4将不会打印coz 4 % 2 != 0
将返回false。
num /= 10;
num = 1234/10(现在是123)
while循环中的第二次迭代=>
num是123
digit = num % 10;
数字= 123%10(3)
if(digit % 2 != 0)
{
printf("%d" , digit);
}
3将被打印,因为4 % 2 != 0
将返回true。
num /= 10;
num = 123/10(num现在是12)
所以……我们得到了第一个数字3。
因此,如果您在下一个while循环迭代中继续执行此过程(称为debug),则会找到最终输出... 31。
答案 3 :(得分:0)
直接回答如下:
int num = 1234, digit = 0;
do {
digit = num % 10; // Assigns the extracted digit to a variable named digit (ex: 4).
if (digit % 2 != 0) // Applies the formula to get the odd number.
printf("%d\n", digit); // Prints the odd number.
num /= 10; // Extracts one digit each time (ex: 1234 / 10 = 123).
} while (num > 0); // Has reached the end of the number 'num'.
结果:
3
1