Lex是一个生成词法分析器的计算机程序,由Mike Lesk和Eric Schmidt编写。 Lex读取指定词法分析器的输入流,并输出以C编程语言实现词法分析器的源代码。
说明:完美数,一个等于其适当除数之和的正整数,例如:6 = 1 + 2 + 3。
例子:
Input: 3
Output: 3 is not perfect number
Input: 6
Output: 6 is perfect number
执行:
/*Lex program to check perfect numbers*/
%
{
#include
void check(char*);
%
}
/*Rule Section*/
% %
[0 - 9]
+ check(yytext);
% % int main()
{
// the input stream pointer
extern FILE* yyin;
// open a file handle to a particular file
yyin = fopen("num", "r");
// The function that starts the analysis
yylex();
return 0;
}
void check(char* a)
{
int len = strlen(a), i, num = 0;
for (i = 0; i < len; i++)
num = num * 10 + (a[i] - '0');
int x = 0, temp = num;
for (i = 1; i < num; i++) {
if (num % i == 0)
x = x + i;
}
if (x == temp)
printf("%d is perfect number \n", num);
else
printf("%d is not perfect number \n", num);
}
输出:
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。