📄 a1.txt
字号:
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int i,j,k,flag,number,status;
/*status which is use to judge the string is keywords or not!*/
char ch;
char words[10] = {" "};
char program[1000];
int Scan(char program[])
{
char *keywords[37] = {"auto","bool","break","case","char","_Complex",
"const","continue","default","restrict","do","double","else","enum","extern",
"float","for","goto","if","_Imaginary","inline","int","long","register",
"return","short","signed","sizeof","static","struct","switch","typedef",
"union","unsigned","void","volatile","while"};
number = 0;
status = 0;
j = 0;
ch = program[i++];
/* To handle the lettle space ands tab*/
/*handle letters*/
if (((ch >= 'a') && (ch <= 'z' ))||((ch >= 'A') && (ch <= 'Z' )))
{
while (((ch >= 'a') && (ch <= 'z' ))||((ch >= 'A') && (ch <= 'Z' )))
{
words[j++]=ch;
ch=program[i++];
}
i--;
words[j++] = '\0';
for (k = 0; k < 13; k++)
if (strcmp (words,keywords[k]) == 0)
switch(k)
{
case 0:{
flag = 1;
status = 1;
break;
}
case 1:{
flag = 2;
status = 1;
break;
}
case 2:{
flag = 3;
status = 1;
break;
}
case 3:{
flag = 4;
status = 1;
break;
}
case 4:{
flag = 5;
status = 1;
break;
}
case 5:{
flag = 6;
status = 1;
break;
}
case 6:{
flag = 7;
status = 1;
break;
}
case 7:{
flag = 8;
status = 1;
break;
}
case 8:{
flag = 9;
status = 1;
break;
}
case 9:{
flag = 10;
status = 1;
break;
}
case 10:{
flag = 11;
status = 1;
break;
}
case 11:{
flag = 12;
status = 1;
break;
}
case 12:{
flag = 13;
status = 1;
break;
}
case 13:{
flag = 14;
status = 1;
break;
}
case 14:{
flag = 15;
status = 1;
break;
}
case 15:{
flag = 16;
status = 1;
break;
}
case 16:{
flag = 17;
status = 1;
break;
}
case 17:{
flag = 18;
status = 1;
break;
}
case 18:{
flag = 19;
status = 1;
break;
}
case 19:{
flag = 20;
status = 1;
break;
}
case 20:{
flag = 21;
status = 1;
break;
}
case 21:{
flag = 22;
status = 1;
break;
}
case 22:{
flag = 23;
status = 1;
break;
}
case 23:{
flag = 24;
status = 1;
break;
}
case 24:{
flag = 25;
status = 1;
break;
}
case 25:{
flag = 26;
status = 1;
break;
}
case 26:{
flag = 27;
status = 1;
break;
}
case 27:{
flag = 28;
status = 1;
break;
}
case 28:{
flag = 29;
status = 1;
break;
}
case 29:{
flag = 30;
status = 1;
break;
}
case 30:{
flag = 31;
status = 1;
break;
}
case 31:{
flag = 32;
status = 1;
break;
}
case 32:{
flag = 33;
status = 1;
break;
}
case 33:{
flag = 34;
status = 1;
break;
}
case 34:{
flag = 35;
status = 1;
break;
}
case 35:{
flag = 36;
status = 1;
break;
}
case 36:{
flag = 37;
status = 1;
break;
}
}
if (status == 0)
{
flag = 100;
}
}
/*handle digits*/
else if ((ch >= '0') && (ch <= '9'))
{
number = 0;
while ((ch >= '0' ) && (ch <= '9' ))
{
number = number*10+(ch-'0');
ch = program[i++];
}
flag = 200;
i--;
}
/*opereation and edge handle*/
/*else if (((words[0]>= 'a') && (words[0] <= 'z' ))||((words[0] >= 'A') && (words[0] <= 'Z' )))
{
while (((ch >= 'a') && (ch <= 'z' ))||((ch >= 'A') && (ch <= 'Z' ))||((ch >= '0') && (ch <= '9'))||(ch='_'))
{
//words[j++]=ch;
ch=program[i++];
}
flag=300;
}*/
else switch (ch)
{
case '=':{
if (ch == '=')
words[j++] = ch;
words[j] = '\0';
ch = program[i++];
if (ch == '=')
{
words[j++] = ch;
words[j] = '\0';
flag = 401;
}
else
{
i--;
flag = 402;
}
break;
}
case'>':{
if (ch == '>')
words[j++] = ch;
words[j] = '\0';
ch = program[i++];
if (ch == '=')
{
words[j++] = ch;
words[j] = '\0';
flag = 403;
}
else
{
i--;
flag = 404;
}
break;
}
case'<':{
if (ch == '<')
words[j++] = ch;
words[j] = '\0';
ch = program[i++];
if (ch == '=')
{
words[j++] = ch;
words[j] = '\0';
flag = 405;
}
else
{
i--;
flag = 406;
}
break;
}
case'!':{
if (ch == '!')
words[j++] = ch;
words[j] = '\0';
ch = program[i++];
if (ch == '=')
{
words[j++] = ch;
words[j] = '\0';
flag = 407;
}
else
{
i--;
flag = 408;
}
break;
}
case'+':{
if (ch == '+')
words[j++] = ch;
words[j] = '\0';
ch = program[i++];
if (ch == '=')
{
words[j++] = ch;
words[j] = '\0';
flag = 409;
}
else if (ch == '+')
{
words[j++] = ch;
words[j] = '\0';
flag = 410;
}
else
{
i--;
flag = 411;
}
break;
}
case'-':{
if (ch == '-')
words[j++] = ch;
words[j] = '\0';
ch = program[i++];
if (ch == '=')
{
words[j++] = ch;
words[j] = '\0';
flag = 412;
}
else if( ch == '-')
{
words[j++] = ch;
words[j] = '\0';
flag = 413;
}
else
{
i--;
flag = 414;
}
break;
}
case'*':{
if (ch == '*')
words[j++] = ch;
words[j] = '\0';
ch = program[i++];
if (ch == '=')
{
words[j++] = ch;
words[j] = '\0';
flag = 415;
}
else
{
i--;
flag = 416;
}
break;
}
case'/':{
if (ch == '/')
words[j++] = ch;
words[j] = '\0';
ch = program[i++];
if (ch == '=')
{
words[j++] = ch;
words[j] = '\0';
flag = 417;
}
else
{
i--;
flag = 418;
}
break;
}
case';':{
words[j] = ch;
words[j+1] = '\0';
flag = 501;
break;
}
case'(':{
words[j] = ch;
words[j+1] = '\0';
flag = 502;
break;
}
case')':{
words[j] = ch;
words[j+1] = '\0';
flag = 503;
break;
}
case'[':{
words[j] = ch;
words[j+1] = '\0';
flag = 504;
break;
}
case']':{
words[j] = ch;
words[j+1] = '\0';
flag = 505;
break;
}
case'{':{
words[j] = ch;
words[j+1] = '\0';
flag = 506;
break;
}
case'}':{
words[j] = ch;
words[j+1] = '\0';
flag = 507;
break;
}
case':':{
words[j] = ch;
words[j+1] = '\0';
flag = 508;
break;
}
case'"':{
words[j] = ch;
words[j+1] = '\0';
flag = 509;
break;
}
case'%':{
if (ch == '%')
words[j++] = ch;
words[j] = '\0';
ch = program[i++];
if (ch == '=')
{
words[j++] = ch;
words[j] = '\0';
flag = 510;
}
else
{
i--;
flag = 511;
}
break;
}
case',':{
words[j] = ch;
words[j+1] = '\0';
flag = 512;
break;
}
case'#':{
words[j] = ch;
words[j+1] = '\0';
flag = 513;
break;
}/*
case''':{
words[j] = ch;
words[j+1] = '\0';
flag = 514;
break;
}*/
case'|':{
words[j] = ch;
words[j+1] = '\0';
flag = 515;
break;
}
/*case'\':{
words[j] = ch;
words[j+1] = '\0';
flag = 516;
break;
}*/
case'@':{
words[j] = '#';
flag = 0;
break;
}
default:{
flag = -1;
break;
}
}
return flag;
}
void main()
{
i=0;
cout<<"please input a program end with @"<<endl;
do
{
ch = getchar();
program[i++] = ch;
}while(ch != '@');
i = 0;
do{
flag = Scan(program);
if ((flag>=1)&&(flag<=13))
{
cout<<"保留字"<<endl;
}
else if ((flag>=401)&&(flag<=418))
{
cout<<"运算符"<<endl;
}
else if ((flag>=501)&&(flag<=516))
{
cout<<"分隔符"<<endl;
}
else if (flag == 200)
{
cout<<"常数"<<endl;
}
/*else if (flag == 300)
{
cout<<"标识符"<<endl;
}*/
else if (flag ==100)
{
cout<<"标识符"<<endl;
}
else if (flag == -1)
{
cout<<"";
}
}while (flag != 0);
system("pause");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -