C语言编程题02
本帖最后由 liyifeng295641 于 2024-1-3 15:45 编辑1. 输入一元二次方程的三个系数 a,b,c,求出方程的根,如果没有跟显示 Error。
2. 把一个整数数组改为逆序,并将结果输出,例如:原数组a={1,2,3,4,5},变为a={5,4,3,2,1}。
3. 从键盘上输入若干个整数,其值在 0-9 之间,用-1 作为结束输入的标记,统计 0-9 中各个数
的个数,并输出。 这样行吗?
#include <stdio.h>
#include <math.h>
// 一元二次方程求解
void solve_quadratic_equation() {
double a, b, c, determinant, root1, root2;
printf("Enter coefficients a, b and c: ");
scanf("%lf %lf %lf", &a, &b, &c);
determinant = b*b - 4*a*c;
if (determinant > 0) {
root1 = (-b + sqrt(determinant)) / (2*a);
root2 = (-b - sqrt(determinant)) / (2*a);
printf("Roots are real and different:\n%.2lf\n%.2lf\n", root1, root2);
}
else if (determinant == 0) {
root1 = -b/(2*a);
printf("Roots are real and same:\n%.2lf\n", root1);
}
else {
printf("Error\n");
}
}
// 逆序整数数组
void reverse_array() {
int n, i;
printf("Enter the number of elements: ");
scanf("%d", &n);
int arr;
printf("Enter %d elements:\n", n);
for(i = 0; i < n; i++) {
scanf("%d", &arr);
}
printf("Reversed array: ");
for(i = n - 1; i >= 0; i--) {
printf("%d ", arr);
}
printf("\n");
}
// 统计数字次数
void count_numbers() {
int num, count = {0};
printf("Enter numbers between 0 and 9 (enter -1 to end): ");
while(1) {
scanf("%d", &num);
if(num == -1)
break;
if(num >= 0 && num < 10)
count++;
}
printf("Count of numbers:\n");
for(int i = 0; i < 10; i++) {
printf("%d: %d\n", i, count);
}
}
int main() {
solve_quadratic_equation();
reverse_array();
count_numbers();
return 0;
} 1.题目要求求一元二次方程的根,可以使用一元二次方程的求根公式来解决。如果根不存在,则输出Error。
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c;
double x1, x2;
printf("请输入一元二次方程的三个系数(a, b, c):");
scanf("%lf %lf %lf", &a, &b, &c);
double discriminant = b * b - 4 * a * c;
if (a == 0) {
x1 = -c / b;
printf("方程的根为:%f\n", x1);
} else if (discriminant > 0) {
x1 = (-b + sqrt(discriminant)) / (2 * a);
x2 = (-b - sqrt(discriminant)) / (2 * a);
printf("方程的根为:%f, %f\n", x1, x2);
} else if (discriminant == 0) {
x1 = -b / (2 * a);
printf("方程的根为:%f\n", x1);
} else {
printf("Error: 方程无根\n");
}
return 0;
}
2.题目要求将整数数组改为逆序。可以定义两个指针,一个指向数组的起始位置,另一个指向数组的末尾位置,然后将两个指针所指的元素交换位置,直到两个指针相遇。
#include <stdio.h>
void reverseArray(int arr[], int length) {
int *start = arr;
int *end = arr + length - 1;
while (start < end) {
int temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int length = sizeof(arr) / sizeof(arr);
// 输出原数组
printf("原数组:");
for (int i = 0; i < length; i++) {
printf("%d ", arr);
}
printf("\n");
reverseArray(arr, length);
// 输出逆序后的数组
printf("逆序后的数组:");
for (int i = 0; i < length; i++) {
printf("%d ", arr);
}
printf("\n");
return 0;
}
3.题目要求统计键盘输入的一系列整数中0-9每个数字出现的次数。可以使用一个大小为10的数组来保存各个数字出现的次数,然后根据用户输入的整数进行相应的计数。
#include <stdio.h>
int main() {
int count = {0}; // 初始化计数数组,全部置为0
int num;
printf("请输入若干个整数(0-9之间),以-1结束:\n");
do {
scanf("%d", &num);
if (num >= 0 && num <= 9) {
count++;
}
} while (num != -1);
printf("各个数字出现的次数如下:\n");
for (int i = 0; i < 10; i++) {
printf("%d: %d次\n", i, count);
}
return 0;
}
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]