選択肢番号3(10進数から2進数)具体的にはCode:Blocksで機能し、Visual C ++では試していませんが、私たちの学校ではDev-C ++を使用しているため、問題の原因を特定できません。私はそれが論理的かつ構文的に正しいことを意味します。
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define MAXDIGITS 100
void printmenu(void);
void getchoice(void);
void decitobinary(int str);
int main(void)
{
char choice;
printmenu();
getchoice();
system("cls");
while(1)
{
printf("\nAgain? y/n: ");
scanf("\n%c",&choice);
if(choice == 'y' || choice == 'Y')
{
system("cls");
main();
}
else if(choice == 'n' || choice == 'N')
exit(EXIT_SUCCESS);
else
{
printf("\a\nInvalid input.\n");
continue;
}
}
}
void printmenu(void)
{
printf("\n3 - Decimal -> Binary");
printf("\n19 - Exit Program\n");
}
void getchoice(void)
{
int choice;
char number[MAXDIGITS];
int digits;
printf("\nEnter choice: ");
scanf("\n%d",&choice);
switch(choice)
{
case 3:
{
system("cls");
printf("Enter number: ");
scanf("\n%d",&digits);
decitobinary(digits);
break;
}
case 19:
exit(EXIT_SUCCESS);
}
}
void decitobinary(int str)
{
int arraycntr = 0;
int number[arraycntr];
printf("\n%d in binary is: ",str);
while(str > 0)
{
number[arraycntr] = str % 2;
str /= 2;
++arraycntr;
}
for(arraycntr -= 1;arraycntr >= 0;arraycntr--)
{
printf("%d",number[arraycntr]);
}
printf("\n");
system("pause");
}