aa

这是本文档旧的修订版!


c语言程序设计基础实验

好的,我将根据这七道题的要求编写对应的 C 语言程序代码。

题目 (2) 计算学生成绩:

#include <stdio.h>

void calculate(int scores[], int n) {

  int total = 0, count = 0;
  float avg;
  for (int i = 0; i < n; i++) {
      total += scores[i];
  }
  avg = (float)total / n;
  for (int i = 0; i < n; i++) {
      if (scores[i] > avg) {
          count++;
      }
  }
  printf("平均成绩: %.2f\n", avg);
  printf("高于平均成绩的人数: %d\n", count);

}

int main() {

  int scores[50] = { /* 输入50个学生成绩 */ };
  calculate(scores, 50);
  return 0;

}

题目 (3) 去掉最高分和最低分后的平均分

#include <stdio.h> #include <stdlib.h>

int compare(const void *a, const void *b) {

  return (*(int *)a - *(int *)b);

}

void calculate(int scores[], int n) {

  qsort(scores, n, sizeof(int), compare);
  int total = 0;
  for (int i = 1; i < n - 1; i++) {
      total += scores[i];
  }
  float avg = (float)total / (n - 2);
  printf("去掉最高分和最低分后的平均分: %.2f\n", avg);

}

int main() {

  int scores[10] = { /* 输入10个评分 */ };
  calculate(scores, 10);
  return 0;

}

题目 (4) 杨辉三角

#include <stdio.h>

void printPascal(int n) {

  int arr[7][7] = {0};
  for (int line = 0; line < n; line++) {
      for (int i = 0; i <= line; i++) {
          if (i == 0 || i == line)
              arr[line][i] = 1;
          else
              arr[line][i] = arr[line - 1][i - 1] + arr[line - 1][i];
          printf("%d ", arr[line][i]);
      }
      printf("\n");
  }

}

int main() {

  printPascal(7);
  return 0;

}

题目 (5) 冒泡排序

#include <stdio.h>

void bubbleSort(int arr[], int n) {

  for (int i = 0; i < n - 1; i++) {
      for (int j = 0; j < n - i - 1; j++) {
          if (arr[j] > arr[j + 1]) {
              int temp = arr[j];
              arr[j] = arr[j + 1];
              arr[j + 1] = temp;
          }
      }
  }

}

int main() {

  int arr[10] = { /* 输入10个整数 */ };
  bubbleSort(arr, 10);
  for (int i = 0; i < 10; i++) {
      printf("%d ", arr[i]);
  }
  return 0;

}

题目 (6) 根据年月日计算星期几

#include <stdio.h>

int dayOfWeek(int y, int m, int d) {

  if (m == 1 || m == 2) {
      m += 12;
      y--;
  }
  int w = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7;
  return w;

}

int main() {

  int year, month, day;
  printf("请输入年、月、日:");
  scanf("%d %d %d", &year, &month, &day);
  int week = dayOfWeek(year, month, day);
  printf("星期%d\n", week);
  return 0;

}

题目 (7) 解一元三次方程

#include <stdio.h> #include <math.h>

double calculateRoot(double a, double b, double c, double d) {

  // 实现解方程 ax^3 + bx^2 + cx + d = 0 的算法
  // 此处省略具体实现,可使用牛顿迭代法或其他数值方法
  return 0.0; // 返回根

}

int main() {

  double a, b, c, d;
  printf("请输入系数 a, b, c, d:");
  scanf("%lf %lf %lf %lf", &a, &b, &c, &d);
  double root = calculateRoot(a, b, c, d);
  printf("方程的一个根是: %.5lf\n", root);
  return 0;

}

题目 (8) 计算两个整数的最大公约数和最小公倍数

#include <stdio.h>

int gcd(int a, int b) {

  return b == 0 ? a : gcd(b, a % b);

}

int lcm(int a, int b) {

  return a * b / gcd(a, b);

}

int main() {

  int a, b;
  printf("请输入两个整数:");
  scanf("%d %d", &a, &b);
  printf("最大公约数: %d\n", gcd(a, b));
  printf("最小公倍数: %d\n", lcm(a, b));
  return 0;

}

这些程序分别完成了题目要求的各项功能。您可以将这些代码直接编译并运行来测试结果。

请输入您的评论. 可以使用维基语法:
A Q J U S
 
  • aa.1731323690.txt.gz
  • 最后更改: 2024/11/11 19:14
  • doge24190