输入两个正整数m和n,求最小公倍数,与最大公约数
- 格式:doc
- 大小:42.00 KB
- 文档页数:8
输入两个正整数,m和n,求其最大公约数和最小公倍数。
1. 输入两个正整数,m和n,求其最大公约数和最小公倍数。
2. 输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。
3. 输入一个正整数求出它是几位数;输出原数和位数。
4. 输入一个正整数,输出原数并逆序打印出各位数字。
5. 从键盘上输入若干学生的一门课成绩,统计并输出最高成绩和最低成绩及相应的序号,当输入负数时结束输入。
6. 从键盘上输入若干学生的一门课成绩,计算出平均分,当输入负数时结束输入。
将结果输出。
7. 求1!+2!+3!+……+20!,将结果输出。
8. 打印以下图案: ****************9. 打印以下图案:**********10. 求下列试子的值:1-1/2+1/3-1/4+……+1/99-1/100,将结果输出。
11. 打印出100,999之间的所有水仙花数。
12. 求S(Sn)=a+aa+aaa+…+aa…a之值,n,a由键盘输入。
n13. 打印以下图案:****************************14.打印以下图案:112112321123432115. 打印以下图案:123432112321121116.编写一个统计学生成绩程序,完成以下功能:输入4个学生的2门课成绩;求出全班的总平均分,将结果输出。
17. 打印以下图案:*************************18.给出年、月、日,计算该日是该年的第几天。
19.求一个3*3的整型矩阵对角线元素之和。
将原矩阵和求出的和输出。
20.求一个4*3的矩阵各行元素的平均值;将原矩阵和求出的平均值全部输出。
21.求一个3*4的矩阵各列元素的平均值;将原矩阵和求出的平均值全部输出。
22.求一个3*5的矩阵各列元素的最大值,将原矩阵和求出的最大值全部输出。
23.求一个4*3的矩阵各行元素的最大值,将原矩阵和求出的最大值全部输出。
24.求一个M*N的矩阵中元素的最大值,将原矩阵和求出的最大值全部输出。
输入整数m,n,求出m,n的最大公约数和最小公倍数 java循环语句嘿,咱今天就来好好唠唠这个输入整数 m 和 n,然后求出它们最大公约数和最小公倍数的事儿!这就好像是一场刺激的探险,咱得一步步解开这个谜团。
你想啊,m 和 n 就像是两个神秘的数字小伙伴,咱得想办法搞清楚它们之间的关系。
用 java 循环语句来解决这个问题,那就像是给我们配备了一把神奇的钥匙。
比如说,咱可以用一个循环从它们中间找出那些能同时整除 m 和 n 的数字,这可不就是在挖掘宝藏嘛!就像你在一堆乱石中寻找那颗最闪亮的宝石。
然后呢,把这些数字都收集起来,慢慢筛选出那个最大的公约数。
那最小公倍数呢,就像是给 m 和 n 搭建一个温暖的小窝,要找到一个最合适的数字,能同时包含它们俩。
这不就跟你找一个最合适的盒子来装两个宝贝一样嘛!咱来看看代码怎么写,下面就是一段示例代码:```javapublic class Main {public static void main(String[] args) {int m = 12;int n = 18;int gcd = findGCD(m, n);int lcm = findLCM(m, n);System.out.println("m 和 n 的最大公约数是:" + gcd); System.out.println("m 和 n 的最小公倍数是:" + lcm); }public static int findGCD(int m, int n) {int gcd = 1;for (int i = 1; i <= m && i <= n; i++) {if (m % i == 0 && n % i == 0) {gcd = i;}}return gcd;}public static int findLCM(int m, int n) {return m * n / findGCD(m, n);}}```看到没,就这么几行代码,就能解开 m 和 n 的秘密啦!这多有意思啊!所以啊,用java 循环语句来求m 和n 的最大公约数和最小公倍数,真的是超级有趣又实用的事儿。
输入两个正整数,m和n,求其最大公约数和最小公倍数。
1. 输入两个正整数,m和n,求其最大公约数和最小公倍数。
2. 输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。
3. 输入一个正整数求出它是几位数;输出原数和位数。
4. 输入一个正整数,输出原数并逆序打印出各位数字。
5. 从键盘上输入若干学生的一门课成绩,统计并输出最高成绩和最低成绩及相应的序号,当输入负数时结束输入。
6. 从键盘上输入若干学生的一门课成绩,计算出平均分,当输入负数时结束输入。
将结果输出。
7. 求1!+2!+3!+……+20!,将结果输出。
8. 打印以下图案: ****************9. 打印以下图案:**********10. 求下列试子的值:1-1/2+1/3-1/4+……+1/99-1/100,将结果输出。
11. 打印出100,999之间的所有水仙花数。
12. 求S(Sn)=a+aa+aaa+…+aa…a之值,n,a由键盘输入。
n13. 打印以下图案:****************************14.打印以下图案:112112321123432115. 打印以下图案:123432112321121116.编写一个统计学生成绩程序,完成以下功能:输入4个学生的2门课成绩;求出全班的总平均分,将结果输出。
17. 打印以下图案:*************************18.给出年、月、日,计算该日是该年的第几天。
19.求一个3*3的整型矩阵对角线元素之和。
将原矩阵和求出的和输出。
20.求一个4*3的矩阵各行元素的平均值;将原矩阵和求出的平均值全部输出。
21.求一个3*4的矩阵各列元素的平均值;将原矩阵和求出的平均值全部输出。
22.求一个3*5的矩阵各列元素的最大值,将原矩阵和求出的最大值全部输出。
23.求一个4*3的矩阵各行元素的最大值,将原矩阵和求出的最大值全部输出。
24.求一个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语言上机指导实验2数据类型、运算符和表达式1.实验目的掌握C语言数据类型,熟悉如何定义一个整形、字符型和实型的变量,以及对他们赋值的方法。
掌握不同的类型数据之间赋值的规律。
学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。
进一步熟悉C程序的编辑、编译、连接和运行的过程。
2.实验内容和步骤(2).在此基础上增加一个语句:printf(“%d%d\n”,c1,c2);再运行,并分析结果。
(3).再将第2行改为:int c1,c2;再使之运行,并观察结果。
(4).再将第3、4行改为:c1 = a; /* 不用单撇号*/c2 = b;再使之运行,分析其运行结果。
(5).再将第3、4行改为:c1 = ”a”; /* 用双撇号*/c2 = ”b”;再使之运行,分析其运行结果。
(6).再将第3、4行改为:c1 = 300; /* 用大于255的整数*/c2 = 400;再使之运行,分析其运行结果。
输入并运行教材第3章习题3.6给出的程序(1).将一个负整数赋给一个无符号的变量,会得到什麽结果。
画出它们在内存中的表示形式。
(2).将一个大于32765的长整数赋给整形变量,会得到什麽结果。
画出它们在内存中的表示形式。
(3).将一个长整数赋给无符号的变量,会得到什麽结果(分别考虑该长整数的值大于或等于65535 以及小于65535 的情况)。
画出它们在内存中的表示形式。
同学们可以改变程序中各变量的值,以便比较。
例如:a = 65580, b = -40000,e = 65535,f = 65580。
(2).将第4、5行改为:m = i++;n = ++j;再运行。
printf(“%d,%d”, ++i, ++j);(5).再将printf 语句改为:printf(“%d,%d,%d,%d”, i, j, i++, j++);该题的要求是:要将”China”译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母。
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 程序的主要功能通过该系统实现对通讯录信息进行录入、显示、修改、删除、排序、保存等操作的管理。
习题2参考答案一、基础题1.若二维数组a有m列,则在a[i][j]前的元素个数为:A)j*m+i B)i*m+jC)i*m+j-1 D)i*m+j+1B2.在C语言中(以16位PC机为例),五种基本数据类型存储空间长度的排列顺序是:A) char<int<long int<=float<doubleB) char=int<long int<=float<doubleC) char<int<long int=float=doubleD) char=int=long int<=float<doubleA3.在C语言的变量类型说明中,int,char,float等类型的长度是:A) 固定的B) 由用户自己定义的C) 任意的D) 与机器字长有关的D4. 设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f的数据类型是:A) int型B)float型C) double型D)不确定C5.C语言中的变量名只能由字母,数字和下划线三种字符组成,且第一个字符:A) 必须为字母B) 必须为下划线C) 必须为字母或下划线D) 可以是字母,数字或下划线中的任意一种C6.设a=1,b=2,c=3,d=4,则表达式a<b?a:c<d?a:d的值是:A) 4 B) 3 C) 2 D) 1D7.以下程序的输出结果是:main(){ int a=12, b=12;printf("%d,%d\n",--a,++b);}A) 10,10 B) 12,12 C) 11,10 D) 11,13D8.若有代数式(3ae)/(bc),则下面不正确的C语言表达式是:A) a/b/c*e*3 B) 3*a*e/b/c C) 3*a*e/b*c D) a*e/c/b*3C9.已知x=43,ch='A',y=0,则表达式(x>=y&&ch<'B'&&!y)的值是:A) 0 B) 语法错C) 1 D) "假"C10.下面程序的输出结果是:main(){ int a=-1, b=4, k;k=(a++<=0)&&(!(b--<=0));printf("%d,%d,%d\n",k,a,b);}A) 1,1,2 B) 1,0,3 C) 0,1,2 D) 0,0,3B11.已知字母A的ASCII码为十进制的65,下面程序的输出是:main(){ char ch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf("%d,%c\n",ch1,ch2);}A) 67,D B) B,C C) C,D D) 不确定的值A12.下面程序的输出的是main(){ int x=10,y=3;printf("%d\n",y=x/y);}A) 0 B) 1 C) 3 D) 不确定的值C二、程序设计题1.从键盘上输入一个小写字母,编程输出其对应的大写字母以及它们的十进制ASCII码。
求两个整数m,n的最大公约数,m和n由键盘输入.最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。
求两个正整数m和n的最大公约数可用欧几里德算法(辗转相除法)。
main(){int p,r,n,m,temp;printf("please enter 2 numbers n,m:");scanf("%d,%d",&n,&m);//输出两个正整数.if(n\ucm)//把大数放在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);列印最轻公倍数.原理用欧几里德算法(只身二者乘法)谋两个数的最大公约数的步骤如下:先用小的一个数除大的一个数,得第一个余数;再用第一个余数除大的一个数,得第二个余数;又用第二个余数除第一个余数,得第三个余数;这样逐次用后一个数除去前一个余数,直至余数就是0年才。
那么,最后一个除数就是所求的最大公约数(如果最后的除数就是1,那么原来的两个数就是互质数)。
由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。
这就是说,求两个数的最小公倍数,可以先求出两个数的最大公约数,再用这两个数的最大公约数去除这两个数的积,所得的商就是两个数的最小公倍数。
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 程序的主要功能通过该系统实现对通讯录信息进行录入、显示、修改、删除、排序、保存等操作的管理。
java第一次作业题目2021版1. 题目:从键盘上输入两个正整数m和n,求其最大公约数和最小公倍数,必须判断输入数的正确性(比如非正整数等必须提示)。
[选题人数:3] 2. 题目:给出一个月的总天数编写程序,提示用户输入月份和年份,然后显示这个月的天数。
例如,如果用户输入的月份是2而年份是2000,那么程序应显示“2000年2月有29天”。
如果用户输入的月份为3而年份为2021,那么程序就应该显示“2021年3月有31天”。
(提示:必须判断是否是闰年) [选题人数:3]3. 题目:计算一个三角形的周长编写程序,提示用户从键盘输入三角形的三条边,如果输入值合法就计算这个三角形的周长,否则,显示这些输入值不合法(如果任意两条边的和大于第三条边,那么输入值都是合法的)。
[选题人数:3] 4. 题目:奖金发放问题企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?[选题人数:3]5. 题目:打印金字塔形的数字编写一个嵌套的for循环,打印下面的输出。
1 2 1 1 2 4 2 1 1 2 4 8 4 2 1 1 2 4 8 168 4 2 11 2 4 8 16 32 16 8 4 2 11 2 4 8 16 32 64 32 16 8 4 2 11 2 4 8 16 32 64 128 64 32 16 8 4 2 1[选题人数:2] 6. 题目:十进制转换成二进制或十六进制编写程序,从键盘上输入一个十进制整数,然后显示对应的二进制值或十六进制值。
C语言是一种广泛应用的编程语言,用于开发各种软件和应用程序。
在C语言中,我们经常需要对整数进行一些基本的数学运算,比如求最大公约数和最小公倍数。
本文将介绍在C语言中如何求两个整数的最大公约数和最小公倍数。
1. 求最大公约数:最大公约数,又称最大公因数,是指能够整除给定整数的最大正整数。
在C语言中,我们可以使用辗转相除法来求两个整数的最大公约数。
下面是一个求最大公约数的C语言程序示例:```c#include <stdio.h>int gcd(int a, int b) {if (b == 0) {return a;} else {return gcd(b, a b);}}int m本人n() {int num1, num2;printf("请输入两个整数:");scanf("d d", num1, num2);printf("最大公约数为:d\n", gcd(num1, num2));return 0;}```在上面的示例中,我们定义了一个名为gcd的函数来求最大公约数。
该函数使用递归的方式实现了辗转相除法,直到找到最大公约数为止。
在m本人n函数中,我们首先输入了两个整数,然后调用gcd函数来求它们的最大公约数。
将最大公约数输出到屏幕上。
2. 求最小公倍数:最小公倍数是指能够被给定整数整除的最小正整数。
在C语言中,我们可以通过最大公约数来求最小公倍数。
这是因为两个整数的最小公倍数等于它们的乘积除以最大公约数。
下面是一个求最小公倍数的C语言程序示例:```c#include <stdio.h>int lcm(int a, int b) {return a * b / gcd(a, b);}int m本人n() {int num1, num2;printf("请输入两个整数:");scanf("d d", num1, num2);printf("最小公倍数为:d\n", lcm(num1, num2));return 0;}```在上面的示例中,我们定义了一个名为lcm的函数来求最小公倍数。
输入两个正整数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;}printf("Greatest common divisor: %d\n", n_cup);printf("Lease common multiple : %d\n", m * n / n_cup);}else printf("Error!\n");return 0;}★关于辗转相除法, 搜了一下, 在我国古代的《九章算术》中就有记载,现摘录如下: 约分术曰:“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。
以等数约之。
” 其中所说的“等数”,就是最大公约数。
求“等数”的办法是“更相减损”法,实际上就是辗转相除法。
辗转相除法求最大公约数,是一种比较好的方法,比较快。
对于52317和75569两个数,你能迅速地求出它们的最大公约数吗?一般来说你会找一找公共的使因子,这题可麻烦了,不好找,质因子大。
第一周作业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个整数排序。
第四章4.1统计全单位人员的平均工资,单位人数不固定,工资数从键盘先后输入,当输入-1时表示输入结束。
//程序1 用if语句#include<stdio.h>int main(){ int n=0;float gz=0,sum=0,pj;printf("请输入职工工资(数据用空格分隔,输入-1结束输入):\n");while(gz!=-1){scanf("%f",&gz);if(gz==-1)break;sum=sum+gz;n++;}pj=sum/n;printf("平均工资是:%10.2f\n",pj);return 0;} //注意,如gz定义成double(双精度),则输入数据后要用加.0,如最后的-1要用-1.0的形式输入,否则出错。
4.2 一个单位下设三个班组,每个班组人数不固定。
需要统计每个班组的平均工资。
分别输入三个班组所有职工工资,当输入-1时,表示该班组的输入结束。
输入出班组号和该班组的平均工资#include<stdio.h>int main (){int gz,i,n;float sum,pj;for(i=1;i<=3;i++){/*外循环控制班组序号*/n=0;gz=0;sum=0;printf("请输入第%d组的职工工资(数据用空格分隔,输入-1结束输入):\n",i);while(gz!=-1){ /*内循环计算班组平均工资*/scanf("%d",&gz);if(gz==-1)break;/*判断是输入结束标识,则跳出循环,数据不累加,也不记人数*/sum=sum+gz;n++;}pj=sum/n; /*根据工资累加数和总人数求平均值*/printf("第%d组的平均工资是:%10.2f\n",i,pj);}return 0;}4.3百元买百鸡:公鸡每只值5元,母鸡每只值3元,小鸡3只值1元。
JAVA经典算法题目(含答案)【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....publicclae某p2{publictaticvoidmain(Stringarg[]){inti=0;for(i=1;i<=20;i++)Sytem.out.println(f(i));}publictaticintf(int某){if(某==1||某==2)return1;elereturnf(某-1)+f(某-2);}}或publicclae某p2{publictaticvoidmain(Stringarg[]){inti=0;mathmymath=newmath();for(i=1;i<=20;i++)Sytem.out.println(mymath.f(i));}}clamath{publicintf(int某){if(某==1||某==2)return1;elereturnf(某-1)+f(某-2);}}【程序2】题目:打印出所有的\水仙花数\,所谓\水仙花数\是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个\水仙花数\,因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
publicclae某p2{publictaticvoidmain(Stringarg[]){inti=0;mathmymath=newmath();for(i=100;i<=999;i++)if(mymath.hui某ianhua(i)==true)Sytem.out.println(i);}}clamath{publicintf(int某){if(某==1||某==2)return1;elereturnf(某-1)+f(某-2);}publicbooleanizhihu(int某){for(inti=2;i<=某/2;i++)if(某%2==0)returnfale;returntrue;}publicbooleanhui某ianhua(int某){inti=0,j=0,k=0;i=某/100;j=(某%100)/10;k=某%10;if(某==i某i某i+j某j某j+k某k某k)returntrue;elereturnfale;}}【程序3】题目:判断101-200之间有多少个素数,并输出所有素数。
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语言课程设计专业:电气工程及其自动化班级:电气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 程序的主要功能通过该系统实现对通讯录信息进行录入、显示、修改、删除、排序、保存等操作的管理。
第一周作业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个整数排序。
#include<stdio.h>#include<malloc.h>void print(int *a,int n);void paixu(int *a,int n);void main(){int a[10];int i;printf("请输入10个整数:");for(i=0;i<10;i++)scanf("%d",&a[i]);paixu(a,i);//排序print(a,i);//输出}int swap(int *a,int *b)//交换{int t;t=*a;*a=*b;*b=t;}//冒泡排序,从大到小void paixu(int *a,int n){int i,j=0,k;printf("==========从大到小排序后=========\n");for(i=0;i<n-1;i++){for(j=1;j<n-i;j++)if(a[j-1]<a[j])swap(&a[j],&a[j-1]);}}void print(int *a,int n){int i;for(i=0;i<n;i++)printf("%d ",*(a+i));printf("\n");}2、用数组求Fibonacci数列前20个数。
#include<stdio.h>void main(){int i;int f[20]={1,1};for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1];for(i=0;i<20;i++){if(i%5==0)printf("\n");printf("%10d",f[i]);}printf("\n");}第三周作业11、求两个正整数的最大公约数和最小公倍数,用一个函数求最大公约数。
用另一个函数根据求出的最大公约数求最小公倍数。
#include<iostream>using namespace std;int greatest_c_divisor(int x,int y); //求最大公约数int least_c_multiple(int x,int y,int gcd); //求最小公倍数int main(){int x,y,gcd,lcm;cout<<"请输入两个正整数"<<endl;cin>>x>>y;gcd=greatest_c_divisor(x,y);lcm=least_c_multiple(x,y,gcd);cout<<"这两个数的最大公约数是"<<gcd<<"\n这两个数的最小公倍数是"<<lcm<<endl;}int greatest_c_divisor(int x,int y){int gcd;x>y?gcd=y:gcd=x; //两个数中的最小值 for(;x%gcd!=0||y%gcd!=0;gcd--);return gcd;}int least_c_multiple(int x,int y,int gcd){int lcm;lcm=x*y/gcd;return lcm;}2写一函数,用起泡法对输入的10个字符按从小到大顺序排列。
#include <stdio.h>void main(){int i, j, temp;int element[10];int *start, *end;printf("\n请输入10个数:\n ");for(i = 0;i < 10;i++){scanf("%d", &element[i]);}start = element; /* start 指针指向数组的第一个元素 */end = element + 10; /* end 指针指向数组的最后一个元素 */ printf("\n原始数组:\n");/* 输出原始数组 */for(;start < end;start++){printf("%d ", *start);}printf("\n\n排序后的数组:\n");/* 输出排序后的数组 */start=element;for(i = 10;i > 0;i--){for(j = 10 - i;j > 0;j--){if(*(start + j-1) > *(start+j)){temp = *(start + j-1);*(start + j-1) = *(start+j);*(start+j) = temp;}for(start = element;start < end;start++){printf("%d ", *start);}printf("\n");}第四周作业1、将数组a中的n个整数按相反顺序存放。
(要求用指针做)void inv(int *a, int n){int tmp;int i, j = n - 1;for (i = 0; i < j; i++) {tmp = *(a+i);*(a+i) = *(a+j);*(a+j) = tmp;j--;}}2输入3个学生各学4门课,计算总平均分,并查找一门以上课程不及格的学生,输出其各门课成绩。
(要求用指针做)#include "stdio.h"#include "stdlib.h"struct student{char name[10];int chinese;int english;int shuxue;int lishi;int sum;float avg;};void main(){struct student a[3];int i,j,k;for(i=0;i<3;i++){scanf("%s%d%d%d%d",a[i].name,&a[i].chinese,&a[i].english,&a[i].shuxue ,&a[i].lishi);a[i].sum=a[i].chinese+a[i].english+a[i].shuxue+a[i].lishi;a[i].avg=(a[i].chinese+a[i].english+a[i].shuxue+a[i].lishi)/3;}printf("\n");for(i=0;i<3;i++){if(a[i].chinese<60||a[i].english<60||a[i].shuxue<60||a[i].lishi<60) {printf("%s chinese:%d english:%d shuxue:%d lishi:%d sum:%d avf%.2f\n",a[i].name,a[i].chinese,a[i].english,a[i].shuxue,a[i].lishi ,a[i].sum,a[i].avg);}}}第五周作业1、编写一个函数input,用来输入5个学生的数据记录,再编写一个函数output,用来输出5个学生的数据记录,每个记录包括学号、姓名和3门课成绩。
下周1之前把写好的程序文件传回来给我(要求用结构体做)#include<stdio.h>struct men{int num;char name[8];char sex[8];float score;}boy[5];void input(){int i;for(i=0;i<5;i++){printf("Input the number:\n");scanf("%d",&boy[i].num);printf("Input the name:\n");scanf("%s",boy[i].name);printf("Input the sex:\n");scanf("%s",boy[i].sex);printf("Input the score:\n");scanf("%f",&boy[i].score);}}void output(){int i;for(i=0;i<5;i++){printf("NUM\t\t\tNAME\t\t\tSEX\t\t\tSCORE\n"); printf("%d\t\t\t",boy[i].num);printf("%s\t\t\t",boy[i].name);printf("%c\t\t\t",boy[i].sex);printf("%.2f\n\n",boy[i].score);}}int main(){void input();void output();input();output();return (0);}。