一个关于c语言的数组问题

在一个函数中,输出了一个数组的每个数字,例如a[1]=1 a[2]=2 a[3]=3 那这个数组输出结果就是123,我想定义一个变量i,让i=123怎么弄呢、?大家帮帮我,谢谢啦

i=a[1]*100+a[2]*10+a[3]追问

我这里只想假设只有3个数字,那要是有多位呢

追答

#include"math.h"
for(j=0;j<n;j++)
i+=a[j]*pow(10,n-j-1);
//pow是指数函数,让它累加每一位乘以10的n-j次方就行,n是你想要的任意位数,j是当前数组里的位数,C里的数组都是从0开始的

追问

还是不能实现我的功能,我说下我的程序吧,我的程序是输入一个数字,转化为2进制,因为我用的是数组的方式,所以最后输出的2进制是数组中每一个元素组合起来的,我现在要让组合起来的这个数字赋值给i 你的这个方法可以先转化为字符串,然后判断出他的位数,但是太麻烦了,你有什么方便的方法吗

追答

没有,其实你干嘛非要付值到一个变量上面呢?为什么不直接使用数组来计算或者打印,变量的位数也不能太高,你不可能把太长的数放在一个变量上

追问

我需要对转化后的2进制代码进行处理

追答

或者你从一开始写转换函数的时候就直接付值到一个上面,如果是加减乘除运算的话直接用数组做是最好的

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-30
按照你的说法,那组合起来的这个数据也就有蛮大了。。你的整型变量可能要扛不住了。
比如将65536转成二进制:1111 1111 1111 1111这就有16位,如果要用一个整型变量来保存显然会越界,不过先不考虑这个问题。我还是按照你的要求写一下转换的方法:
假设要转换的数为:256
int a[8]={1,1,1,1,1,1,1,1};
int result=0,i;
for(i=0;i!=8;++i){
result*=10;
result+=a[i];
}
printf("%d",result);
第2个回答  2012-10-30
什么意思,没看懂-——! i=a[1]*100+a[2]*10+a[3]追问

a[1]=1 a[2]=2 a[3]=3,如果普通的输出只能单个的输出1 2 3,我想把这三个数字变成一个整体,即123,然后赋值给变量i

多位怎么办呢

追答

为什么没有啊a【0】

追问

额。。。我只是假设,a[0]当然有

相似回答