一、求和训练
题目描述
求以下三数的和,保留2位小数 1~a之和 1~b的平方和 1~c的倒数和
输入格式
a b c
输出格式
1+2+...+a + 1^2+2^2+...+b^2 + 1/1+1/2+...+1/c
样例输入
100 50 10
样例输出
47977.93
#include <stdio.h>
#include <math.h>
int main() {
int a, b, c;
double sum1, sum2, sum3;
// 读取输入
scanf("%d %d %d", &a, &b, &c);
// 计算1到a的和
sum1 = (double)a * (a + 1) / 2;
// 计算1到b的平方和
sum2 = (double)b * (b + 1) * (2 * b + 1) / 6;
// 计算1到c的倒数和
for (int i = 1; i <= c; i++) {
sum3 += 1.0 / i;
}
// 计算总和
double total_sum = sum1 + sum2 + sum3;
// 输出结果,保留两位小数
printf("%.2f\n", total_sum);
return 0;
}
二、数组插入处理
题目描述
已有一个已正序排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。
输入格式
第一行,原始数列。 第二行,需要插入的数字。
输出格式
排序后的数列
样例输入
1 7 8 17 23 24 59 62 101 50
样例输出
1 7 8 17 23 24 50 59 62 101
#include <stdio.h>
int main() {
int arr[10] = {0}; // 定义数组,初始值为0
int num;
int i, j;
// 读取原始数列
for (i = 0; i < 9; i++) {
scanf("%d", &arr[i]);
}
// 读取需要插入的数字
scanf("%d", &num);
// 寻找插入位置
for (i = 0; i < 9; i++) {
if (arr[i] >= num) {
break;
}
}
// 将大于num的元素向后移动一位
for (j = 9; j > i; j--) {
arr[j] = arr[j - 1];
}
// 插入数字
arr[i] = num;
// 输出排序后的数组
for (i = 0; i < 10; i++) {
printf("%d\n", arr[i]);
}
return 0;
}
三、数字逆序输出
题目描述
输入10个数字,然后逆序输出。
输入格式
十个整数
输出格式
逆序输出,空格分开
样例输入
1 2 3 4 5 6 7 8 9 0
样例输出
0 9 8 7 6 5 4 3 2 1
#include <stdio.h>
int main() {
int numbers[10];
int i;
// 读取10个整数
for (i = 0; i < 10; i++) {
scanf("%d", &numbers[i]);
}
// 逆序输出
for (i = 9; i >= 0; i--) {
printf("%d ", numbers[i]);
}
printf("\n");
return 0;
}
四、自定义函数求一元二次方程
题目描述
求方程 的根,用三个函数分别求当b^2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。
输入格式
a b c
输出格式
x1=? x2=?
样例输入
4 1 1
样例输出
x1=-0.125+0.484i x2=-0.125-0.484i
#include <stdio.h>
#include <math.h>
#include <complex.h>
// 函数声明
void solveQuadratic(double a, double b, double c, double *x1, double *x2);
void solveQuadraticReal(double a, double b, double c, double *x1, double *x2);
void solveQuadraticEqual(double a, double b, double c, double *x1, double *x2);
void solveQuadraticComplex(double a, double b, double c, double complex *x1, double complex *x2);
int main() {
double a, b, c;
double x1, x2;
double complex cx1, cx2;
// 读取输入
scanf("%lf %lf %lf", &a, &b, &c);
double discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
solveQuadraticReal(a, b, c, &x1, &x2);
printf("x1=%.3f x2=%.3f\n", x1, x2);
} else if (discriminant == 0) {
solveQuadraticEqual(a, b, c, &x1, &x2);
printf("x1=x2=%.3f\n", x1);
} else {
solveQuadraticComplex(a, b, c, &cx1, &cx2);
printf("x1=%.3f%.3fi x2=%.3f%.3fi\n", creal(cx1), cimag(cx1), creal(cx2), cimag(cx2));
}
return 0;
}
void solveQuadraticReal(double a, double b, double c, double *x1, double *x2) {
*x1 = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
*x2 = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
}
void solveQuadraticEqual(double a, double b, double c, double *x1, double *x2) {
*x1 = *x2 = -b / (2 * a);
}
void solveQuadraticComplex(double a, double b, double c, double complex *x1, double complex *x2) {
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-1 * (b * b - 4 * a * c)) / (2 * a);
*x1 = realPart + I * imaginaryPart;
*x2 = realPart - I * imaginaryPart;
}
五、自定义函数处理素数
题目描述
写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。
输入格式
一个数
输出格式
如果是素数输出prime 如果不是输出not prime
样例输入
97
样例输出
prime
#include <stdio.h>
// 判断素数的函数
int isPrime(int n) {
if (n <= 1) {
return 0; // 1及以下的数不是素数
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return 0; // 发现因子则不是素数
}
}
return 1; // 没有发现因子则是素数
}
int main() {
int number;
// 读取输入
scanf("%d", &number);
// 判断并输出结果
if (isPrime(number)) {
printf("prime\n");
} else {
printf("not prime\n");
}
return 0;
}