【发布时间】:2014-07-30 10:33:17
【问题描述】:
在下面的代码中,我试图计算给定 int 中不同奇数的数量。为此,我首先使用模数将整数分成个位数的整数,然后将所有奇数放入数组oddInts。这很好用,但是,数组似乎只在 if 语句中保存值。在 if 语句之外,数组似乎有一堆随机数。
我的问题是,如何修改 if 语句中的数组,以便之后可以操作该数组。
#include <stdio.h>
#include <math.h>
int lenHelper(unsigned x) {
if(x>=1000000000) return 10;
if(x>=100000000) return 9;
if(x>=10000000) return 8;
if(x>=1000000) return 7;
if(x>=100000) return 6;
if(x>=10000) return 5;
if(x>=1000) return 4;
if(x>=100) return 3;
if(x>=10) return 2;
return 1;
}
int main(int argc, const char * argv[])
{
int inputInt=987654;
int size=lenHelper(inputInt);
int input[size];
int count=0;
// int oddCount=0;
int oddInts[5];
for (int i=0; i<size; i++) {
input[i]=inputInt%10;
inputInt=inputInt/10;
if (input[i]%2==1) {
// oddCount=input[i];
oddInts[i]=input[i];
printf("%d", oddInts[i]);
}
}
return 0;
}
【问题讨论】:
-
lenHelper(987654)看起来会返回 6,那么为什么oddInts声明为仅包含 5 个值? -
您的意思是:
oddInts[ i/2 ] = input[i];? -
请使用调试器(并在编译器中启用所有警告和调试信息)
标签: c arrays if-statement modulus