代码如下
int check_num(char a)//验证可用
{
int i = 0;
for ( i = 0; i < 9; i++)
{
if(a == '0'+i)
{
return i;
}
}
return -1;
}
int main(int argc, char const *argv[])
{
int a[10] = {0};
char b[28] ;
printf("请输入你要转换的字符串:\n");
scanf("%s",b);
int n = strlen(b);
int i = 0;
for ( i = 0; i < n; i++)
{
a[i] = check_num(b[i]);
}
printf("转换后的数组是:\n");
int sum = 0;
for ( i = 0; i < n; i++)
{
sum =sum + a[i]*pow(10,n-1-i);
}
printf("%d\n",sum);
return 0;
}
运行结果如下
写的时候遇到的一点问题
char b[] =”“;如果你之后要用scanf给里面写数据,最好别这么写,只有malloc这玩意才有动态内存一说,定义一个char b[]这玩意是在栈区,这样写它不会扩大你这数组的空间,只会溢出。sizeof读到的也还是1(字符串里面的哪个\0)
正确写法是定义一个大一点的数组,用strlen就能知道存进去的数组大小了
或者向这样,用动态数组
他也不会报错
还有一个问题就是linux端跑c语言,再用math函数的时候后面要加 -lm链接那个库