admin 管理员组

文章数量: 1087858


2024年12月23日发(作者:xml文件怎么打开成excel 格式)

#include

#include

#define MaxSize 50

#define FALSE 0

#define TRUE 1

typedef int BOOL;

typedef int T;

typedef struct stack{

int Top,MaxStack;

T Elements[MaxSize];

}Stack;

/*

typedef struct stacksixteen{

int Top,MaxStack;

char Elements[MaxSize];

}Stacksixteen;

*/

void CreateStack(Stack *s,int maxsize)

{

s->Top=-1;

s->MaxStack=maxsize;

}

BOOL IsEmpty(Stack s)

{

return <0;

}

BOOL IsFull(Stack s)

{

return >=ck-1;

}

void Push(Stack *s,T x)

{

if(IsFull(*s))

printf("数据过长,无法显示");

else

s->Elements[++s->Top]=x;

}

void getTopsixteen(Stack *s,char *X)

{

if(IsEmpty(*s))

printf("无数据");

}

void Pushsixteen(Stack *s,char x)//十六进制压栈

{

if(IsFull(*s))

printf("数据过长,无法显示");

else

s->Elements[++s->Top]=x;

}

void Pop(Stack * s)

{

if(IsEmpty(*s))

printf("无数据");

else

s->Top--;

}

void PrintStack(Stack s)

{

while(>=0)

{

printf("%d",ts[]);

--;

}

}

void PrintStacksixteen(Stack s)

{

while(>=0)

{

switch(ts[])

{

case 10 : printf("A"); break;

case 11 : printf("B"); break;

case 12 : printf("C"); break;

case 13 : printf("D"); break;

case 14 : printf("E"); break;

case 15 : printf("F"); break;

default : printf("%d",ts[]);break;

}

--;

}

}

else

* X=s->Elements[s->Top];

s->Top--;

{

if((*X>='0'&&*X<='9')||*X=='A'||*X=='B'||*X=='C'||*X=='D'||*X=='E'||*X=='F')

{

switch(*X)

{

case '0': *X=0; break;

case '1': *X=1; break;

case '2': *X=2; break;

case '3': *X=3; break;

case '4': *X=4; break;

case '5': *X=5; break;

case '6': *X=6; break;

case '7': *X=7; break;

case '8': *X=8; break;

case '9': *X=9; break;

case 'A': *X=10; break;

case 'B': *X=11; break;

case 'C': *X=12; break;

case 'D': *X=13; break;

case 'E': *X=14; break;

case 'F': *X=15; break;

default : break;

}

}

else

{

printf("你输入非法数据,请重新输入n");

printf("按任意键继续");

return FALSE;

}

return TRUE;

}

char Checkchar(char *p)

{

char a;

printf("str1检查中=%sn",p);/////

if(strcmp("000",p)==0)

a='0';

if(strcmp("100",p)==0)

a='1';

if(strcmp("010",p)==0)

a='2';

if(strcmp("110",p)==0)

a='3';

if(strcmp("001",p)==0)

a='4';

}

/*

char Checkchar(char str1[3])

{

char c;

int i;

printf("str1检查中=%sn",str1);/////

for(i=0;i<=2;i++)

{

if(str1[i]>='0'&&str1[i]<='1')

{

if(str1[0]=='0'&&str1[0]=='0'&&str1[2]=='0')

c='0';

if(str1[0]=='1'&&str1[1]=='0'&&str1[2]=='0')

c='1';

if(str1[0]=='0'&&str1[1]=='1'&&str1[2]=='0')

c='2';

if(str1[0]=='1'&&str1[1]=='1'&&str1[2]=='0')

c='3';

if(str1[0]=='0'&&str1[1]=='0'&&str1[2]=='1')

c='4';

if(str1[0]=='1'&&str1[1]=='0'&&str1[2]=='1')

c='5';

if(str1[0]=='0'&&str1[1]=='1'&&str1[2]=='1')

c='6';

if(str1[0]=='1'&&str1[1]=='1'&&str1[2]=='1')

c='7';

}

else

{

printf("你输入非法数据,请重新输入n");

break;

}

}

//if(str1[])

return c;

}

*/

void ten_to_two()

{

/*unsigned short a,b,c=0x8000,i;

if(strcmp("101",p)==0)

a='5';

if(strcmp("011",p)==0)

a='6';

if(strcmp("111",p)==0)

a='7';

return a;

scanf("%hd",&a);

for(i=1;i<=16;i++)

{

b=a&c?1:0;

printf("%d",b);

c>>=1;

}*/

unsigned short num;

T iZ=0,iy=0;

BOOL flag=FALSE;

Stack s;

CreateStack(&s,MaxSize);

printf("请输入一个十进制的整数:");

scanf("%hd",&num);

do

{

iZ=num/2;

iy=num%2;

Push(&s,iy);

num=iZ;

if(iZ!=0)

{

flag=TRUE;

}

else

{

flag=FALSE;

}

}while(flag);

printf("转换后的二进制数");

PrintStack(s);

printf("Bn");

}

void ten_to_eight()

{

unsigned short num;

T iZ=0,iy=0;

BOOL flag=FALSE;

Stack s1;

CreateStack(&s1,MaxSize);

printf("请输入一个十进制的整数:");

scanf("%hd",&num);

do

{

iZ=num/8;

iy=num%8;

Push(&s1,iy);

num=iZ;

if(iZ!=0)

{

flag=TRUE;

}

else

{

flag=FALSE;

}

}while(flag);

printf("转换后的八进制数");

PrintStack(s1);

printf("On");

}

void ten_to_sixteen()

{

unsigned short num;

T iZ=0,iy=0;

BOOL flag=FALSE;

Stack s2;

CreateStack(&s2,MaxSize);

printf("请输入一个十进制的整数:");

scanf("%hd",&num);

do

{

iZ=num/16;

iy=num%16;

Push(&s2,iy);

num=iZ;

if(iZ!=0)

{

flag=TRUE;

}

else

{

flag=FALSE;

}

}while(flag);

printf("转换后的十六进制数");

PrintStacksixteen(s2);

printf("Hn");

printf("按任意键继续");

}

void sixteen_to_ten()

{

int i,j,len,tennum=0,tenshuLst=0,tenshu=0,temp=1;

char str[100];

BOOL flagCheck;

Stack s3;

char x;

CreateStack(&s3,MaxSize);

printf("请输入一个十六进制的整数:");

getchar();

gets(str);//因为十六进制数可能带字符,所以用字符串接收

len=strlen(str);

// printf("str=%sn",str);///////

//printf("len=%dn",len);///////

for(i=0;i<=len-1;i++)

{

//printf("str[%d]=%cn",i,str[i]);///////

Pushsixteen(&s3,str[i]);// 挨个把数据圧栈

}

for(i=0;i<=len-1;i++)

{

getTopsixteen(&s3,&x);

// printf("x-出栈后=%dn",x);/////

flagCheck=Checknum(&x);

//printf("x-检查后=%dn",x);/////

if(flagCheck==FALSE)

{

return;

}

if(i==0)

{

tenshuLst+=x;

//printf("末位=%dn",tenshuLst);////

}

else

{

for(j=1;j<=i;j++)

{

temp*=16;

//printf("新十值=%dn",temp);////

}

tenshu+=x*temp;

// printf("十值=%dn",tenshu);/////

}

}

tennum=tenshuLst+tenshu;

printf("转换后的十进制数为");

printf("%d",tennum);

printf("Dn");

printf("按任意键继续");

}

void two_to_eight()

{

int i,j=0,k,t,len;

char a,b,c,str[100];

char str1[3]={'0','0','0'};//清空str1

Stack s4,s5;

CreateStack(&s4,MaxSize);

CreateStack(&s5,MaxSize);

printf("请输入一个二进制的整数:");

getchar();

gets(str);

len=strlen(str);

printf("str=%sn",str);///////

printf("len_str=%dn",len);///////

i=len/3;

j=len%3;

printf("i=%d,j=%dn",i,j);///////

for(k=0;k<=len-1;k++)

{

//printf("str[%d]=%cn",k,str[k]);///////

Pushsixteen(&s4,str[k]);

}

if(j!=0)

{

if(j==1)

{

str1[0]=str[len-i*3-1];

str1[1]='0';

str1[2]='0';

}

if(j==2)

{

str1[0]=str[len-i*3-1];

str1[1]=str[len-i*3-2];

str1[2]='0';

}

str1[3]='0';///////////////////////

printf("检查前str1=%sn",str1);///////

c=Checkchar(str1);

printf("c==%cn",c);/////

}

else

{

//不做任何事

}

//if(len>=3)

for(k=0;k<=i-1;k++)

{

for(t=0;t<=3-1;t++)

{

getTopsixteen(&s4,&a);

printf("a=出栈后=%cn",a);/////

str1[t]=a;

printf("检查前str1[%d]=%cn",t,str1[t]);///////

}

str1[3]='0';///////////////////////

printf("str1检查前=%sn",str1);/////

b=Checkchar(str1);//检验应转换的字符

printf("b=检查后=%cn",b);/////

Pushsixteen(&s5,b);

}

if(j!=0)

{

Pushsixteen(&s5,c);

}

printf("转换后的八进制数");

while(>=0)

{

printf("%c",ts[]);

--;

}

printf("On");

printf("按任意键继续");

}

int main()

{

int GongN=0,flagXH=0;

BOOL flagTc=FALSE;

char Isgo_on;

do

{

printf("请输入您想选择的功能序号");

printf("-=-----------------------------------n");

printf("-=-----1 十进制转二进制--------------n");

printf("-=-----2 十进制转八进制--------------n");

printf("-=-----3 十进制转十六进制------------n");

printf("-=-----4 十六进制转十进制------------n");

printf("-=-----5 二进制转八进制--------------n");

printf("-=-----6 退出------------------------n");

printf("-=-----------------------------------n");

GongN=0;

printf("请输入您想选择的功能序号(1~6)");

scanf("%d",&GongN);

switch(GongN)

{

case 1: ten_to_two(); break;

case 2: ten_to_eight(); break;

case 3: ten_to_sixteen(); break;

case 4: sixteen_to_ten(); break;

case 5: two_to_eight(); break;

case 6: flagTc=TRUE; break;

default : break;

}

if(flagTc)

{

break;

}

getchar();

printf("请问是否继续输入运算?y/nn");

scanf("%c",&Isgo_on);

if(Isgo_on=='y'||Isgo_on=='Y')

{

flagXH=0;

}

else if(Isgo_on=='n'||Isgo_on=='N')

flagXH=1;

system("cls");//清屏!!

getchar();

}while(flagXH==0);

return 0;

}


本文标签: 输入 字符 转换 数据 继续