C 语言 求任意两个数的最大值 分支
c语言求最大公约数算法

c语言求最大公约数算法最大公约数(gcd,又称最大公因数、最大公因子、最大公测量、最大公公约)指的是两个或多个整数共有约数中最大的一个。
在数学里面,求最大公约数是很常见的问题。
在计算机科学中,求最大公约数也是一个经典的算法问题。
而C语言作为一门流行的编程语言,也提供了多种方法来求解最大公约数。
下面将介绍四种常见的求最大公约数的算法:欧几里德算法、辗转相除法、更相减损法和迭代法。
1.欧几里德算法欧几里德算法(Euclidean algorithm)是一种辗转相除法,用于求两个正整数的最大公约数。
它基于以下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。
具体的算法如下:```cint gcd(int a, int b) {if (b == 0) {return a;} else {return gcd(b, a % b);}}```该算法使用递归的方式求解最大公约数,当b等于0时,a即为最大公约数;否则递归调用gcd函数,传入参数b和a mod b。
2.辗转相除法辗转相除法(也称作长除法)是一种用于求两个正整数的最大公约数的算法。
它的基本思想是:用较大的数除以较小的数,然后再用除数除以余数,依次循环,直到余数为0为止。
最后一个除数即为最大公约数。
具体的算法如下:```cint gcd(int a, int b) {while (b != 0) {int temp = b;b = a % b;a = temp;}return a;}```该算法使用循环的方式求解最大公约数,直到b等于0为止。
每次循环将b和a mod b的值赋给a和b,直到b等于0,此时a即为最大公约数。
3.更相减损法更相减损法是一种古老的求最大公约数的方法,其基本思想是:用两个数中较大的数减去较小的数,然后用得到的差与原较小的数继续相减,直到得到结果为止。
最后的结果就是最大公约数。
具体的算法如下:```cint gcd(int a, int b) {while (a != b) {if (a > b) {a -= b;} else {b -= a;}}return a;}该算法使用循环的方式求解最大公约数,直到a等于b为止。
C语言程序设计 选择控制结构(5.1.2)--5.1节-5.8节

3 main()
4{
5
float data1, data2;
6
char op;
7
printf("Please enter the expression:\n");
8
scanf("%f %c%f", &data1, &op, &data2); /* %c前有一个空格 */
9
switch (op)
10
{
2 main()
3{
4
int a, b, max;
5
printf("Input a, b:");
6
scanf("%d,%d", &a, &b);
7
max = a > b ? a : b;
8
printf("max = %d\n", max);
9}
/* 用条件表达式计算两整数的最大值* /
【例题解析】相比于前两种的方法而言,本例使用条件表达式的方法编写的程序更简洁。
Invalid operator!
【例题解析】用 default 标号后的语句来处理输入非法运算符的情况,使程序不仅对用户
正确的输入数据进行运算外,还对错误的输入数据进行错误处理,从而保证了程序的健壮
性。每个 case 后的常量值必须互不相同,出现次序发生改变时,不影响程序的运行结果,
但从执行效率角度考虑,一般将发生频率高的情况放在前面。 程序第 12、15、18、28 行的
9
printf("max = %d\n", max);
10 }
程序的运行结果如下:
919144-C语言程序设计教程——面向计算思维和问题求解-第4章-新

if (y > max)
/*如果y > max,则把y赋给max*/
max = y;
printf ("max=%d\n", max); /*输出max的值*/
}
4.3.1 if语句
运行结果:程序运行时若输入:59↙,结果如下图。
4.3.2 if-else语句
if-else语句用于双分支选择结构。根据条件的判定结果,选 择执行两种操作中的一种。if-else语句的基本格式如下:
4.2.2 逻辑运算及其表达式
同样,对于逻辑表达式:(表达式1) || (表达式2),如果表达 式1的值为1,直接得出整个表达式的值也为1,而不再计算表达 式2的值。
if条件语句一般用于只有两种选择的情况。满足判定条件 执行一种操作,否则执行另一种操作。对if条件语句进行嵌套, 可以处理多种选择情况。
4.3.2 if-else语句
问题分析:目前只需要对动物分成两类。依题意,分类的条件 应为 “动物有毛发,且分泌乳汁”,条件为真时输出“是哺乳 动物”;否则输出“是鸟”。 算法设计:本例算法简单,采用if-else语句可实现该功能。算法 流程图略。
/*输出面积,保留两位小数*/
}
else
/*否则*/
printf ("构不成三角形\n");
/*输出“构不成三角形”*/
}
4.3.2 if-else语句
运行结果:程序运行时若输入345↙,结果如下图所示。
4.3.2 if-else语句 例4-5 用if-else语句求两个整数中的最大值。
问题分析:在例4-3中用if语句求出了两个整数中的最大值,实 现这一功能也可以采用if-else语句。方法是:比较两个变量x和y 的值,如果x>y则输出x,否则输出y。
C语言基础入门选择结构-if语句

printf("%d是奇数\n",number); } printf("程序结束"); //输出 }
开始
定义变量 number
输如一个 数
number%2==0 真
偶数
假 奇数
程序结束 结束
课堂编程
输入一个年份,判断该年份是否是闰年,如果是闰年,提示”该年 份是闰年“,否则提示”该年份不是闰年“ 提示:闰年条件: 1、能被4整除,但是不能被100整除,如2008年是闰年, 2100是平年 2、或者能被400整除,如2000年是闰年
void main()
{
int number; //定义变量
printf("请输入一个数:");
scanf("%d",&number); //输入
if(number%2==0)
//判断
{
printf("%d是偶数\n",number);
}
printf("程序结束");
//输出
}
if选择结构应用三
开始
要求: 1、画程序流程图 2、使用if-else双分支结构完成代码
学生练习5分钟
if-else双分支选择结构应用四 用户购买某商品,输入购买的数目,如果库存不足提示“抱歉,没有足够
的库存”,否则提示“购买成功” 。最后输出剩余的库存数。
双购分支买选成择功结构的:条if-件else
(sum-sale>=0) 购买成功的条件:目前库存数-用户购买的数目
第9单元
选择结构—if语句
用c语言求输入两个数中的较大者

求两个整数中的较大者:
#include <stdio.h> //主函数
int main() //主函数体开始
{
int max(int x,int y); //对被调用函数max的声明
int a,b,c; //定义变量a,b,c
scanf("%d,%d",&a,&b); //输入变量a和b的值
c=max(a,b); //调用max函数,将得到的值赋给c
printf("max=%d\n",c); //输出c的值
return 0; //返回函数值为0
} //主函数体结束
//求两个整数中的较大者的max函数
int max(int x,int y) //定义max函数,函数值为整型,形式参数x和y为整型{
int z; //max函数中的声明部分,定义本函数中用到的变量z为整型
if(x>y)z=x; //若x>y成立,将x的值赋给变量z
else z=y; //否则(及x>y不成立),将y的值赋给变量z
return(z); //将z的值作为max函数值,返回到调用max函数的位置
}。
c语言程序设计-求两个数最大公约数

1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数, 并输出结果。
这两个数由键盘输入。
程序设计:#include<stdio.h>int hcf(int x,int y){int t;if(xvy){t=x;x=y;y=t;} while((t=x%y)!=0){x=y;y=t;}return y;} int lcf(int x,int y,int m){return x*y/m;}int main(){int hcf(int,int);int lcf(int,int,int);int x,y,h,l;printf("请输入两个数:"); scanf("%d%d",&x,& y);h=hcf(x,y);l=lcf(x,y,h);printf("最大公约数为:h=%d\n最小公倍数为:l=%d\n",h,l); return 0; }运行结果:2求方程ax A2+bx+c=0的根,用3个函数分别求当:b A2-4ac大于0、等于0和小于0时的根并输出结果。
从主函数输入a,b, c的值。
程序设计:#include<stdio.h>#include<math.h>void g_two(double a,double b,double c) {double x1,x2;x1=(-b+sqrt(b*b-4*a*c))/(2*a); x2=(-b-sqrt(b*b-4*a*c))/(2*a);printf("方程的两个根为:x仁%f\nx2=%f\n",x1,x2); }void g_one(double a,double b,double c){double x;x=(-b)/(2*a);printf("方程的两个根为:x1=x2=%f\n",x);}void g_zone(double a,double b,double c){printf("无解\n");}void main(){void g_two(double,double,double);void g_one(double,double,double);void g_zone(double,double,double); double a,b,c,t;printf("请输入a、b、c 的值:"); scanf("%lf%lf%lf", &a,&b,& c); t=b*b-4*a*c;if(t>0)g_two(a,b,c);else if(t==0)g_one(a,b,c);elseg_zone(a,b,c);}运行结果:3.写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。
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语言程序设计》上机考试题库2019年6月一、顺序结构1. 从键盘输入矩形的长和宽,计算并在屏幕上显示该矩形的周长。
2. 输出学生成绩训练:本程序需要输出学生成绩:学生成绩包括学号、姓名以及各科成绩、总分和平均成绩。
首先定义字符型数组存放学生的姓名和学号,再定义多个实型变量用来存放学生各科成绩,最后利用输出变量值的方式来输出各科成绩,直接输出表达式值的方式来输出总分和平均分。
3. 从键盘上输入一个字符,如果它是大写字母,则把它转换成小写字母输出,否则,直接输出。
4.输入一个华氏温度,要求输出摄氏温度。
公式为:c=5/9(F-32)。
输出要有文字说明,取两位小数。
5. 编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。
6.编写程序,输入两个整数:1500和350,求出它们的商和余数并进行输出。
7.编写程序,读入三个整数给a、b、c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中原来的值给a,然后输出a、b、c。
8.输入一个三位正整数,将它反向输出。
(比如输入536,输出635.)9.小瑜是个爱吃糖果的馋鬼,天天嚷着要爸爸买糖果,可是爸爸很忙,哪有时间啊,于是就让小瑜自己去了,糖果3角钱一块,爸爸给小瑜n元钱,请你告诉小瑜最多能买几块糖,还剩几角钱?10.给出三个整数(键盘输入),请你设计一个程序,求出这三个数的和、乘积和平均数。
输出一行,包括三个的和、乘积、平均数。
数据之间用一个空格隔开,其中平均数保留小数后面两位。
11.从键盘上输入圆柱体的底面半径r和高h,计算圆柱体底面周长和面积、圆柱体侧面积以及圆柱体体积。
其中圆周率定义为3.1415926。
12.编写一程序,读入一数字字符('0'~'9'), 并把其转换为相应的整数后显示出来。
13.根据输入的三角形的三条边a、b、c,计算并输出面积。
三角形面积计算公式:area=√s(s−a)(s−b)(s−c),其中s=(a+b+c)/2。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 输入一个字符,若是字母则输出“YES !”(JP48-6)main (){ char ch;clrscr();printf("enter char ch=?");scanf("%c",&ch);if (ch>='A' && ch<='Z' || ch>='a' && ch<='z')printf("yes !");}2.求任意两个数的最大值。
(分支程序) (例1-3-151)main(){ int a,b,c;clrscr();printf("a,b=?");scanf("%d,%d",&a,&b); /* 从键盘上临时输入a,b 的值 */ if (a>b) c=a; /* 调用求最大值的函数 max */else c=b;printf("max=%d\n",c); /* 输出 a 和 b 的最大值 c */}3. 调用求最大值的函数,求任意两个数的最大值。
(例1-3-152)main(){ int a,b,c;clrscr();printf("a,b=?");scanf("%d,%d",&a,&b); /* 从键盘上临时输入a,b 的值 */ c=max(a,b); /* 调用求最大值的函数 max */ printf("max=%d\n",c); /* 输出 a 和 b 的最大值 c */ }int max(x,y) /* 定义函数 max 为整型 */int x,y; /* 定义形式参数 x,y为整型 */{ int c;if (x>y) c=x; /* 求 x,y 的最大值 */else c=y;return (c);}4.求三个数中的最大数(4-3-1325)main(){ float a,b,c;clrscr();printf(“enter float a,b,c=?”);scanf(“%f,%f,%f”,&a,&b,&c);if (a>b)if (a>c) printf(“a=%f is the largest number !”,a);else printf(“c=%f is the largest number !”,c); /*a>b的情况下*/ else if (b>c) printf(“b=%f is the largest number !”,b); /*b>a的情况下*/ else printf(“c=%f is the largest number !”,c);}5.三个数从小到大排序运行该程序:Ctrl F9main () (4-3-13242)x,y,z=?3,-5,9{ float x,y,z,t; x=3.000000 y=-5.000000 z=9.000000printf("x,y,z=?"); -5.000000 3.000000 9.000000scanf("%f,%f,%f",&x,&y,&z);printf("x=%f\ty=%f\tz=%f\n",x,y,z);if (x>y){ t=x; x=y; y=t;}if (y<z) printf("%f\t%f\t%f\n",x,y,z);else if (x<z) printf("%f\t%f\t%f\n",x,z,y);elseprintf("%f\t%f\t%f\n",z,x,y);}6.三个数从大到小排序。
运行该程序:Ctrl F9main () (4-3-13241)x,y,z=?3,-5,9{ float x,y,z,t; x=3.000000 y=-5.000000 z=9.000000printf("x,y,z=?"); 9.000000 3.000000 -5.000000scanf("%f,%f,%f",&x,&y,&z);printf("x=%f\ty=%f\tz=%f\n",x,y,z);if (x<y) {t=x; x=y; y=t;} /* x>y */if (y>z) printf("%f\t%f\t%f\n",x,y,z); /*在x>y */else if (x>z) printf("%f\t%f\t%f\n",x,z,y); /* 在y最小*/elseprintf("%f\t%f\t%f\n",z,x,y); }7.输入三个数,将它们从大到小排序(4-3-333)main () Ctrl F9{ float a,b,c,max,min,m; clrscr(); a,b,c=?-10,9,6printf("a,b,c=?"); a=-10.000000 b=9.000000 c=6.000000scanf("%f,%f,%f",&a,&b,&c); 9.000000 6.000000 -10.000000printf(“a=%f\tb=%f\tc=%f\n”,a,b,c);max=(a>b)?a:b;max=(max>c)?max:c;min=(a<b)?a:b;min=(min<c)?min:c;m=a+b+c-max-min;printf("%f\t%f\t%f\n",max,m,min);}8.根据学生的成绩score,按分数分段评定等级“A ~E”如果分数 < 0或分数>100则输出“输入的成绩有错”的信息。
(4-3-1321)main(){ float score;clrscr();printf(“enter float score=?”);scanf(“%f”,&score);if (score>100 || score<0) printf(“ENTER score ERROR !\n” )else if (score>=90) printf(“score=%d\t\tA\n”,score);else if (score>=80) printf(“score=%d\t\tB\n”,score);else if (score>=70) printf(“score=%d\t\tC\n”,score);else if (score>=60) printf(“score=%d\t\tD\n”,score);else printf(“score=%d\t\tE\n”,score);}9.100制转换为五级记分制: (4-4-123)main (){ int x,sn;printf("int x (0--100) =?");scanf("%d",&x);if (x<0 || x>100) printf(“data error!\n”)else if (x<60) sn=0else{ sn=x/10-5;switch (sn){ case 1 : printf("x=%d\t pass\n",x);break;case 2 : printf("x=%d\t good\n",x);break;case 3 : printf("x=%d\t better\n",x);break;case 4 : printf("x=%d\t best\n",x);break;case 5 : printf("x=%d\t best\n",x);break;default : printf("x=%d\t fail\n",x);}}}10. 下面程序找出数组a中的最小元素。
main ( ){ int a [ ] = { 4,3,1 ,-7,10 ,12 , -2 , 6 , 9 , 25 }int i , min ;min = _____ a[0] ______ ;for ( i = 1 ; i < 10 ; i + + ) if ( ____ a[i]<min ___ ) min = a [ i ] ;printf ( “ min data is %d \n” , min ) ;}11. 下面程序找出数组a中的最大元素。
main ( ){ int a [ ] = { 4,3,1 ,-7,10 ,12 , -2 , 6 , 9 , 25 }int i , max ;max = _____a[0]______ ;for ( i = 1 ; i < 10 ; i + + ) if ( _a[i]>max____ ) max = a [ i ] ;printf ( “ m ax data is %d \n” , m ax ) ;}。