codeup 1943进制转换
思路:用字符數組先保存輸入的數(小于30位),如果把數直接看成整數的話,每次就是除2取余,現就看成對每個位進行除2,最后取余,比如123的過程,123先對1除2,商為0,余數為1,在對2除2,由于上一位有余數1,所以變成12/2,商為6,余數為零,在對3除2,商為1,余數為1,結束一次循環,也就是此時“123”變為“061”,轉換為二進制的第一位數為1,在對“061”進行每位除2,依次往下
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main(){
?? ?char a[31];
?? ?
?? ?while(scanf("%s",&a)!=EOF){
?? ??? ?int output[120];
?? ??? ?int size=0;
?? ??? ?int length=strlen(a);
?? ??? ?while(1){
?? ??? ??? ?output[size++]=(a[length-1]-'0')%2;
?? ??? ??? ?int c=0;
?? ??? ??? ?for(int i=0;i<length;i++){
?? ??? ??? ??? ?int s;
?? ??? ??? ??? ?s=(a[i]-'0'+c*10)/2;
?? ??? ??? ??? ?c=(a[i]-'0'+c*10)%2;
?? ??? ??? ??? ?a[i]=s+'0';
?? ??? ??? ?}
?? ??? ??? ?int j=0;
?? ??? ??? ?for(j;j<length;j++){
?? ??? ??? ??? ?if(a[j]!='0')
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?if(j==length){
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ?}
?? ??? ?for(int i=size-1;i>=0;i--){
?? ??? ??? ?printf("%d",output[i]);
?? ??? ?}
?? ??? ?printf("\n");
?? ?}
?? ?return 0;
}?
總結
以上是生活随笔為你收集整理的codeup 1943进制转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字符数组的实际长度
- 下一篇: scanf不可以读空格不可以读strin