liyifeng295641 发表于 2023-12-27 17:12:17

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 中各个数
的个数,并输出。

sfqxx 发表于 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;
    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;
}

FishC 发表于 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);
   
    // 输出原数组
    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]
查看完整版本: C语言编程题02