生活随笔
收集整理的這篇文章主要介紹了
实验7-3-6 字符串转换成十进制整数 (15分)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
十六進制字符包括0~9 和 a~f(在本道題中規定不分大小寫)
解題思路
循環輸入一字符串,當出現‘#’時退出輸入。設置兩個標志位,分別記錄第一個負號出現的位置和第一個十六進制出現的位置。(如果第一個十六進制字符之前出現大于一個“-”,同樣按照一個處理,當作負數)比較兩個位置的大小,判斷結果是否為負數。輸出結果
#include
<stdio.h>
#define N
1000
int main()
{char ch
;int len1
=0,len2
=0;char str1
[N
];char str2
[N
];int str3
[N
];int index1
,index2
;int cnt1
=0;int temp
=1;int sum
=0;
ch
=getchar();for(int i
=0;ch
!='\n';i
++){str1
[i
]=ch
;len1
++;ch
=getchar();}for(int j
=0;j
<len1
;j
++){if(str1
[j
]=='-'){index1
=j
;break;}}for(int k
=0;k
<len1
;k
++){if((str1
[k
]>='0'&&str1
[k
]<='9')||(str1
[k
]>='a'&&str1
[k
]<='f')||(str1
[k
]>='A'&&str1
[k
]<='F')){index2
=k
;break;}}for(int k
=0;k
<len1
;k
++){if((str1
[k
]>='0'&&str1
[k
]<='9')||(str1
[k
]>='a'&&str1
[k
]<='f')||(str1
[k
]>='A'&&str1
[k
]<='F')){str2
[cnt1
++]=str1
[k
];}}for(int i
=0;i
<cnt1
;i
++){if(str2
[i
]>='0'&&str2
[i
]<='9'){str3
[i
]=str2
[i
]-'0';}else if(str2
[i
]>='a'&&str2
[i
]<='f'){str3
[i
]=str2
[i
]-'a'+10;}else if(str2
[i
]>='A'&&str2
[i
]<='F'){str3
[i
]=str2
[i
]-'A'+10;}}for(int j
=cnt1
-1;j
>=0;j
--){sum
+=temp
*str3
[j
];temp
*=16;}if(index1
<index2
){printf("-%d\n",sum
);}else if(index1
>index2
){printf("%d\n",sum
);}return 0;
}
總結
以上是生活随笔為你收集整理的实验7-3-6 字符串转换成十进制整数 (15分)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。