想问一下这个程序中如何将运算得到的数值赋给一个新数组,我这样写显示输出为空,而且感觉数组表示得也不太合适😭
谢谢大家🙏
①、i!='\0',这里应该是 s[i]!='\0' 吧
②、if语句或者for循环语句,如果省略了大括号,会默认后面第一行代码,也就是第一个分号前的代码为执行语句,也就说你写的if语句后面的count++,是if语句大括号外的了,每次for循环都会执行的,和你写的if语句没关系了,所以大括号除了只有一行代码,希望不要省略,养成良好习惯
③、你a[10]数组你定义的是char类型,最后printf()打印得是%s,应该打印%c
#include <stdio.h>
#include <math.h>
int main() {
char a[10], s[10];
int i, j = 0, r = 0, count = 0;
gets(s);
for (i = 0; i < 10; i++) {
if (s[i] >= 'a' && s[i] <= 'f') {
a[j] = s[i];
j++;
continue;
}
if (s[i] >= 'A' && s[i] <= 'F') {
a[j] = s[i];
j++;
continue;
}
if (s[i] >= '0' && s[i] <= '9') {
a[j] = s[i];
j++;
continue;
}
}
count = j;
printf("筛选结果:%s\n", a); //输出十六进制的字符
for (i = 0; i < count; i++) {
j--;
int num;
if (a[i] >= 'a' && a[i] <= 'f') { //统一转为大写
a[i] -= 'a' - 'A';
}
if (a[i] >= 'A' && a[i] <= 'F') {//获取对应10进制数字
num = a[i] - 'A' + 10;
} else {
num = a[i] - '0';
}
r += num * pow(16, j);//转为获取十进制数值
}
printf("number:%d\n", r); //输出十进制
}