【C语言】八进制转十进制

程序中函数 fun()的功能: 将一个由八进制数字字符组成的字符串转换为与其值相等的十进制整数。
规定输入的字符串最多只能包含5位八进制数字字符。 **输入格式要求:gets 提示信息:"输入一个八进制字符串(5位):" "错误:字符串太长\n\n" "错误:%c 不是一个八进制字符\n\n" **输出格式要求:"输入的八进制字符串为" "\n%s 转换成十进制整数为:%d\n" 程序运行示例如下: 输入一个八进制字符串(5位):234 输入的八进制字符串为234 234 转换成十进制整数为:156

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<math.h>
 4 int fun(char str[]);
 5 main()
 6 {
 7     char str[10];
 8     int i,flag=0;
 9     printf("输入一个八进制字符串(5位):");
10     gets(str);
11     if (strlen(str) > 5)
12         printf("错误:字符串太长\n\n");
13     else
14     {
15         for (i = 0; str[i]!='\0'; i++)
16         {
17             if (str[i] < '0' || str[i] > '7')
18             {
19                 printf("错误:%c 不是一个八进制字符\n\n", str[i]);
20                 flag=-1;
22             }
23         }
24         if(flag==0)
25         {
26             printf("输入的八进制字符串为%s", str);
27             printf("\n%s 转换成十进制整数为:%d\n", str, fun(str));
28         }
29         
30     }
31 
32 }
33 int fun(char str[])
34 {
35     int n = 0, i=0;
36     while (str[i]!='\0')
37     {
38         n += (str[strlen(str)-i-1]-48) * pow(8,i);  //这是一个字符,需要进行转换才是int型数字
39         i++;
40     }
41     return n;
42 }

 

 
 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdlib.h>
 4 int fun(char *p)
 5 {                        
 6     int n;
 7     n = *p - '0';
 8     p++;
 9     while (*p != 0)
10     {                        
11         n = n * 8 + *p - '0';
12         p++;
13     }
14     return n;
15 }                        
16 main()
17 {                        
18     char s[6];
19     int i;
20     int n;
21     printf("输入一个八进制字符串(5位):");
22     gets(s);
23     if (strlen(s) > 5)
24     {                        
25         printf("错误:字符串太长\n\n");
26         exit(0);
27     }
28     for (i = 0; s[i]; i++)
29     {                        
30         if (s[i] < '0' || s[i] > '7')
31         {                        
32             printf("错误:%c 不是一个八进制字符\n\n", s[i]);
33             exit(0);
34         }
35     }
36     printf("输入的八进制字符串为");
37     puts(s);
38     n = fun(s);
39     printf("\n%s 转换成十进制整数为:%d\n", s, n);
40 }                        

 


posted @ 2021-06-20 18:36  油菜园12号  阅读(3041)  评论(0编辑  收藏  举报