八进制转为10进制
本帖最后由 康小泡 于 2017-12-25 14:48 编辑#include<stdio.h>
#include<string.h>
int main() 这是一道八进制数转为10进制数的题,可是输出结果老是不对。求解
{ int pow(int j);
char str;
int count=0,a,b,c,sum=0; //count用来统计八进制数的位数
gets(str);
char *p=str;
count=strlen(str);
p=str;
count=count-1;
for(p=str;*p!='\0';p++,count--)
a=pow(count),sum=sum+(*p)*a;
puts(str);
}
int pow(int j) //传递指数值
{
int i,k=1; //j是指数
if(j==0)
k=1;
else
for(i=0;i<j;i++)
k=k*8;
return k;
}
for循环中 *p是一个字符,不是int,需要用 atoi 进行一下转换 BngThea 发表于 2017-12-25 08:55
for循环中 *p是一个字符,不是int,需要用 atoi 进行一下转换
p是字符型指针变量 它指向字符数组 应该不用再转化吧 谢melon 发表于 2017-12-25 09:49
p是字符型指针变量 它指向字符数组 应该不用再转化吧
你将一个字符 乘以一个 int 想得到什么 #include<stdio.h>
#include<string.h>
int main()
{
int pow(int j);
char str;
int count=0,a,b,c,sum=0; //count用来统计八进制数的位数
gets(str);
char *p=str;
count=strlen(str);
p=str;
count=count-1;
for(;*p!='\0';p++,count--)
{
a=pow(count);
printf("%d\n", *p); //你可以看一下每次*P输出的是什么。
sum=sum+(*p - '0')*a;//这里做一个字符的转换。
}
printf("%d\n", sum);//输出这个。
}
int pow(int j) //传递指数值
{
int i,k=1; //j是指数
if(j==0)
k=1;
else
for(i=0;i<j;i++)
k=k*8;
return k;
} 本帖最后由 谢melon 于 2017-12-26 14:52 编辑
谢谢 BngThea 发表于 2017-12-25 10:04
你将一个字符 乘以一个 int 想得到什么
谢谢 不过为什么用来atoi后程序老是终止
有用头文件stdlib.h 谢melon 发表于 2017-12-25 09:49
p是字符型指针变量 它指向字符数组 应该不用再转化吧
atoi似乎是只能对字符串进行转换 谢melon 发表于 2017-12-26 14:54
atoi似乎是只能对字符串进行转换
atoi函数的原型如下:
int atoi(const char *nptr);
表明形参是一个char指针,只要这个字符是数字即可,返回int
页:
[1]