谢melon 发表于 2017-12-24 21:13:34

八进制转为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;
}

BngThea 发表于 2017-12-25 08:55:54

for循环中 *p是一个字符,不是int,需要用 atoi 进行一下转换

谢melon 发表于 2017-12-25 09:49:56

BngThea 发表于 2017-12-25 08:55
for循环中 *p是一个字符,不是int,需要用 atoi 进行一下转换

p是字符型指针变量 它指向字符数组 应该不用再转化吧

BngThea 发表于 2017-12-25 10:04:59

谢melon 发表于 2017-12-25 09:49
p是字符型指针变量 它指向字符数组 应该不用再转化吧

你将一个字符 乘以一个 int 想得到什么

3-3 发表于 2017-12-25 10:10:37

#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:50:03

本帖最后由 谢melon 于 2017-12-26 14:52 编辑

谢谢

谢melon 发表于 2017-12-26 14:50:47

BngThea 发表于 2017-12-25 10:04
你将一个字符 乘以一个 int 想得到什么

谢谢 不过为什么用来atoi后程序老是终止
有用头文件stdlib.h

谢melon 发表于 2017-12-26 14:54:48

谢melon 发表于 2017-12-25 09:49
p是字符型指针变量 它指向字符数组 应该不用再转化吧

atoi似乎是只能对字符串进行转换

BngThea 发表于 2017-12-26 15:06:06

谢melon 发表于 2017-12-26 14:54
atoi似乎是只能对字符串进行转换

atoi函数的原型如下:
int atoi(const char *nptr);
表明形参是一个char指针,只要这个字符是数字即可,返回int
页: [1]
查看完整版本: 八进制转为10进制