【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 }                        
 
        

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM