#!/usr/local/bin/tcc -run #include #include #include void main(){ int m_iri, keta; double nisu; char motosu[50]; //無限ループ処理 while(1){ m_iri = 0; keta = 0; nisu = 0; for(int i = 0; i < 50; i++){ motosu[i] = '\0'; } printf("半角数字を入力してください\n"); scanf("%51[^\n]", &motosu); rewind(stdin); //文字が入っていないかチェック&整数に直す for(int i = 0; motosu[i] != '\0'; i++){ if(i == 50){ keta = 50; //桁が大きすぎたらループを抜ける nisu = -1; continue; }else if(isdigit(motosu[i]) == 0){ nisu = -1; m_iri = 1; //文字が入っていたらループを抜ける continue; }else if(m_iri != 1){ nisu *= 10; nisu += motosu[i] - '0'; } } if(nisu > 0){ while(nisu >= 1 && keta < 50){ //逆順に記録していく motosu[keta] = fmod(nisu, 2) + '0'; nisu = nisu / 2; nisu = floor(nisu); keta++; } if(keta < 50){ //保存されているものを表示 printf("2進数では"); for(; keta > 0; keta--){ printf("%c", motosu[keta-1]); } printf("です\n"); break; } } if(motosu[0] != '\0' && nisu == 0){ printf("2進数では0です\n"); break; } printf("エラー!"); if(m_iri == 1){ printf("文字が入っています\n"); }else if(keta >= 50){ printf("桁が大きすぎます\n"); }else{ printf("何か入力してください\n"); } } return; }