数字游戏
根据用户选择,完成以下功能
解一元二次方程;判断指定年份是否是闰年;判断某一数字是否是水仙花数
简单了解:
一元二次方程:
仅注意观察▲即可
闰年:
普通润年:能被 4 整除但不能被100 整除的年份
世纪润年:能被 400 整除的世纪年(即以 00 结尾的年份)
eg.1900可以被4整除(475),但不可以被400整除(4.75),所以他是世纪润年
水仙花数:
水仙花数也被称作自恋数、自幂数,它是指一个 n
位数(n≥3
),其各位数字的 n
次幂之和等于该数本身
水仙花数要求是三位数及以上的整数。因为对于一位数和两位数来说,很难满足各位数字的 n
次幂之和等于该数本身这一核心条件,从三位数开始才有符合该性质的数存在。例如,最小的水仙花数是三位数的153
源代码
#include <stdio.h>
#include <math.h>
// 解一元二次方程
void solveQuadraticEquation()
{
double a, b, c;
double delta;
printf("请输入一元二次方程ax^2 + bx + c = 0的系数a、b、c:\n");
printf("a = ");
scanf("%lf", &a);
printf("b = ");
scanf("%lf", &b);
printf("c = ");
scanf("%lf", &c);
delta = b * b - 4 * a * c;
if (delta > 0)
{
double x1 = (-b + sqrt(delta)) / (2 * a);
double x2 = (-b - sqrt(delta)) / (2 * a);
printf("方程有两个不同的根:x1 = %lf, x2 = %lf\n", x1, x2);
}
else if (delta == 0)
{
double x = -b / (2 * a);
printf("方程有一个根:x = %lf\n", x);
}
else
{
printf("方程没有根\n");
}
}
// 判断是否为闰年
int isLeapYear(int year)
{
return ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));//前者为普通闰年,后者为世纪闰年
}
// 判断是否为水仙花数
int isNarcissisticNumber(int num)
{
int originalNum = num; // 保存原始输入的数字,方便后续比较
int digitCount = 0; // 用于记录数字的位数
// 通过不断除以10来确定数字的位数
while (num != 0)
{
num /= 10;
digitCount++;
}
num = originalNum; // 恢复原始数字,用于后续计算
int sum = 0;
// 获取这个数每位上的值
while (num != 0)
{
int digit = num % 10; // 获取当前数字的个位、十位、百位……数字
sum += (int)pow(digit, digitCount); // 计算当前数字的digitCount次幂,并加到sum中
num /= 10; // 去掉已经处理过的个位数字
}
// 判断计算得到的和是否与原始数字相等,如果相等则是水仙花数
if (sum == originalNum)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
int choice;
while (1)
{
printf("\n数字游戏功能菜单:\n");
printf("1. 解一元二次方程\n");
printf("2. 判断指定年份是否是闰年\n");
printf("3. 判断某一数字是否是水仙花数\n");
printf("4. 退出程序\n");
printf("请输入你的选择(1-4):");
scanf("%d", &choice);
switch (choice)
{
case 1:
solveQuadraticEquation();
break;
case 2:
int year;
printf("请输入要判断的年份:");
scanf("%d", &year);
if (isLeapYear(year))
{
printf("%d年是闰年。\n", year);
}
else
{
printf("%d年不是闰年。\n", year);
}
break;
case 3:
int number;
isNarcissisticNumber(number);
printf("请输入要判断的数字: ");
scanf("%d", &number);
if (isNarcissisticNumber(number))
{
printf("%d是水仙花数\n", number);
}
else
{
printf("%d不是水仙花数\n", number);
break;
case 4:
printf("程序已退出,感谢使用!\n");
return 0;
default:
printf("无效的选择,请重新输入!\n");
break;
}
}
}
return 0;
}
标签:游戏,--,year,C语言,int,num,printf,水仙花,数字
From: https://blog.csdn.net/kangll_/article/details/144259347