C语言程序设计课程设计编写函数求取两个整数mn的最大公约数和最小公倍数
最大公约数和最小公倍数 c语言
最大公约数和最小公倍数 c语言最大公约数(GCD)和最小公倍数(LCM)是数学中常见的概念,用于找到一组数的最大公约数和最小公倍数。
最大公约数是指一组数中的最大公约数,即能够同时整除这组数的最大正整数。
用符号GCD(a, b)表示,可以通过欧几里得算法来计算。
最小公倍数是指一组数中的最小公倍数,即可以同时被这组数整除的最小正整数。
用符号LCM(a, b)表示,可以通过以下公式计算:LCM(a, b) = (a * b) / GCD(a, b)C语言代码示例:```c#include <stdio.h>// 计算最大公约数int gcd(int a, int b) {if (b == 0) {return a;} else {return 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;}```这段代码首先定义了两个函数:`gcd`用于计算最大公约数,`lcm`用于计算最小公倍数。
在`main`函数中,通过用户的输入获取两个整数,并调用以上两个函数来计算最大公约数和最小公倍数,最后将结果打印输出。
注:请注意在实际编写代码时,应考虑输入错误或异常情况的处理,例如负数、零等特殊情况。
上述代码只是一个简单示例,可能需要根据实际需求进行修改和完善。
输入两个正整数m和n,求其最大公约数和最小公倍数
输入两个正整数m和n,求其最大公约数和最小公倍数最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。
求两个正整数m和n的最大公约数可用欧几里德算法(辗转相除法)。
求两个正整数m和n的最小公倍数=两个数的乘积÷两个数的最大公约数。
用欧几里德算法(辗转相除法)求两个数的最大公约数的步骤如下:先用小的一个数除大的一个数,得第一个余数;再用第一个余数除小的一个数,得第二个余数;又用第二个余数除第一个余数,得第三个余数;这样逐次用后一个数去除前一个余数,直到余数是0为止。
那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。
两个正整数的最小公倍数=两个数的乘积÷两个数的最大公约数。
由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。
这就是说,求两个数的最小公倍数,可以先求出两个数的最大公约数,再用这两个数的最大公约数去除这两个数的积,所得的商就是两个数的最小公倍数。
main(){int p,r,n,m,temp;printf("Please enter 2 numbers n,m:");scanf("%d,%d",&n,&m);//输入两个正整数.if(n\u003cm)//把大数放在n中,把小数放在m中. {temp=n;n=m;m=temp;}p=n*m;//P是原来两个数n,m的乘积.while(m!=0)//求两个数n,m的最大公约数.{r=n%m;n=m;m=r;}printf("Its MAXGongYueShu:%d\\n",n);//打印最大公约数. printf("Its MINGongBeiShu:%d\\n",p/n);打印最小公倍数.。
C语言课程设计参考题目
C语言课程设计参考题目C语言课程设计参考题目一、基本要求题目1、一司机出车祸后驾车逃离现场,第一位目击者记得车牌号前两位数字相同,且后两位数字也相同;第二位目击者是一位数学家,他看出车牌号是四位完全平方数。
试编程推算肇事车的车牌号。
2、有17个人围成一圈,从0号的人开始报数,凡报到3的倍数的人离开圈子,然后再数下去。
直到最后只剩下一个人为止。
问此人原来的位置是多少号。
3、编写一个程序,求3X4数组的转置矩阵。
要求在main函数里读数,在change 函数里把矩阵转置。
4、编写函数,求取两个整数m,n的最大公约数和最小公倍数。
5、用指向指针的方法对n个整数排序并输出。
要求将排序单独写成一个函数。
N 个整数在主函数中输入。
最后在主函数中输出。
6、有n个学生,每个学生的数据包括学号、姓名、年龄和两科成绩。
请编程用结构类型的数据处理方式实现如下目标:(1)在main 函数中输入原始数据;(2)在count 函数中输出各学生的总分和平均分;(3)输出总分最高的学生;(4)编写sort函数将各学生的数据按总分降序输出。
7、编写求子串函数substr(s,n1,n2),在串s中从n1位置开始取n2个字符的子串8、文件加密程序:将待加密文件以二进制打开,读入32个字节,分别与口令异或,在将4、5、6三个字分别与0xaaaa异或,即完成加密,执行第二次就解密9、编写字串str1 中找出所有小写字母转成大写字母,大写字母转成小写字母后,结果依次存入字符数组 str2 中,str1 不变仍为原字串的程序。
例如,字符串str1 为 "91A2BC. a1bc",调用函数 fun 后,字符数组str2将存入"91a2bc. A1BC",str1仍然是"91A2BC. a1bc"。
10、编写一个将某个范围在-32768~32767之间的整数转换为R进制(R=2,5,8,16)的通用程序。
输入两个正整数m和n,求最小公倍数,与最大公约数
第一周作业1输入两个正整数m和n, 求其最大公约数和最小公倍数.<1> 用辗转相除法求最大公约数算法描述: m对n求余为a, 若a不等于0 则m <- n, n <- a, 继续求余否则n 为最大公约数<2> 最小公倍数= 两个数的积/ 最大公约数#include int main(){int m, n; int m_cup, n_cup, res; /*被除数, 除数, 余数*/ printf("Enter two integer:\n");scanf("%d %d", &m, &n);if (m > 0 && n >0){m_cup = m;n_cup = n;res = m_cup % n_cup;while (res != 0){m_cup = n_cup;n_cup = res;res = m_cup % n_cup;}2、分别用三种循环语句(while语句、do-while语句、for语句),实现求1~100的累加和。
第2周的题目:(要求用数组做)printf("Greatest common divisor: %d\n", n_cup);printf("Lease common multiple : %d\n", m * n /n_cup);}else printf("Error!\n");return 0;}2int sum = 0;int i=0;while(i<100){sum += (i+1);i++;}printf("%d" , sum);i=0;do{sum += (i+1);i++;}while(i <=100)printf("%d" , sum);for(i = 1 ; i <=100 ; i++){sum += i;}printf("%d" , sum);第二周作业1用冒泡法对输入的10个整数排序。
C语言课程设计 编写函数,求取两个整数m,n的最大公约数和最小公倍数
C语言课程设计专业:电气工程及其自动化班级:电气11姓名:学号:指导教师:兰州交通大学自动化与电气工程学院2012 年7月6日1 基本题目1.1题目编写函数,求取两个整数m,n的最大公约数和最小公倍数。
1.2 题目分析图1 程序流程图1.3 程序# include<stdio.h>int max(int a,int b);int main(){printf("请输入两个整数");int m,n,p;scanf("%d%d",&m,&n);p=m*n;printf("最大公约数为:%d最小公倍数为:%d\n",max(m,n),p/max(m,n));return 0;}int max(int a,int b){int c;while (a!=b){if(a<b){c=a;a=b;b=c;}a=a-b;}return b;}1.4 程序的运行结果图2 基本题目运行结果2 改错题目2.1 改正后程序#include <stdio.h>#include <conio.h>main(){int i=0,j;char ch;while((ch=getch())!='\r'){i++;printf("%c",ch);}printf("you type %d characters\n",i);}2.2 程序运行结果图3 正确程序运行结果3 综合题目3.1 题目综合题目为:《班级通讯录》。
3.2 数据结构对上述题目进行分析,定义结构体数据结构如下:struct Person{char name[10]; //姓名char num[15]; //号码char age[8]; //年龄char adds[20]; //住址struct Person *next;};3.3 程序的主要功能通过该系统实现对通讯录信息进行录入、显示、修改、删除、排序、保存等操作的管理。
c语言程序设计第五版课后答案谭浩强第五章课后答案
c语⾔程序设计第五版课后答案谭浩强第五章课后答案c语⾔程序设计第五版课后答案谭浩强1.请画出例5.6中给出的3个程序段的流程图流程图1:流程图2:流程图3:2.请补充例5. 7程序,分别统计当“fabs(t)>= le- 6”和“fabs(t)> = le- 8”时执⾏循环体的次数。
fabs(t)>= le- 6 ,⽰例代码# include <stdio.h># include <math.h>int main(){int sign = 1;double pi = 0.0, term = 1.0;int n = 0;while (fabs(term) >= 1e-6){n++;term = 1.0 / (2 * n - 1)*sign;pi += term;sign = -sign;}pi *= 4;printf("pi的近似值是%lf\n", pi);printf("循环体循环了%d次\n", n);return 0;}运⾏截图:fabs(t)> = le- 8,⽰例代码# include <stdio.h># include <math.h>int main(){int sign = 1;double pi = 0.0, term = 1.0;int n = 0;while (fabs(term) >= 1e-8){n++;term = 1.0 / (2 * n - 1)*sign;pi += term;sign = -sign;}pi *= 4;printf("pi的近似值是%lf\n", pi);printf("循环体循环了%d次\n", n);return 0;}运⾏截图:3.输⼈两个正整数m和n,求其最⼤公约数和最⼩公倍数答案解析:该题题⽬直接使⽤“辗转相除法”来求解最⼤公约数,以除数和余数反复做除法运算,当余数为 0 时,就取得当前算式除数为最⼤公约数。
求两个正整数的最大公约数c语言程序
求两个正整数的最大公约数c语言程序下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!寻找两个正整数的最大公约数:一个简单的 C 语言程序在数学中,最大公约数(Greatest Common Divisor,简称 GCD)是两个或多个整数的最大共同因子。
C语言程序设计实验
《C语言程序设计实验》教学大纲课程名称:C语言程序设计实验课程编号:14030105课程类别:专业基础课/必修课学时/学分:16/0.5开设学期:第二学期开设单位:物理与机电工程学院适用专业:电气工程及其自动化说明一、课程性质专业基础课/必修课二、教学目标C语言程序设计是一门逻辑性比较强的专业基础课。
在学生学过计算机基础课程的基础上,系统地介绍面向过程的程序设计语言的一般规律及程序设计方法。
通过综合性实验环节,培养学生的程序设计能力,为后续课程的学习打下基础。
三、学时分配表四、实验方法与要求建议1.要求一人一机。
2.要求学生提前预习与编程,结合老师的讲解与演示独立完成实验要求。
五、考核方式及要求采用现场实际编程并按要求书写实验报告相结合的考核方式,成绩计算方法如下实验成绩=现场实际操作能力(70%)+实验报告(30%)实验一熟悉C语言的运行环境一、实验性质实验类别:专业基础必修实验类型:验证型计划学时:1学时实验分组:一人一机二、实验目的1.了解所用的计算机系统的基本操作方法,学会使用该系统;2.了解在该系统上如何编辑、编译、连接和运行一个C程序;3.通过运行简单的C程序,初步了解C程序的特点。
三、实验的基本内容和要求1.检查所用的计算机系统;2.进入C的工作环境;3.熟悉 Turbo C集成环境;4.输入并运行几个简单的C程序。
四、实验仪器设备及材料1.硬件条件微型计算机(intel X86 CPU)。
2.软件条件Windows XP/ME/2000操作系统,安装了Visual C++6.0 或Turbo C2.0软件。
五、实验操作要点注意快捷键的使用六、实验教学建议教师先讲解与演示,然后辅导学生运行一些简单的程序,掌握一个程序的运行方法,并初步学会查找错误的方法,并按时完成实验报告。
实验二数据类型.运算符与表达式一、实验性质实验类别:专业基础必修实验类型:综合型计划学时:2学时实验分组:一人一机二、实验目的1.掌握C语言数据类型,熟悉如何定义一个整型.字符型和实型的变量,以及对它们赋值的方法;2.掌握不同的类型数据之间赋值的规律;3.让学生学会使用C的算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(——)运算符的使用;4.进一步熟悉C程序的编辑、编译、连接和运行的过程。
最大公因数和最小公倍数c语言
最大公因数和最小公倍数c语言
最大公因数和最小公倍数是数学中常见的概念,也是程序设计中常见的问题。
在C语言中,可以使用辗转相除法和欧几里得算法来求解最大公因数和最小公倍数。
1. 辗转相除法
辗转相除法又称欧几里得算法,是求两个数最大公因数的一种简便方法。
该算法的基本思想是:用较小数除以较大数,再用余数去除除数,如此反复,直到余数为零为止。
最后的除数就是这两个数的最大公因数。
下面是使用辗转相除法求最大公因数的C语言代码:
```c
int gcd(int a, int b)
{
int temp;
while (b != 0)
{
temp = b;
b = a % b;
a = temp;
}
return a;
}
```
2. 最小公倍数
最小公倍数是指两个或多个整数公有的倍数中,最小的那个数。
求最小公倍数的方法是将两个数的积除以它们的最大公因数。
下面是使用最大公因数求最小公倍数的C语言代码:
```c
int lcm(int a, int b)
{
return a * b / gcd(a, b);
}
```
以上代码中,gcd函数用于求最大公因数,lcm函数用于求最小公倍数。
总结:
以上是使用C语言求解最大公因数和最小公倍数的方法,其中辗转相除法和欧几里得算法是常用的求解最大公因数的方法,而最小公倍数则可以通过最大公因数来求解。
C语言程序设计课程设计--编写函数,求取两个整数m,n的最大公约数和最小公倍数
C语言程序设计课程设计专业:电气工程及其自动化班级:电气1203姓名:熊董学号: 201209837指导教师:王思华兰州交通大学自动化与电气工程学院2013 年07月 20日1、基础题1.1题目编写函数,求取两个整数m,n的最大公约数和最小公倍数。
1.2题目分析求两个整数的最大公约数和最小公倍数可以用辗转相除法,用两个函数max 和min分别求出最大公约数和最小公倍数。
在主函数中输入两个整数m和n,并传递给函数max,求出最大公约数返回主函数并赋给整型变量h,然后h和两个整数m,n 一起作为实参传递给函数min,从而求出最小公倍数,返回主函数赋给l。
输出最大公约数和最小公倍数。
主函数:N-S图如图一max函数:N-S图如图二min函数:N-S图如图三图三min函数1.3源程序#include<stdio.h>int main(){ int max(int,int);int min(int,int,int);int m,n,h,l;scanf("%d,%d",&m,&n);h=max(m,n);printf("最大公约数是%d\n",h);l=min(m,n,h);printf("最小公倍数是%d\n",l);return 0;}int max(int m,int n){ int t,r;if(n>m);{t=m;m=n;n=t;}while((r=m%n)!=0){m=n;n=r;}return(n);}int min(int m,int n,int h){return(m*n/h);}1.4程序运行结果如图四:图四基础题运行截图2、改错题2.1题目#include <stdio.h> #include <conio.h> void fun(int a, b) {int t;t = b; b = a ; a = t; }main( ) {int a, b; clrscr( );printf("Enter a,b :"); scanf("%d%d", &a, &b); fun(&a, &b);printf("a=%d b=%d\n", a, b); }2.2题目分析该源程序的目的是交换两个数的值,有主函数可以看出该函数是应用指针交换两个数的值。
C语言求最小公倍数和最大公约数三种算法(经典).doc
C语言求最小公倍数和最大公约数三种算法(经典) 最小公倍数:数论中的一种概念,两个整数公有的倍数成为他们的公倍数,其中一个最小的公倍数是他们的最小公倍数,同样地,若干个整数公有的倍数中最小的正整数称为它们的最小公倍数。
求最小公倍数算法:最小公倍数=两整数的乘积÷最大公约数求最大公约数算法:(1)辗转相除法有两整数a和b:①a%b得余数c②若c=0,则b即为两数的最大公约数③若c≠0,则a=b,b=c,再回去执行①例如求27和15的最大公约数过程为:27÷15 余1215÷12余312÷3余0因此,3即为最大公约数。
1 #include2 int main() /* 辗转相除法求最大公约数*/3 {4 int m, n, a, b, t, c;5 printf("Input two integer numbers:\n");6 scanf("%d%d",7 m=a; n=b;8 while(b!=0) /* 余数不为0,继续相除,直到余数为0 */9 { c=a%b; a=b; b=c;}10 printf("The largest common divisor:%d\n", a);11 printf("The least common multiple:%d\n", m*n/a);12 }提供一种简写的方式:1 int gcd(int a,int b)2 {3 return b==0?a:gcd(b,a%b);4 }⑵相减法有两整数a和b:①若a>b,则a=a-b②若a③若a=b,则a(或b)即为两数的最大公约数④若a≠b,则再回去执行①例如求27和15的最大公约数过程为:27-15=12( 15>12 ) 15-12=3( 12>3 )12-3=9( 9>3 ) 9-3=6( 6>3 )6-3=3( 3==3 )因此,3即为最大公约数1 #include2 int main ( ) /* 相减法求最大公约数*/3 {4 int m, n, a, b, c;5 printf("Input two integer numbers:\n");6 scanf ("%d,%d", m=a; n=b;7 /* a, b不相等,大数减小数,直到相等为止。
C语言课程设计 编写函数,求取两个整数m,n的最大公约数和最小公倍数
C语言课程设计专业:电气工程及其自动化班级:电气11姓名:学号:指导教师:兰州交通大学自动化与电气工程学院2012 年7月6日C程序设计课程设计报告1 基本题目1.1题目编写函数,求取两个整数m,n的最大公约数和最小公倍数。
1.2 题目分析图1 程序流程图1.3 程序# include<stdio.h>int max(int a,int b);int main(){printf("请输入两个整数");int m,n,p;scanf("%d%d",&m,&n);p=m*n;printf("最大公约数为:%d最小公倍数为:%d\n",max(m,n),p/max(m,n));return 0;}int max(int a,int b){int c;while (a!=b){if(a<b){c=a;a=b;b=c;}a=a-b;}return b;}1.4 程序的运行结果图2 基本题目运行结果2 改错题目2.1 改正后程序#include <stdio.h>#include <conio.h>main(){int i=0,j;char ch;while((ch=getch())!='\r'){i++;C程序设计课程设计报告printf("%c",ch);}printf("you type %d characters\n",i);}2.2 程序运行结果图3 正确程序运行结果3 综合题目3.1 题目综合题目为:《班级通讯录》。
3.2 数据结构对上述题目进行分析,定义结构体数据结构如下:struct Person{char name[10]; //姓名char num[15]; //号码char age[8]; //年龄char adds[20]; //住址struct Person *next;};3.3 程序的主要功能通过该系统实现对通讯录信息进行录入、显示、修改、删除、排序、保存等操作的管理。
输入两个正整数m和n,求其最大公约数和最小公倍数
输入两个正整数m和n,求其最大公约数和最小公倍
数
求m和n的最大公约数和最小公倍数:最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。
求两个正整数m和n的最大公约数可用欧几里德算法(辗转相除法)。
求两个正整数m和n的最小公倍数=两个数的乘积÷两个数的最大公约数。
用欧几里德算法(辗转相除法)求两个数的最大公约数的步骤如下:
先用小的一个数除大的一个数,得第一个余数;
再用第一个余数除小的一个数,得第二个余数;
又用第二个余数除第一个余数,得第三个余数;
这样逐次用后一个数去除前一个余数,直到余数是0为止。
那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。
两个正整数的最小公倍数=两个数的乘积÷两个数的最大公约数。
由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。
这就是说,求两个数的最小公倍数,可以先求出两个数的最大公约数,再用这两个数的最大公约数去除这两个数的积,所得的商就是两个数的最小公倍数。
求两个数的最小公倍数的方法c语言
求两个数的最小公倍数的方法c语言
求两个数的最小公倍数的方法C语言
在C语言中,我们可以使用辗转相除法来求两个数的最小公倍数。
具体步骤如下:
1. 首先输入两个整数a和b。
2. 定义一个变量c,将a和b中较大的数赋值给c。
3. 通过while循环,不断用c去除以a和b,直到a和b中有一个数能够被c整除。
4. 将a和b分别除以能够被它们整除的那个数,并将结果赋值给a和b。
5. 最后输出a和b的乘积即为最小公倍数。
以下是完整代码:
```
#include <stdio.h>
int main() {
int a, b, c;
printf("请输入两个整数:\n");
scanf("%d %d", &a, &b);
c = a > b ? a : b;
while (c % a != 0 || c % b != 0) {
c++;
}
printf("最小公倍数为:%d\n", c);
return 0;
}
```
通过以上步骤,我们就可以求出任意两个正整数的最小公倍数了。
输入两个正整数m和n,求其最大公约数和最小公倍数
输⼊两个正整数m和n,求其最⼤公约数和最⼩公倍数题⽬:输⼊两个正整数m和n,求其最⼤公约数和最⼩公倍数。
程序分析:利⽤辗除法。
在循环中,只要除数不等于0,⽤较⼤数除以较⼩的数,将⼩的⼀个数作为下⼀轮循环的⼤数,取得的余数作为下⼀轮循环的较⼩的数,如此循环直到较⼩的数的值为0,返回较⼤的数,此数即为最⼩公约数,最⼩公倍数为两数之积除以最⼩公倍数。
1package com.li.FiftyAlgorthm;23import java.util.Scanner;45/**b6 * 题⽬:输⼊两个正整数m和n,求其最⼤公约数和最⼩公倍数。
程序分析:利⽤辗除法。
7 * 在循环中,只要除数不等于0,⽤较⼤数除以较⼩的数,将⼩的⼀个数作为下⼀轮循环的⼤数,取得的余数作为下⼀轮循环的较⼩的数,如此循环直到较⼩的数的值为0,返回8 * 较⼤的数,此数即为最⼩公约数,最⼩公倍数为两数之积除以最⼩公倍数。
9 *10 * @author yejin11 *12*/13public class CommonDiviser {14public static void main(String[] args) {15int a, b;16 Scanner s1 = new Scanner(System.in);17 Scanner s2 = new Scanner(System.in);18 a = s1.nextInt();19 b = s2.nextInt();20 CommonDiviser cd = new CommonDiviser();21int m = cd.division(a, b);22int n = a * b / m;23 System.out.println("最⼤公约数: " + m);24 System.out.println("最⼩公倍数: " + n);25 }2627public int division(int x, int y) {28int t;29if (x < y) {30 t = x;31 x = y;32 y = t;33 }3435while (y != 0) {36if (x == y)37return 1;38else {39int k = x % y;40 x = y;41 y = k;42 }43 }44return x;45 }46 }。
写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两。。。
写两个函数,分别求两个整数的最⼤公约数和最⼩公倍数,⽤主函数调⽤这两个函数,并输出结果。
两。
写两个函数,分别求两个整数的最⼤公约数和最⼩公倍数,⽤主函数调⽤这两个函数,并输出结果。
两个整数由键盘输⼈题⽬解析:该题直接使⽤“辗转相除法”来求解最⼤公约数和最⼩公倍数最⼤公约数找出两数中的最⼩值,然后直接相模,当能够同时被两数整除时,则为最⼤公约数。
最⼩公倍数找出两数中的最⼤值,然后直接进⼊死循环,直到找到⼀个数能够同时被两数整除时,则为最⼩公倍数【注】此题还有⼀些⽐较⾼级的解法,⽐如求最⼤公约数的相减法、欧⼏⾥德辗转相除法等,有兴趣的同学可以查询相关资料代码⽰例:#include<stdio.h>//最⼤公约数size_t GCD(size_t a, size_t b){size_t gcd;gcd = a > b ? b : a;while(gcd > 1){if((a % gcd == 0) && (b % gcd == 0))return gcd;gcd--;}return gcd;}//最⼩公倍数size_t LCM(size_t a, size_t b){size_t lcm;lcm = a > b ? a : b;while(1){if((lcm % a==0) && (lcm % b==0))break;lcm++;}return lcm;}int main(){size_t a, b, result;printf("请输⼊两个整数:>");scanf("%d %d", &a, &b);result = GCD(a, b);printf("%d和%d的最⼤公约数为:%d\n", a, b, result);result = LCM(a, b);printf("%d和%d的最⼩公倍数为:%d\n", a, b, result);return 0;}运⾏结果:。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言程序设计课程设计专业:电气工程及其自动化班级:电气1203姓名:熊董学号: 201209837指导教师:王思华兰州交通大学自动化与电气工程学院2013 年07月 20日1、基础题1.1题目编写函数,求取两个整数m,n的最大公约数和最小公倍数。
1.2题目分析求两个整数的最大公约数和最小公倍数可以用辗转相除法,用两个函数max 和min分别求出最大公约数和最小公倍数。
在主函数中输入两个整数m和n,并传递给函数max,求出最大公约数返回主函数并赋给整型变量h,然后h和两个整数m,n 一起作为实参传递给函数min,从而求出最小公倍数,返回主函数赋给l。
输出最大公约数和最小公倍数。
主函数:N-S图如图一max函数:N-S图如图二min函数:N-S图如图三图三min函数1.3源程序#include<stdio.h>int main(){ int max(int,int);int min(int,int,int);int m,n,h,l;scanf("%d,%d",&m,&n);h=max(m,n);printf("最大公约数是%d\n",h);l=min(m,n,h);printf("最小公倍数是%d\n",l);return 0;}int max(int m,int n){ int t,r;if(n>m);{t=m;m=n;n=t;}while((r=m%n)!=0){m=n;n=r;}return(n);}int min(int m,int n,int h){return(m*n/h);}1.4程序运行结果如图四:图四基础题运行截图2、改错题2.1题目#include <stdio.h> #include <conio.h> void fun(int a, b) {int t;t = b; b = a ; a = t; }main( ) {int a, b; clrscr( );printf("Enter a,b :"); scanf("%d%d", &a, &b); fun(&a, &b);printf("a=%d b=%d\n", a, b); }2.2题目分析该源程序的目的是交换两个数的值,有主函数可以看出该函数是应用指针交换两个数的值。
所以调用函数中的a,b 都要改成*a,*b, void fun(int a, b)改成void fun(int *a,int *b)。
clrscr( )只能在Turbo-C 中可用所以改用system("cls")。
viod fun 函数:N-S 图如图五 main 函数:N-S 图如图六图五viod fun 函数图六main 函数2.3正确的源程序#include <stdio.h>#include <conio.h>void fun(int *a, int *b){int t;t= *b;*b = *a ;*a = t;}main( ){int a, b;system("cls");printf("Enter a,b :");scanf("%d%d", &a, &b);fun(&a,&b);printf("a=%d b=%d\n", a, b);}2.4程序运行结果如图七:图七改错题运行结果截图3、综合题3.1题目设计课题四:猜数字游戏一、问题描述:该游戏可以由程序随机产生或由用户输入四个0到9之间的数字,且不重复。
玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。
A表示位置正确且数字正确,B表示数字正确而位置不正确。
二、功能要求:1.本游戏显示这样的菜单:(1)随机产生数据(2)用户输入数据(3)退出游戏2.游戏成功与否都能返回主菜单三、算法提示:1.数据结构:数组2.用简单的程序设计方法四、测试数据:测试数据:3792第一次输入:12340A2B第二次输入:56780A1B第三次输入:08670A1B第四次输入:97861A1B第五次输入:17942A0B第六次输入:27932A2B第七次输入:37924A0B游戏成功!!!五、其它:对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能,如:破记录功能,若你所匹配的次数小于纪录保持者,则为破纪录。
3.2题目分析本题要求做一个猜字游戏,其功能包括菜单、用户模式测试、随机产生数据进行游戏。
所以可以得知该游戏包括主函数、随机数产生函数、输入数字函数、游戏函数、测试数据输入函数。
首先通过主函数输出菜单并选择所要进行的模式,如果选择随机产生数据则调用随机数产生函数产生随机数,然后将产生的数据代入游戏函数进行游戏,游戏函数中进行游戏输入数据时调用输入数字函数输入数据;如果选择用户输入数据则调用测试数据输入函数输入数据,之后将输入的数据代入游戏函数中进行游戏,游戏函数中进行游戏输入数据时调用输入数字函数输入数据。
(1)系统的总体框图如图八图八系统的总体框图(2)函数间的调用关系如图九图九函数间的调用关系3.3流程图输入数字函数:如图十图十输入数字函数游戏函数:如图十一图十一游戏函数随机数产生函数:如图十二图十二随机数产生函数用户输入模式函数:如图十三图十三用户输入模式函数主函数:如图十四图十四主函数3.4源程序#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#include <time.h>void c_input(char *str){int i,j;input:for(i=0;i<4;i++){str[i]=getch();putchar(str[i]);}putchar('\n');for(i=0;i<4;i++){if(str[i]<'0'||str[i]>'9'){printf("无效输入,请重新输入:");goto input;}for(j=0;j<i;j++){if(str[i]==str[j]){printf("无效输入,请重新输入:");goto input;}}}}void c_game(const char *temp){int i,j,ci;char in[4];char out[5]="0A0B";for(ci=0;ci<8;ci++){printf("第%d 次输入:",ci+1);c_input(in);for(i=0;i<4;i++){if(in[i]==temp[i]){out[0]++;}else{for(j=0;j<4;j++){if(in[i]==temp[j]){out[2]++;}}}}printf("%s\n",out);if(strcmp(out,"4A0B")==0){printf("游戏成功,按下任意键返回主菜单。
");getch();return;}out[0]='0';out[2]='0';}printf("游戏失败,按下任意键返回主菜单。
"); getch();}void c_rand(){int i,j;char data[]="0123456789";char temp[4];system("cls");printf("**随机模式**\n\n");for(i=0;i<4;i++){j=rand()%(10-i);temp[i]=data[j];data[j]=data[10-i-1];}c_game(temp);}void c_printf(){char temp[4];system("cls");printf("**用户输入模式**\n\n"); printf("请输入测试数据:");c_input(temp);system("cls");printf("**用户输入模式**\n\n"); c_game(temp);}void main(){srand(time(NULL));while(1){system("cls");printf("(1) 随机产生数据\n"); printf("(2) 用户输入数据\n"); printf("(3) 退出游戏\n"); printf("choice : ");switch(getch()){case '1':c_rand();break;case '2':c_printf();break;case '3':exit(1);}}}3.5程序运行结果主菜单:如图十五图十五主菜单截图用户测试模式:如图十六图十六用户测试模式运行结果截图随机模式:如图十七图十七随机模式运行结果截图当输入的四个数字中有重复数字时:如图十八图十八当输入的四个数字中有重复数字时结果截图当选择退出后:如图十九图十九当选择退出后结果截图总结课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。
回顾起此次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。