📅  最后修改于: 2023-12-03 15:17:19.125000             🧑  作者: Mango
本程序用于检查给定的数字是否为阿姆斯壮数字。阿姆斯壮数字是一个 n 位数,它的每个数字的 n 次幂之和等于它本身。
例如,153 是一个阿姆斯壮数字,因为 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153。
程序接受一个整数作为输入,并返回一个布尔值表示输入数字是否为阿姆斯壮数字。如果是阿姆斯壮数字,则返回 true,否则返回 false。
程序接受一个整数作为输入。输入数字可以是任意整数。
程序返回一个布尔值,表示输入数字是否为阿姆斯壮数字。如果是阿姆斯壮数字,则返回 true,否则返回 false。
%{
#include <stdlib.h>
#include <stdbool.h>
%}
%%
{DIGIT}+ { if (isArmstrong(yytext)) return true; }
\n {}
. {}
%%
int isArmstrong(char* number) {
int length = strlen(number);
int sum = 0;
for (int i = 0; i < length; i++) {
int digit = number[i] - '0';
sum += pow(digit, length);
}
return sum == atoi(number);
}
int main() {
char number[100];
printf("请输入一个整数:");
fgets(number, sizeof(number), stdin);
if (isArmstrong(number)) {
printf("是阿姆斯壮数字\n");
} else {
printf("不是阿姆斯壮数字\n");
}
return 0;
}
这是一个使用 Lex 编写的程序,用于检查给定的数字是否为阿姆斯壮数字。程序通过逐个计算每个数字的 n 次幂之和,并与输入的整数进行比较,判断是否为阿姆斯壮数字。如果是,则输出 "是阿姆斯壮数字",否则输出 "不是阿姆斯壮数字"。
请注意,上述示例代码中使用了 C 语言来实现阿姆斯壮数字的检查逻辑和输入输出功能。您可以根据需要将 Lex 生成的代码与您的项目整合使用。