//编程14:输入两个正整数m和n,求最大公约数和最小公倍数。
#include"stdio.h"
main(){
int a,b,num1,num2,t;
printf("输入两个正整数\n");
scanf("%d,%d",&num1,&num2);
if(num1<num2){
t=num1;
num1=num2;
num2=t;
}
a=num1,b=num2;
while(b!=0){
t=a%b;
a=b;
b=t;
}
printf("最大公约数=%d\n",a);
printf("最小公倍数=%d\n",num1*num2/a);
return 0;
}
/*一.求最大公约数
方法一:枚举法:先求两个数中的最小值,最大公约数不可能大于两个数的最小数
比如6和18,最大公约数就是6;再如3和9,最大公约数就是3;
然后再从1开始循环遍历到最小值的数中找最大公约数即可,因为1是最小的因子了,0不能作为除数*/
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
int ret = 0;
scanf("%d %d", &a, &b);
int min = a < b ? a : b;
for (int i = 1; i <= min; i++)
{
if (a % i == 0 && b % i == 0)
{
ret = i;
}
}
printf("最大公约数是%d\n", ret);
return 0;
}
//方法二:辗转相除法
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
while (b)
{
int t = a % b;
a = b;
b = t;
//比如a=12,b=18 第一次t=12 a=18 b=12.第二次t=6 a=12 b=6 第三次t=0 a=6 b=0循环终止,所以最大公约数是6
}
printf("最大公约数是%d\n", a);
return 0;
}
/*二.求最小公倍数
1.枚举法求最小公倍数
思路:求两个数中的最大值,因为最小公倍数肯定 >= 两个数中的最大值
那比如6和12,最小公倍数就是12了;再如5和10,最小公倍数就是10了.
值得注意的是他与最大公约数有所不同,最大公约数是遍历到两个数的“最小值”,
而最小公倍数是从两个数中的最大值开始遍历,最小公倍数只要找到一个满足条件的公倍数,
立马结束循环,(如果不符合条件再++即可)因为你要求的是最小的公倍数*/
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int max = a > b ? a : b;
while (1)
{
if (max % a == 0 && max % b == 0)
break;
//一旦找到满足条件的因子就跳出循环
//因为这里求的是最小公倍数
else max++;
}
printf("最小公倍数是%d\n", max);
return 0;
}
/*2.简易法
因为最小公倍数应该为两个数共同的倍数,所以我们可以用其中的第一个数的整数倍对第二个数整除,
如果第一个数的整数倍也能整除第二个数,说明第一个数的整数倍就是两个数共同的倍数,
那么找到这一个了(第一次找到的公倍数)就是最小公倍数了,那么break跳出循环即可*/
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int i = 0;
for (i = 1; ; i++)
{//i=1,2...表示a的几倍,保证了是a的倍数, a*i就可以表示为最小公倍数
if (a * i % b == 0)
{
printf("%d\n", a * i);
break;
}
}
return 0;
}
/*3.公式法
用已知最大公约数求最小公倍数就可以,已知两个数a,b,最大公约数是c,
则最小公倍数是a*b / c,即先求出最大公约数,两个数相乘再除以最大公约数即最小公倍数*/
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
//保存a和b值,因为下面求最小公倍数用到a和b
int tmpa = a, tmpb = b;
while (b)
{
int t = a % b;
a = b;
b = t;
}
//此时tmpa和tmpb才是原来的值,a已经为最大公约数
printf("最小公倍数是%d\n", tmpa * tmpb / a);
return 0;
}
C语言练习题答案.zip
需积分: 0 44 浏览量
更新于2024-03-03
收藏 56KB ZIP 举报
C语言是一种基础且强大的编程语言,它被广泛用于系统编程、软件开发、嵌入式系统以及各种应用程序。这个“C语言练习题答案.zip”压缩包很可能是为了帮助学习者检查他们的编程作业答案或者理解C语言的概念。下面我们将深入探讨C语言的一些核心知识点。
1. **基本语法**:C语言的语法基于C++和Java等现代编程语言,包括变量声明、数据类型(如int、char、float、double等)、运算符(如算术、比较、逻辑和位运算符)以及控制结构(如if语句、switch语句、for循环、while循环)。
2. **函数**:C语言中的函数是一组执行特定任务的代码块。函数可以接收参数并返回值。比如`main()`函数是每个C程序的入口点,而`printf()`和`scanf()`函数则分别用于输出和输入数据。
3. **指针**:C语言的一个独特特性是使用指针,它们可以直接访问内存地址。指针可以用来传递函数参数、动态分配内存以及实现高效的数据结构,如链表和树。
4. **数组与字符串**:数组是一组相同类型的数据集合,可以是整型、字符型等。字符串在C语言中被视为字符数组,通常以空字符'\0'结尾。处理字符串的常用函数有`strlen()`计算长度,`strcpy()`复制字符串,`strcat()`连接字符串等。
5. **结构体与联合**:结构体允许我们将不同类型的数据组合在一起,形成复合数据类型。联合则是共享同一内存空间的多个数据类型的封装,适用于节省内存。
6. **预处理器**:C语言的预处理器(如`#include`、`#define`、`#ifdef`等)在编译之前处理源代码,完成宏定义、条件编译等功能。
7. **内存管理**:C语言提供了`malloc()`、`calloc()`、`realloc()`和`free()`等函数来动态分配和释放内存。理解内存管理是避免内存泄漏和提高程序效率的关键。
8. **错误处理**:C语言没有内置的异常处理机制,通常通过返回值和全局变量(如errno)来检测和处理错误。
9. **文件操作**:C语言提供了标准I/O库(stdio.h)来读写文件,包括`fopen()`打开文件,`fread()`和`fwrite()`读写数据,`fclose()`关闭文件等函数。
10. **位运算**:C语言支持位级运算,如按位与(&)、按位或(|)、按位异或(^)、按位非(~)和左移(<<)、右移(>>)。这些运算在低级别编程和硬件接口操作中非常有用。
学习C语言不仅要掌握这些基本概念,还需要通过大量的练习题来加深理解和提高编程技巧。这个“C语言练习题答案.zip”压缩包可能包含的就是这样的练习题解答,有助于学习者对照自己的代码进行对比和学习,找出不足之处并加以改进。在实践中不断迭代,是精通任何编程语言的关键步骤。

深繁
- 粉丝: 0
最新资源
- 随书光盘的有效管理及网络阅览实现技术-管理现状.docx
- 园林景观设计软件.docx
- 文化人类学-计算机科学与技术--常向阳.doc
- 浅析计算机软件技术在化工设计中的应用.docx
- IMS与网络融合技术研究分析tzq.doc
- 计算机技术在教育中的多方应用.docx
- 基于单片机的水温自动控制系统方案设计书.doc
- 浅析互联网金融模式.docx
- ppt模板:蓝色简约风人工智能PPT模板.pptx
- 大学计算机基础教程试题库专业证书.doc
- 基于物联网的智能仓储系统的设计.docx
- 计算机网考最新修改版.doc
- 电子商务税收征管问题分析及对策思考.doc
- Splunk大数据分析实战指南
- 面向对像程序设计试卷.doc
- C单片机的旋转显示屏设计与实现.doc