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

📄 hyc.c

📁 这是我的一个C语言程序
💻 C
字号:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int i,j,k,sign,number,flag;
char ch;
char words[10] = {" "};
char program[500];
int Scan(char program[])
{
    char *keywords[13]={"void","main","if","then","break","int",
                        "char","float","include","for","while","printf",
                        "scanf"};
    number=0;
    flag= 0;
    j=0;
    ch= program[i++];
    while((ch == ' ') || (ch == '') || (ch == '\t') || (ch == '\r'))
         ch = program[i++];
    if ((ch >= 'a') && (ch <= 'z' ))
       {
        while ((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:{ sign = 1; flag = 1;break;}
                 case 1:{ sign = 2;flag = 1;break;}
                 case 2:{ sign = 3;flag = 1;break;}
                 case 3:{ sign = 4;flag = 1;break;}
                 case 4:{ sign = 5;flag = 1;break;}
                 case 5:{ sign = 6;flag = 1;break;}
                 case 6:{ sign = 7;flag = 1;break;}
                 case 7:{ sign = 8;flag = 1;break;}
                 case 8:{ sign = 9;flag = 1;break;}
                 case 9:{ sign = 10;flag = 1;break;}
                 case 10:{sign = 11;flag = 1;break;}
                 case 11:{sign = 12;flag = 1;break;}
                 case 12:{sign = 13;flag = 1;break;}
}
   if (flag == 0)
   {
      sign = 100;
   }
}

else if ((ch >= '0') && (ch <= '9'))
{
number = 0;
while ((ch >= '0' ) && (ch <= '9' ))
{
number = number*10+(ch-'0');
ch     = program[i++];
}
sign = 200;
i--;
}

else switch (ch)
{
case '=':{
   if (ch == '=')
     words[j++] = ch;
     words[j]   = '\0';
     ch         = program[i++];
     if (ch == '=')
     {
    words[j++] = ch;
    words[j]   = '\0';
    sign       =301;
     }
     else
     {
    i--;
    sign       =301;
     }
   break;
 }
case'>':{
 if (ch == '>')
       words[j++] = ch;
       words[j]   = '\0';
       ch         = program[i++];
   if (ch == '=')
   {
       words[j++] = ch;
       words[j]   = '\0';
       sign       = 303;
   }
   else
   {
       i--;
       sign       = 304;
   }
  break;
}
case'<':{
     if (ch == '<')
        words[j++] = ch;
        words[j]   = '\0';
        ch         = program[i++];
        if (ch == '=')
{
    words[j++] = ch;
    words[j]   = '\0';
    sign       = 305;
}
        else
{
    i--;
    sign       = 306;
}
    break;
}
case'!':{
    if (ch == '!')
       words[j++] = ch;
       words[j]   = '\0';
       ch         = program[i++];
     if (ch == '=')
     {
       words[j++] = ch;
       words[j]   = '\0';
       sign       = 307;
     }
     else
     {
    i--;
       sign       = 308;
     }
    break;
}
case'+':{
   if (ch == '+')
      words[j++] = ch;
      words[j]   = '\0';
      ch         = program[i++];
     if (ch == '=')
     {
    words[j++] = ch;
    words[j]   = '\0';
    sign       = 309;
     }
     else if (ch == '+')
     {
    words[j++] = ch;
    words[j]   = '\0';
    sign       =310;
     }
     else
     {
i--;
sign       = 311;
     }
   break;
}
case'-':{
  if (ch == '-')
   words[j++] = ch;
   words[j]   = '\0';
   ch         = program[i++];
   if (ch == '=')
   {
words[j++] = ch;
words[j]   = '\0';
sign       = 312;
   }
   else if( ch == '-')
   {
words[j++] = ch;
words[j]   = '\0';
sign       = 313;
   }
   else
   {
    i--;
sign       = 314;
   }
   break;
}
case'*':{
  if (ch == '*')
      words[j++] = ch;
      words[j]   = '\0';
      ch         = program[i++];
      if (ch == '=')
      {
   words[j++] = ch;
   words[j]   = '\0';
   sign       = 315;
      }
     else
     {
   i--;
   sign       = 316;
     }
   break;
 }
case'/':{
 if (ch == '/')
       words[j++] = ch;
       words[j]   = '\0';
       ch         = program[i++];
       if (ch == '=')
       {
       words[j++] = ch;
       words[j]   = '\0';
       sign       = 317;
       }
       else
       {
       i--;
       sign       = 318;
       }
  break;
}
case';':{
  words[j]   = ch;
  words[j+1] = '\0';
  sign       = 401;
  break;
 }
case'(':{
  words[j]   = ch;
  words[j+1] = '\0';
  sign       = 402;
  break;
 }
case')':{
  words[j]   = ch;
  words[j+1] = '\0';
  sign       = 403;
  break;
}
case'[':{
  words[j]   = ch;
  words[j+1] = '\0';
  sign       = 404;
  break;
 }
case']':{
  words[j]   = ch;
  words[j+1] = '\0';
  sign       = 405;
  break;
 }
case'{':{
  words[j]   = ch;
  words[j+1] = '\0';
  sign       = 406;
  break;
 }
case'}':{
  words[j]   = ch;
  words[j+1] = '\0';
  sign       = 407;
  break;
 }
case':':{
  words[j]   = ch;
  words[j+1] = '\0';
  sign       = 408;
  break;
}
case'"':{
  words[j] = ch;
  words[j+1] = '\0';
  sign = 409;
  break;
}
case'%':{
   if (ch == '%')
       words[j++] = ch;
       words[j]   = '\0';
       ch         = program[i++];
       if (ch == '=')
       {
       words[j++] = ch;
       words[j]   = '\0';
       sign       =410;
       }
       else
       {
       i--;
       sign       =411;
       }
     break;
}
case',':{
 words[j] = ch;
 words[j+1] = '\0';
 sign = 412;
 break;
}
case'#':{
 words[j] = ch;
 words[j+1] = '\0';
 sign = 413;
 break;
}
case'@':{
 words[j] = '#';
 sign = 0;
 break;
}
default:{
 sign = -1;
 break;
}
}
return sign;
}



main()
{
i=0;
clrscr();
printf("please input a program end with @");
do
{
  ch           = getchar();
  program[i++] = ch;
}while(ch != '@');
 i = 0;
do{
  sign = Scan(program);
  if (sign == 200)
  {
printf("(%2d,%4d)",sign,number);
  }
  else if (sign == -1)
  {
printf("(%d,error)",sign);
  }
  else
  {
printf("(%2d,%4s)",sign,words);
  }
}while (sign != 0);
    system("pause");
}

⌨️ 快捷键说明

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