程序中函數 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 }