C语言编程问题:现有一个数组,要将数组中的几个数提出来做运算,要怎么修改?求过程!

2025-03-23 08:56:18
推荐回答(2个)
回答1:

你把类型搞错了。

你本意是0x01为字符串吧,但定义时候定义错了,变成整数了。

实际上,datatest[]你定义的是一维数组,数组中的元素的值,就是0x01, 0x04等。

看你的代码,应该定义成2维数组:

 {"0x01","0x02"...}这种形式。我猜得可对?

//修改你的代码,没考虑逻辑,没考虑计算结果是否正确。
#include 

const char datatest[][5]={
"0x01", "0x04", "0x28", "0x03", "0xE8", "0x03", "0xE8", "0x03", "0xE8", "0x01",
"0x09", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00",
"0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00",
"0x79", "0x0A", "0xC6", "0x69", "0x03", "0xE8", "0x01", "0xBF", "0xE7",
"0x00", "0x00", "0x00", "0x00", "0xC9", "0xE9", "0xFF"}; //输入的十六进制数组

int hex2dec(const char *hex)  //取出对应的十六进制转换成十进制,以便计算
{
    int i,t,s=0;
    for(i=0; hex[i]; i++)
    {
        if(hex[i]<='9')
            t=hex[i]-'0';
        else  t=hex[i]-'A'+10;
        s=s*16+t;
    }
    return s;
}
int main()
{
//例如要取出datatest中第三,四组数据进行运算,我原本是这么写的但是有错
    int a,b;
    float temp1=0, temp;
    a=hex2dec(datatest[3]);
    b=hex2dec(datatest[4]);
    temp=a*256+b/10;
    temp1=((float)( (int)( (temp+0.005)*100 ) ) )/100; // 运算结果保留两位小数
    printf("%f\n", temp1);
    return 0;
}

回答2:

错误:
1、a=hex2dec(char *datatest[3]); 需要改成a=hex2dec(&datatest[3]);

因为int hex2dec(char *hex)函数中形参为指针。

2、temp==((float)( (int)( (temp1+0.005)*100 ) ) )/100;这句话中”==“号是判断语句,而不是赋值语句,你是要进行赋值还是判断?