鱼C论坛

 找回密码
 立即注册
查看: 1699|回复: 2

[已解决]C语言编程题02

[复制链接]
发表于 2023-12-27 17:12:17 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 liyifeng295641 于 2024-1-3 15:45 编辑

1. 输入一元二次方程的三个系数 a,b,c,求出方程的根,如果没有跟显示 Error。

2. 把一个整数数组改为逆序,并将结果输出,例如:原数组a[N]={1,2,3,4,5},变为a[N]={5,4,3,2,1}。

3. 从键盘上输入若干个整数,其值在 0-9 之间,用-1 作为结束输入的标记,统计 0-9 中各个数
的个数,并输出。
最佳答案
2023-12-27 17:12:18
这样行吗?
#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[n];
    printf("Enter %d elements:\n", n);
    for(i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }

    printf("Reversed array: ");
    for(i = n - 1; i >= 0; i--) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

// 统计数字次数
void count_numbers() {
    int num, count[10] = {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[num]++;
    }

    printf("Count of numbers:\n");
    for(int i = 0; i < 10; i++) {
        printf("%d: %d\n", i, count[i]);
    }
}

int main() {
    solve_quadratic_equation();
    reverse_array();
    count_numbers();
    return 0;
}

最佳答案

查看完整内容

这样行吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-27 17:12:18 | 显示全部楼层    本楼为最佳答案   
这样行吗?
#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[n];
    printf("Enter %d elements:\n", n);
    for(i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }

    printf("Reversed array: ");
    for(i = n - 1; i >= 0; i--) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

// 统计数字次数
void count_numbers() {
    int num, count[10] = {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[num]++;
    }

    printf("Count of numbers:\n");
    for(int i = 0; i < 10; i++) {
        printf("%d: %d\n", i, count[i]);
    }
}

int main() {
    solve_quadratic_equation();
    reverse_array();
    count_numbers();
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-27 17:12:45 | 显示全部楼层
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[0]);        // 输出原数组    printf("原数组:");    for (int i = 0; i < length; i++) {        printf("%d ", arr[i]);    }    printf("\n");        reverseArray(arr, length);        // 输出逆序后的数组    printf("逆序后的数组:");    for (int i = 0; i < length; i++) {        printf("%d ", arr[i]);    }    printf("\n");        return 0;}
3.题目要求统计键盘输入的一系列整数中0-9每个数字出现的次数。可以使用一个大小为10的数组来保存各个数字出现的次数,然后根据用户输入的整数进行相应的计数。
#include <stdio.h>int main() {    int count[10] = {0}; // 初始化计数数组,全部置为0    int num;        printf("请输入若干个整数(0-9之间),以-1结束:\n");        do {        scanf("%d", &num);                if (num >= 0 && num <= 9) {            count[num]++;        }    } while (num != -1);        printf("各个数字出现的次数如下:\n");    for (int i = 0; i < 10; i++) {        printf("%d: %d次\n", i, count[i]);    }        return 0;}

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 03:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表