C语言编程作业答案:求最大公约数与插入排序实践
版权申诉
5星 · 超过95%的资源 117 浏览量
更新于2024-07-02
3
收藏 959KB PDF 举报
本资源是一份针对C语言程序设计下学期在线课程的作业答案文档,包含两道编程练习题目。第一题是关于求两个正整数的最大公约数(GCD)和最小公倍数(LCM),题目要求在主函数中通过调用fun1()和fun2()函数实现计算,并输出结果。fun1()采用欧几里得算法,通过递归找到两个数的最大公约数;fun2()则是利用最大公约数计算最小公倍数,即两数乘积除以最大公约数。
代码示例:
```c
#include<stdio.h>
int fun1(int m, int n) {
int r;
r = m % n;
return r == 0 ? n : fun1(n, r);
}
int fun2(int m, int n) {
int t;
t = m * n / fun1(m, n);
return t;
}
int main() {
int m, n, t;
scanf("%d, %d", &m, &n);
if (m < n) {
t = m; m = n; n = t;
}
printf("最大公约数:%d\n", fun1(m, n));
printf("最小公倍数:%d\n", fun2(m, n));
return 0;
}
```
第二题是排序并插入操作,要求在主函数中创建一个包含10个元素的整数数组,输入9个数进行排序,然后接收一个额外的数并插入到正确位置。这里使用了冒泡排序算法,通过嵌套循环对比相邻元素并交换,确保数组有序。输入输出样例展示了如何输入和预期的输出格式。
代码示例:
```c
#include<stdio.h>
int main() {
int t, j, i, n[10];
for (i = 0; i < 9; i++) {
scanf("%d", &n[i]);
if (i < 8) scanf(",");
}
scanf("%d", &n[9]);
// 冒泡排序
for (i = 0; i < 9; i++) {
for (j = 0; j < 8 - i; j++) {
if (n[j] > n[j + 1]) {
t = n[j];
n[j] = n[j + 1];
n[j + 1] = t;
}
}
}
// 插入操作
int insert_num;
scanf("%d", &insert_num);
// 插入到正确位置
for (i = 9; i >= 0 && n[i] > insert_num; i--) {
n[i + 1] = n[i];
}
n[i + 1] = insert_num;
// 输出排序后的数组
for (i = 0; i < 10; i++) {
printf("%d", n[i]);
if (i != 9) printf(",");
}
printf("\n");
return 0;
}
```
这两道题目都是C语言基础编程中的经典问题,涉及到数组操作、函数调用、排序算法以及递归的应用,有助于巩固对C语言核心概念的理解和实践能力的提升。
2021-09-19 上传
2021-09-19 上传
2021-10-11 上传
2021-09-19 上传
2021-09-19 上传
2021-09-19 上传
2021-09-19 上传
2021-09-19 上传
a66889999
- 粉丝: 42
- 资源: 1万+
最新资源
- ScalesWebAplication
- webpage2
- Bumblebee-Optimus:大WaSP擎天柱的GUI
- Excel模板00科目余额表.zip
- 毕业设计&课设--毕业设计智慧景区之PC端(管理端)后台管理系统.zip
- 烧瓶在线分级程序
- efte-unit:efte 项目构建工具
- chess_puzzle
- uiuStudentRecordSystem
- 毕业设计&课设--毕业设计-中医诊疗系统-疾病药品管理-中医开方.zip
- Excel模板收款收据模板电子版.zip
- 基于stm32的频率检测计.zip
- play-mp3-url-from-terminal:只是使用node.js从命令行简单的在线mp3网址播放器
- Aula_2705_Data
- SystemTTS:Android系统语音播报
- Excel模板00明细账.zip