⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 功能较全的表达式求值程序 C代码。mian是主函数
💻 CPP
字号:
#include "head.h"
void print(SElemType e)
{
	printf("%d",e);
}

void main()
{
	char choice;
	char string[50][MAX_STRING];
	double va[50];
	for(int i=0;i<50;i++)
		va[i]=INT_MAX;
	int count=-1;
	int count1=-1;
	PrintSkin();
   	char pw[MAX_PASSWORD]="123456";
 	for(i=0;i<40;i++)
		printf(" ");
	printf("  输入密码:");	
	if(strcmp(pw,getpassword( ))==0)
	{
		for(i=0;i<42;i++)
			printf(" ");
		printf("登陆成功!\n");
	}
	else
	{

		for(i=0;i<42;i++)
			printf(" ");
		printf("密码错误!\n");
		for(i=0;i<38;i++)
			printf(" ");
		getch();
		exit(0);
	}
	for(i=0;i<42;i++)
		printf(" ");
	printf("按任意键继续...");
	getch( );
	system("cls");
	PrintSkin( );
	for(i=0;i<35;i++)
		printf(" ");
	printf("---------------------------------\n");
    for(i=0;i<34;i++)
		printf(" ");
	printf("|  1.表达式求值; 	2.进制转换. |\n");
	for(i=0;i<35;i++)
		printf(" ");
    printf("---------------------------------\n");
	for(i=0;i<35;i++)
		printf(" ");
	cin>>choice;
	switch(choice)
	{
	case '1':{
		char instring[MAX_STRING];
		MakeHashTable( );
		PrintTitle( );
		printf(" NO.01:");
		for(i=0;i<21;i++)
			printf(" ");
		gets(instring);
		while(strlen(instring)!=0)
		{
			count++;
			strcpy(string[count],instring);	
			if(ProcessExpress(instring))
			{
				Translate( );
				va[count]=EvaluatePostfix();
				DispPostfix();getchar();
				system("cls");
				PrintSkin( );
				PrintTitle( );
				for(i=0;i<=count;i++)
				{
					printf(" NO.");
					if(i<9)
						printf("%d%d",0,i+1);
					else 
						printf("%d",i+1);
					printf(":");
					for(int j=0;j<21;j++)
						printf(" ");
					printf("%s",string[i]);
					for(j=0;j<int(54-strlen(string[i]));j++)
						printf(" ");
					if(va[i]==INT_MAX)
						printf("ERROR!!");
					else
						printf("%g",va[i]);
					printf("\n");
				}
			}
			printf(" NO.");
			if(count<8)
				printf("%d%d",0,count+2);
			else
				printf("%d",count+2);
			printf(":");
			for(i=0;i<21;i++)
				printf(" ");
			gets(instring);
		}
		printf("                                      --------谢谢使用!--------\n");
		for(i=0;i<38;i++)
			printf(" ");
		getch( );
			 }
		break;
	case '2':{
		unsigned p=0;
		int ii,m,n,nn;
		int pp[50],q[50];
		char str[50][81],s[50][81];
		printf("【编码】        【目标进制】         【原来进制】           【转换数】          【转换结果】\n");
	    for(ii=0;ii<50;ii++)
		{
			system("cls");
			PrintSkin( );
			printf("【编码】        【目标进制】         【原来进制】           【转换数】          【转换结果】\n");
			if(ii>0)
			{
				for(int mm=0;mm<ii;mm++)
				{
					printf(" NO.");
					if(mm<9)
						printf("%d%d",0,mm+1);
					else 
						printf("%d",mm+1);
					printf(":          ");
					printf("%d",pp[mm]);
					if(pp[mm]<10)
						printf("                    ");
					else
						printf("                   ");					
					printf("%d",q[mm]);
					if(q[mm]>9)
						printf("                     ");
					else
						printf("                      ");
					printf("%s",str[mm]);
					for(int j=0;j<20-(int)strlen(str[mm]);j++)
						printf(" ");
					printf("%s",s[mm]);
					printf("\n");
				}
			}
			printf(" NO.");
			if(ii<9)
				printf("%d%d",0,ii+1);
			else 
				printf("%d",ii+1);
			printf(":          ");
			scanf("%d",&m);	
			pp[ii]=m;
			system("cls");
			PrintSkin( );
			printf("【编码】        【目标进制】         【原来进制】           【转换数】          【转换结果】\n");
			if(ii>0)
			{
				for(int mm=0;mm<ii;mm++)
				{
					printf(" NO.");
					if(mm<9)
						printf("%d%d",0,mm+1);
					else 
						printf("%d",mm+1);
					printf(":          ");
					printf("%d",pp[mm]);
					if(pp[mm]<10)
						printf("                    ");
					else
						printf("                   ");					
					printf("%d",q[mm]);
					if(q[mm]>9)
						printf("                     ");
					else
						printf("                      ");
					printf("%s",str[mm]);
					for(int j=0;j<20-(int)strlen(str[mm]);j++)
						printf(" ");
					printf("%s",s[mm]);
					printf("\n");
				}
			}
			printf(" NO.");
			if(ii<9)
				printf("%d%d",0,ii+1);
			else 
				printf("%d",ii+1);
			printf(":          ");
			printf("%d",pp[ii]);
			if(pp[ii]<10)
				printf("                    ");
			else
				printf("                   ");
			scanf("%d",&n);
			q[ii]=n;
			if(pp[ii]==0||q[ii]==0)
			{
				printf("                                      --------谢谢使用!--------\n");
				for(i=0;i<38;i++)
					printf(" ");
				getch( );
				exit(0);
			}
			system("cls");
			PrintSkin( );
			printf("【编码】        【目标进制】         【原来进制】           【转换数】          【转换结果】\n");
            if(ii>0)
			{
				for(int mm=0;mm<ii;mm++)
				{
					printf(" NO.");
					if(mm<9)
						printf("%d%d",0,mm+1);
					else 
						printf("%d",mm+1);
					printf(":          ");
					printf("%d",pp[mm]);
					if(pp[mm]<10)
						printf("                    ");
					else
						printf("                   ");
					printf("%d",q[mm]);
					if(q[mm]>9)
						printf("                     ");
					else
						printf("                      ");
					printf("%s",str[mm]);
					for(int j=0;j<20-(int)strlen(str[mm]);j++)
						printf(" ");
					printf("%s",s[mm]);
					printf("\n");
				}
			}
			printf(" NO.");
			if(ii<9)
				printf("%d%d",0,ii+1);
			else 
				printf("%d",ii+1);
			printf(":          ");
			printf("%d",pp[ii]);
			if(pp[ii]<10)
				printf("                    ");
			else
				printf("                   ");			
			printf("%d",q[ii]);
			if(q[ii]>9)
				printf("                     ");
			else
				printf("                      ");			
			scanf("%s",str[ii]);
			system("cls");
			PrintSkin( );
			printf("【编码】        【目标进制】         【原来进制】           【转换数】          【转换结果】\n");
            if(ii>0)
			{
				for(int mm=0;mm<ii;mm++)
				{
					printf(" NO.");
					if(mm<9)
						printf("%d%d",0,mm+1);
					else 
						printf("%d",mm+1);
					printf(":          ");
					printf("%d",pp[mm]);
					if(pp[mm]<10)
						printf("                    ");
					else
						printf("                   ");
					printf("%d",q[mm]);
					if(q[mm]>9)
						printf("                     ");
					else
						printf("                      ");
					printf("%s",str[mm]);
					for(int j=0;j<20-(int)strlen(str[mm]);j++)
						printf(" ");
					printf("%s",s[mm]);
					printf("\n");
				}
			}
			printf(" NO.");
			if(ii<9)
				printf("%d%d",0,ii+1);
			else 
				printf("%d",ii+1);
			printf(":          ");
			printf("%d",pp[ii]);
			printf("                    ");
			printf("%d",q[ii]);
			if(q[ii]>9)
				printf("                     ");
			else
				printf("                      ");						
			printf("%s",str[ii]);
			for(int j=0;j<20-(int)strlen(str[ii]);j++)
				printf(" ");
			for(int k=strlen(str[ii])-1,l=0;k>=0;k--,l++)
			{
			switch(str[ii][l]){
			case '0':
				p=p;
				break;
			case '1':
				p=p+(int)pow(n,k);
				break;
			case '2':
				p=p+2*(int)pow(n,k);
				break;
			case '3':
				p=p+3*(int)pow(n,k);
				break;
			case '4':
				p=p+4*(int)pow(n,k);
				break;
			case '5':
				p=p+5*(int)pow(n,k);
				break;
			case '6':
				p=p+6*(int)pow(n,k);
				break;
			case '7':
				p=p+7*(int)pow(n,k);
				break;
			case '8':
				p=p+8*(int)pow(n,k);
				break;
			case '9':
				p=p+9*(int)pow(n,k);
				break;
			case 'A':
				p=p+10*(int)pow(n,k);
				break;
			case 'B':
				p=p+11*(int)pow(n,k);
				break;
			case 'C':
				p=p+12*(int)pow(n,k);
				break;
			case 'D':
				p=p+13*(int)pow(n,k);
				break;
			case 'E':
				p=p+14*(int)pow(n,k);
				break;
			case 'F':
				p=p+15*(int)pow(n,k);
				break;
			}
		}
		SqStack S;
		SElemType e;
		InitStack(S);
		while(p){
			Push(S,p%m);
			p=p/m;
		}		
		nn=-1;
		while(!StackEmpty(S)){
			nn++;
			Pop(S,e);
			if(e<=9)
			{
				print(e);
				s[ii][nn]=(char)'0'+e;
			}
			else
			{
				printf("%c",e-10+65);
				s[ii][nn]=(char)e+55;
			}
		}
		s[ii][++nn]='\0';		
		printf("\n");
		DestroyStack(S);	
			 }
			 }
		break;
		}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -