目录
输出1900~2000年中闰年的年份,符合下面两个条件之一的年份是闰年:
求两个数m和n的最大公约数
您可以使用辗转相除法(也称为欧几里德算法)来求两个数m和n的最大公约数,而不使用递归。以下是一个不使用递归的C语言程序示例:
#include <stdio.h>
// 函数用于计算最大公约数
int gcd(int m, int n) {
while (n != 0) {
int temp = n;
n = m % n;
m = temp;
}
return m;
}
int main() {
int m, n;
// 输入两个整数
printf("请输入两个整数 m 和 n:");
scanf("%d %d", &m, &n);
// 调用gcd函数计算最大公约数
int result = gcd(m, n);
// 输出结果
printf("最大公约数是:%d\n", result);
return 0;
}
这个程序使用一个循环来计算最大公约数,直到其中一个数变为零。在每一步中,它交换m和n的值,并用m除以n的余数来更新n,直到n变为零。最后,m的值就是最大公约数,程序将其打印到屏幕上。
求方程式ax^2+bx+c=0的根。分别考虑
(1)有两个不等的实根
(2)有两个相等的实根
求解二次方程ax^2+bx+c=0的根可以根据判别式Δ(delta)的值来分情况讨论:
1. 如果Δ > 0,则有两个不等的实根。
2. 如果Δ = 0,则有两个相等的实根。
3. 如果Δ < 0,则没有实根,而是两个共轭复数根。
以下是一个C语言程序,根据Δ的值来计算并输出根:
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c;
double delta, x1, x2;
// 输入二次方程的系数
printf("请输入二次方程的系数(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) {
// 有两个不等的实根
x1 = (-b + sqrt(delta)) / (2 * a);
x2 = (-b - sqrt(delta)) / (2 * a);
printf("有两个不等的实根:\n");
printf("x1 = %.2lf\n", x1);
printf("x2 = %.2lf\n", x2);
} else if (delta == 0) {
// 有两个相等的实根
x1 = -b / (2 * a);
printf("有两个相等的实根:\n");
printf("x1 = x2 = %.2lf\n", x1);
} else {
// 没有实根,有共轭复数根
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-delta) / (2 * a);
printf("没有实根,有共轭复数根:\n");
printf("x1 = %.2lf + %.2lfi\n", realPart, imaginaryPart);
printf("x2 = %.2lf - %.2lfi\n", realPart, imaginaryPart);
}
return 0;
}
这个程序首先计算判别式Δ的值,然后根据Δ的大小分情况讨论,计算并输出相应的根。
输出1900~2000年中闰年的年份,符合下面两个条件之一的年份是闰年:
(1)能被4整除但不能被100整除;
(2)能被100整除且能被400整除。
以下是一个C语言程序,用于输出1900~2000年之间的闰年:
#include <stdio.h>
int main() {
printf("1900年到2000年之间的闰年有:\n");
for (int year = 1900; year <= 2000; year++) {
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
printf("%d\n", year);
}
}
return 0;
}
这个程序使用一个循环遍历从1900年到2000年的每一年,然后根据两个条件中的任何一个来判断是否是闰年:1)能被4整除但不能被100整除,或2)能被100整除且能被400整除。如果满足其中一个条件,就输出年份,表示这是一个闰年。