#include <stdio.h> #define N 4 int HexToDec(char *p); int main() { int x; char a[N+1]; scanf("%s",a); x=HexToDec(a); printf("%d",x); } int HexToDec(char *p) { int i[N+1]; p=&i; int j; int shu=0; int k=1; int m; for(j=0;i<(N+1);j++) { if(i[j]>='A') { m=i[j]-55; } else m=i[j]-48; shu=shu+m*k; k=k*16; } return shu; }哪里有问题
时间: 2024-03-23 17:42:31 浏览: 19
这段代码有几个问题:
1. 在HexToDec函数中,定义了一个int类型的数组i,但是没有对其进行初始化,所以数组中存储的值是随机的,可能会导致错误的计算结果。应该对数组进行初始化。
2. 在HexToDec函数中,将指向i数组的指针p赋值为&i,这样做没有任何意义,因为i数组的地址就是i数组的首地址,没有必要再用一个指针来指向它。
3. 在HexToDec函数中,for循环的判断条件应该是j<(N+1),而不是i<(N+1),因为i是一个数组,不能直接与数字比较大小。
4. 在HexToDec函数中,for循环中应该使用指针p访问数组中的元素,而不是使用i数组名来访问元素。
5. 在HexToDec函数中,m变量没有进行初始化,应该将其初始化为0。
6. 在main函数中,应该将char数组a的最后一位赋值为'\0',以表示字符串的结束符。
下面是修改后的代码:
```
#include <stdio.h>
#define N 4
int HexToDec(char *p);
int main() {
int x;
char a[N+1];
scanf("%s", a);
a[N] = '\0';
x = HexToDec(a);
printf("%d", x);
return 0;
}
int HexToDec(char *p) {
int i[N+1] = {0}; // 初始化数组
int j;
int shu = 0;
int k = 1;
int m = 0; // 初始化变量
for(j = 0; j < (N+1); j++) {
if(*(p+j) >= 'A') { // 使用指针p访问数组元素
m = *(p+j) - 55;
} else {
m = *(p+j) - 48;
}
shu = shu + m * k;
k = k * 16;
}
return shu;
}
```
相关推荐
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![application/pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![image/gif](https://img-home.csdnimg.cn/images/20210720083352.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)