我怎样才能让这个函数odddigits
返回while
和for
循环在i
的每次迭代中计算出的变量odd
的每个值呢?
当我在main函数中编写循环时,这工作得很好,但是当我将循环抽象成另一个函数时,它似乎没有返回循环中的所有值,而是在所有迭代完成后只返回最后一个值。
#include <cs50.h>
#include <stdio.h>
#include <math.h>
int odddigits(long cardnum);
long odd;
int main(void) {
long n = get_long("Number: ");
printf("%i\n", odddigits(n));
}
int odddigits(long cardnum) {
for (int i = 1; i < 16; i += 2) {
long x = pow(10, i);
odd = cardnum % x;
while (odd >= 10) {
odd = odd / 10;
}
}
return odd;
}
3条答案
按热度按时间sczxawaw1#
假设在数字
123456789
中,数字1
为0,9
为8,并且您希望打印奇数数字:1.需要返回整数数组。
1.当你处理整数时,不要使用像pow这样的数学函数,它几乎不起作用
1.设置代码格式
wlp8pajw2#
正如其他评论者已经指出的那样,这有点复杂。以下是我的建议。注意:没有检查,没有平衡,你必须在投入生产前自己把它们全部加进去!
试试看:
但我警告过你:
剩下的,跟踪收集的数字量,错误处理等pp.,留给你。这是一个快速的黑客,可能有一个bug潜伏在某处。
另一个技巧,不管什么原因,很少教,是"滴"的方法:每个函数调用一个数字。
bf1o4zei3#
oddigits()
将执行每个for循环,并在所有循环完成后返回最后一个odd
值,该值由main函数打印。也许可以考虑一下
printf
的位置。