C++(完数、水仙花数)

合集下载

C语言求21位水仙花数

C语言求21位水仙花数

/*(编程题)花朵数一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数。

例如:当N=3时,153就满足条件,因为1^3 + 5^3 + 3^3 = 153,这样的数字也被称为水仙花数(其中,“^”表示乘方,5^3表示5的3次方,也就是立方)。

当N=4时,1634满足条件,因为1^4 + 6^4 + 3^4 + 4^4 = 1634。

当N=5时,92727满足条件。

实际上,对N的每个取值,可能有多个数字满足条件。

程序的任务是:求N=21时,所有满足条件的花朵数。

注意:这个整数有21位,它的各个位数字的21次方之和正好等于这个数本身。

如果满足条件的数字不只有一个,请从小到大输出所有符合条件的数字,每个数字占一行。

因为这个数字很大,请注意解法时间上的可行性。

要求程序在3分钟内运行完毕。

*//*本程序比较容易理解。

执行时间40秒左右(P6100处理器,2G内存,WIN7系统)。

思路:任何一个水仙花数,比如153=1^3+5^3+3^3,里面包括1个1,1个5,1个3。

如果是513,315,351这样的数字……,虽然这几个不是水仙花数,但这几个数字中1,3,5出现的次数和水仙花数是一样的……那么513,315,351这些数字,每位上数字的和应该就是水仙花数。

如果是从1000……-9999……的枚举法,我想问题肯定大了。

而如果采用上面的方法,这样的话,采用对数字出现次数进行枚举会让程序加快很多。

*/#include <stdio.h>#include <time.h>int num_time[10]={0}; //num_time[10]用来得到0-9数字出现的个数int sum[10][21]={(0,0)},sumc[10][21]={(0,0)}; //sum数组用来计算出0-9的21次方。

sumc用来计算数字出现次数*它的21次方int count=0; //计算得到几个水仙花数了,得到2个以后就结束程序void initProgramm() //这个函数用来获得0-9的21次方,存在sum数组里{int i,j,k;for(i=0;i<10;i++)sum[i][20]=i;for(k=2;k<10;k++){for(i=1;i<21;i++){for(j=20;j>=0;j--){sum[k][j]*=k;}for(j=20;j>0;j--){sum[k][j-1]+=sum[k][j]/10;sum[k][j]%=10;}}}}void check(int i0,int i1,int i2,int i3,int i4,int i5,int i6,int i7,int i8,int i9) //检测数字是不是水仙花数{int i,j;int getAdd[21]={0};for(j=0;j<21;j++) //把数字出现次数*它的21次方{sumc[1][j]=sum[1][j]*i1;sumc[2][j]=sum[2][j]*i2;sumc[3][j]=sum[3][j]*i3;sumc[4][j]=sum[4][j]*i4;sumc[5][j]=sum[5][j]*i5;sumc[6][j]=sum[6][j]*i6;sumc[7][j]=sum[7][j]*i7;sumc[8][j]=sum[8][j]*i8;sumc[9][j]=sum[9][j]*i9;}for(i=0;i<10;i++) //进位for(j=20;j>0;j--){sumc[i][j-1]+=sumc[i][j]/10;sumc[i][j]%=10;}for(i=0;i<10;i++) //得到一个数每位的21次方的和,就是把sumc叠加起来for(j=20;j>=0;j--)getAdd[j]+=sumc[i][j];for(i=20;i>0;i--) //进位{getAdd[i-1]+=getAdd[i]/10;getAdd[i]%=10;}int j1=0,j2=0,j3=0,j4=0,j5=0,j6=0,j7=0,j8=0,j9=0,j0=0;for(i=20;i>=0;i--) //用来判断和里面每个数字出现的次数{switch(getAdd[i]){case 0:j0++;break;case 1:j1++;break;case 2:j2++;break;case 3:j3++;break;case 4:j4++;break;case 5:j5++;break;case 6:j6++;break;case 7:j7++;break;case 8:j8++;break;case 9:j9++;break;}}/*如果一个数字,和里0-9出现的次数与这个数字里0-9出现的次数相同,那么和就应该是水仙花数(第一位数字不能为0)*/if((i0==j0)&&(i1==j1)&&(i2==j2)&&(i3==j3)&&(i4==j4)&&(i5==j5)&&(i6==j6)&&(i7==j7)&&(i8==j8)&&(i9==j9)&&(getAdd[0]!=0)){printf("\n");count++;for(i=0;i<21;i++)printf("%d",getAdd[i]);printf("\n");}}void main(){int t,t1,t2;initProgramm();t1=time(NULL);int i0,i1,i2,i3,i4,i5,i6,i7,i8,i9;for(i9=0;i9<10;i9++){for(i0=1;i0<22;i0++){if(count==2) //出现2个水仙花数以后breakbreak;if(i9+i0==21) //几个数字的出现次数和为21以后就break,因为后面的数字出现次数和一定大于21,就超过了21位{ check(i0,0,0,0,0,0,0,0,0,i9);break;}for(i2=0;i2<22;i2++){if(count==2)break;if(i9+i0+i2==21){ check(i0,0,i2,0,0,0,0,0,0,i9);break;}for(i3=0;i3<22;i3++){if(count==2)break;if(i9+i0+i2+i3==21){ check(i0,0,i2,i3,0,0,0,0,0,i9);break;}for(i4=0;i4<22;i4++){if(count==2)break;if(i9+i0+i2+i3+i4==21){ check(i0,0,i2,i3,i4,0,0,0,0,i9);break;}for(i5=0;i5<22;i5++){if(count==2)break;if(i9+i0+i2+i3+i4+i5==21){ check(i0,0,i2,i3,i4,i5,0,0,0,i9);break;}for(i6=0;i6<22;i6++){if(count==2)break;if(i9+i0+i2+i3+i4+i5+i6==21){ check(i0,0,i2,i3,i4,i5,i6,0,0,i9);break;}for(i7=0;i7<22;i7++){if(count==2)break;if(i9+i0+i2+i3+i4+i5+i6+i7==21){ check(i0,0,i2,i3,i4,i5,i6,i7,0,i9);break;}for(i8=0;i8<22;i8++){if(count==2)break;if(i9+i0+i2+i3+i4+i5+i6+i7+i8==21){ check(i0,0,i2,i3,i4,i5,i6,i7,i8,i9);break;}for(i1=0;i1<22;i1++){if(count==2)break;if(i9+i0+i2+i3+i4+i5+i6+i7+i8+i1==21){check(i0,i1,i2,i3,i4,i5,i6,i7,i8,i9);break;}}}}}}}}}}}t2=time(NULL);t=t2-t1;printf("\n%d s\n",t);}。

c语言水仙花数作业,c语言水仙花数(c语言水仙花数的编程)

c语言水仙花数作业,c语言水仙花数(c语言水仙花数的编程)

c语⾔⽔仙花数作业,c语⾔⽔仙花数(c语⾔⽔仙花数的编程)C语⾔计算出"⽔仙花"数,代码如下:运⾏结果如下:扩展资料 解题思路:这⾥提供了⼀种算法,即使⽤三个for循环确定三位数字,最外层的for循环即确定百位上的数字.“⽔仙花数”程序怎么写啊代码如下:#include int main() { printf("输出⽔仙花数:\n"); int i=100; for( ; i<1000; i++){ int num_0 = i%10; int num_1 =i/10%10; int num_2 = i/10/10%10; if.#include void main() { int a,b,c,s; s=a*100+b*10+c; for(a=1;aLZ你好~ ⾸先你要理解啥是⽔仙花数:⽔仙花数是指⼀个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本⾝。

(例如:1^3 + 5^3 + 3^3 = 153) 以上来⾃百.#include main() { int n,i,j,k; for(n=100;n把if语句块套在for循环⾥才⾏。

#include main() { int n,i,j,k; for(n=100;n<. k="n%10;" if .>最近学C语⾔ 作业⾥⾯有个写程序求⽔仙花数的 尝试得写了写 #include #.#include#include main() { int a,b,c,Y; int sum=100; while(sum<=999) { 百a=sum/100; b=sum%100/10; c=sum%10;Y=a*a*a+b*b*b+c*c*c; if(Y==sum)//判断.现写⼀个程序给我可以吗?跟⽹上其他有点差别就⾏了,不要复制粘贴的。

.#include int main(int argc, char **argv) { int i; int g ,s,b; //定义个位制,⼗位,百位上的知数 for(i=100;i<1000;i++){ //从100到1000查询⽔仙花数 g=i%10; //取出.严格的⽔仙花是三位数,并且其每位数的三次⽅的和等于它的本⾝。

C++程序大全

C++程序大全
/* 4、给出年、月、日,计算该日是该年的第几天。 */ #include<iostream.h> int lead(int); void main() { int ly,year,month,date,i,sum=0; cout<<"input year、month、date: "; cin>>year>>month>>date; int a[12]={31,0,31,30,31,30,31,31,30,31,30,31}; ly=lead(year); if (ly==1) a[1]=29;//366 天 else a[1]=28;//365 天 for(i=0;i<month-1;i++) //当前月之前所有月天数累加和 sum+=a[i]; sum+=date; //加上当前月天数 cout<<"你输入的日期是当年的第"<<sum<<"天"; } int lead(int y)//判断闰年 { if((y%4==0&&y%100!=0)||(y%400==0)) return 1;//是闰年 else return 0;//不是闰年 }
8.++程序中使用流格式输入、输出,我们可以怎么做? 答:在程序的开头包含头文件 iostream.h
cin 输入,cout 输出。 例如:
#include<h> void main() {
int a; cout<<"请输入 a 的值:"; cin>>a; cout<<"a 的值为:"<<a<<endl; }

水仙花数有哪些

水仙花数有哪些

水仙花数有哪些水仙花数是指一个三位数,其个位、十位和百位数字的立方和等于该数本身的数。

水仙花数是一个非常有趣的数学现象,因为它们既具有一定的规律性,又具有一定的特殊性。

下面我们将详细介绍水仙花数的定义、特征以及一些实例。

首先,我们来定义水仙花数。

一个三位数可以表示为abc,其中a、b和c分别代表百位、十位和个位上的数字。

如果abc满足以下条件:a³ + b³ + c³ = abc,则abc就是一个水仙花数。

那么水仙花数有哪些呢?根据上述定义,我们可以通过枚举法找到所有的水仙花数。

首先,百位数字a的范围是1到9,因为0不满足三位数的条件。

然后,十位和个位数字b和c的范围都是0到9。

所以我们需要遍历所有的三位数,将满足条件的数列出来。

经过计算,我们找到了如下所有的水仙花数:153、370、371、407。

这四个数都满足a³ + b³ + c³ = abc的条件。

接下来,我们来研究水仙花数的特征。

首先,水仙花数是一个三位数,所以它是一个有限集合。

其次,水仙花数具有一定的规律性,即满足a³ + b³ + c³ = abc。

这个规律可以用来判断一个三位数是否为水仙花数。

对于每一个三位数abc,我们可以按照上述规则计算其立方和。

然后将计算结果与abc进行比较,如果二者相等,则该数为水仙花数;如果不相等,则不是水仙花数。

通过观察水仙花数的特征,我们可以发现一些有趣的现象。

首先,水仙花数是对称的,即百位数字与个位数字相同。

其次,水仙花数是非常罕见的,只有四个三位数满足条件。

这也反映了水仙花数的特殊性。

水仙花数的发现和研究对于我们理解数学规律、培养数学思维都具有积极的意义。

通过研究水仙花数,我们可以锻炼我们的观察力和逻辑思维能力。

此外,水仙花数还是一种数学趣味活动,可以增加我们学习数学的兴趣。

总结一下,水仙花数是指一个三位数,其个位、十位和百位数字的立方和等于该数本身的数。

水仙花数C++课程设计报告

水仙花数C++课程设计报告

C++课程设计报告姓名:XXXXXXXXXXX学号:2011100XXXX学院:信息工程学院专业:地理信息系统课程设计报告实习题目一【需求规格说明】题号:A组第2题题目:编写一个程序,求出所有的“水仙花数”。

所谓水仙花数,是指一个三位数,其各位数字的立方和恰好等于该数本身。

例如153=1*1*1+5*5*5+3*3*3,所以153是水仙花数。

问题描述:设计一个程序,用户可以得到水仙花数。

问题分析:设计一个程序,可以将一定范围内的水仙花数从中筛选出来。

【算法设计】(1)设计思想:具体内容:定义一个变量i,利用for语句依次对某个范围内的数进行计算,输出符合条件的数。

(2)设计表示:关系图:【附录】具体内容:源程序清单(必须有必要的注释)、测试数据及运行结果。

)#include"stdafx.h"#include <iostream>using namespace std;int main(){int i; //定义一个变量for(i=100;i<1000;i++) //在初始语句中给循环变量赋初值if((i%10)*(i%10)*(i%10)+(((i-i%10)/10)%10)*(((i-i%10)/10)%10)*(((i-i%10)/10)%10)+((i-i%100)/100)*((i-i%100)/100)*((i-i%100)/100)=i) cout<<"The answer is:"<<i<<endl; //输出符合条件的变量cout<<endl;return 0;}实习题目二【需求规格说明】题号:B组第5题题目:试编程解决爱因斯坦台阶问题:有人走一台阶,若以每步走两级则最后剩一级;若每步走三级则剩两级;若每步走四级则剩三级;若每步走五级则剩四级;若每步走六级则剩五级;若每步走七级则刚好不剩。

水仙花数的算法

水仙花数的算法

用C#编程,写出一个求水仙花数的算法!1、水仙花数是指一个n(n>=3)位数,每一位数字的n次幂的和正好等于这个数本身。

例如,153是一水仙花数,因为153=1的3次方+5的3次方+3的3次方.using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace NarcissusNumber{class Program{public static void Main(string[] args){int a;string s;do{Console.WriteLine("3----找出三位数所有的水仙花数!");Console.WriteLine("4----找出四位数所有的水仙花数!");Console.WriteLine("5----找出五位数所有的水仙花数!");Console.WriteLine("34---你选择找出三、四位数的水仙花数!");Console.WriteLine("45---你选择找出四、五位数的水仙花数!");Console.WriteLine("35---你选择找出三、四、五位数的水仙花数!");Console.WriteLine("0----退出");Console.Write("请选择操作(0,3,4,5, 34, 45, 35):");s= Console.ReadLine();a = int.Parse(s);switch (a){case0:Console.WriteLine("你选择退出!");break;case3:Console.WriteLine("你选择找出三位数的水仙花数!");Funtion(a);break;case4:Console.WriteLine("你选择找出四位数的水仙花数!");Funtion(a);break;case5:Console.WriteLine("你选择找出五位数的水仙花数!");Funtion(a);break;case34: Console.WriteLine("你选择找出三、四位数的水仙花数!");Funtion(a);break;case45: Console.WriteLine("你选择找出四、五位数的水仙花数!");Funtion(a);break;case35: Console.WriteLine("你选择找出三、四、五位数的水仙花数!");Funtion(a);break;default: Console.WriteLine("你的输入是不合理的!请重先选择!");break;}Console.WriteLine();// Console.Clear(); /*清屏*/} while (a!=0);}/*******************输出水仙花数的算法*******************************/static int Funtion(int s){int i;int j;int k;int n;int m;int l;if (s==3) /*输出100-999的水仙花数*/{for(n=100;n<999;n++){i = n / 100;j = n / 10 - i * 10;k = n % 10;if (n==Recursion(i,s) + Recursion(j,s) + Recursion(k,s))Console.WriteLine(n);}}else if (s == 4) /*输出1000-9999的水仙花数*/{for (n = 1000; n <= 9999; n++){i = n / 1000;j = n / 100 - i * 10;k = n / 10 - i * 100 - j * 10;l = n % 10;if (n == Recursion(i, s) + Recursion(j, s) + Recursion(k, s) + Recursion(l, s))Console.WriteLine(n);}}else if(s==5) /*输出10000-99999的水仙花数*/{for (n = 10000; n <= 99999; n++){i = n / 10000;j = n / 1000 - i * 10;k = n / 100 - i * 100 - j * 10;l = n / 10 - i * 1000 - j * 100 - k * 10;m = n % 10;if (n == Recursion(i, s) + Recursion(j, s) + Recursion(k, s) + Recursion(l, s) + Recursion(m, s))Console.WriteLine(n);}}else if (s ==34) /*输出100-9999的水仙花数*/{for (n = 100; n <= 9999; n++){i = n / 1000;j = n / 100 - i * 10;k = n / 10 - i * 100 - j * 10;l = n % 10;if (i != 0 && n==Recursion(i, 4) + Recursion(j, 4) + Recursion(k, 4) + Recursion(l, 4))Console.WriteLine(n);if (n== Recursion(j, 3) + Recursion(k, 3) + Recursion(l, 3))Console.WriteLine(n);}}else if(s == 45) /*输出1000-9999的水仙花水*/{for (n = 1000; n <= 99999; n++){i = n / 10000;j = n / 1000 - i * 10;k = n / 100 - i * 100 - j * 10;l = n / 10 - i * 1000 - j * 100 - k * 10;m = n % 10;if (i != 0 && n == Recursion(i, 5) + Recursion(j, 5) + Recursion(k, 5) + Recursion(l, 5) + Recursion(m, 5))Console.WriteLine(n);if (n == Recursion(j, 4) + Recursion(k, 4) + Recursion(l, 4) + Recursion(m, 4))Console.WriteLine(n);}}else/* 输出100-99999的水仙花数*/{for (n = 100; n <= 99999; n++){i = n / 10000;j = n / 1000 - i * 10;k = n / 100 - i * 100 - j * 10;l = n / 10 - i * 1000 - j * 100 - k * 10;m = n % 10;if (i != 0 && n == Recursion(i, 5) + Recursion(j, 5) + Recursion(k, 5) + Recursion(l, 5) + Recursion(m, 5))Console.WriteLine(n);else if (j != 0 && n == Recursion(j, 4) + Recursion(k, 4) + Recursion(l, 4) + Recursion(m, 4))Console.WriteLine(n);else if (n== Recursion(k, 3) + Recursion(l, 3) + Recursion(m, 3))Console.WriteLine(n);}}return0;}/*********************用递归求数n的k次方*******************************/static int Recursion(int n,int k){int m;if (k == 1) return n;else{m=n*Recursion(n,k-1);}return m;}}}。

C语言基础题

C语言基础题

C语言基础题第一期:1. 输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身,例如:153是一水仙花数,因为153=1+125+27.2. 一个数如果恰好等于它的因子之和,这个数就称为“完数”,例如:6的因子是1,2,3,而6=1+2+3因此6是“完数”。

编程序找出1000之内的所有完数,并按下面格式输出其因子:6 its factors are 1,2,33. 有一个分数序列2/1,3/2,5/3,8/5,13/8,21/13,…求出这个数列的前20相之和。

4.一个球从100M高度自由下落,每次落地后反跳回原高度的一半,再落下,再反弹,求它在第10次落地时,共经过多少米,第10次反弹多高。

5.猴子吃桃问题。

猴子第一天,摘下若干个桃子,当即吃了一半,还不过瘾,有多吃了一个。

第二天早上又将剩下的桃子吃掉一半,有多吃了一个。

以后每天早上都吃了前一天剩下的一半零一个。

到第十天早上想再吃时,就只剩一个桃子了。

求第一天共摘了多少个桃。

6.两个乒乓球队进行比赛,各出3人。

甲队为A,B,C;乙队X,Y,Z。

以抽签决定比赛名单。

有人向队员打听比赛的名单,A说他不和X比,C说他不和X,Z比,请编程找出3队赛手的名单。

7.将一个二维数组行和列的元素互换,存到另一个数组中。

原始二位数组手动输入,行和列自定。

8.输出以下的杨辉三角形(要求输出15行)11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 19.输出“魔方阵”。

所谓魔方阵就是指这样的方阵,它的每一行,每一列和对角线之和均相等。

例如三阶魔方阵为:8 1 64 9 2要求输出1~n2的自然数构成的魔方阵。

10.找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。

也可能没有鞍点。

第二期:1.有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。

C语言上机练习

C语言上机练习

第1次上机练习:根据课堂所讲的三个例题,完成如下功能:0.将三个例题录入编程环境,编译并运行。

1.修改例题2,从键盘读入三个整数,计算三个整数的和与积,并输出。

2.修改例题3,用子函数计算两个整数中的小值,主函数输出结果。

3.修改例题3,用子函数计算两个整数的差的绝对值(提示:先求解,后根据大小取相反数。

或者先比较大小,再相减)。

4.编写一个程序,从键盘读入一个字符,并输出。

("%c" 选作)5.编写一个程序,从键盘读入两个double类型数,计算并输入二者之和。

("%lf"选作)第2次上机练习:1.编写程序完成:从键盘读入10个整数,输出大于20的整数的个数。

2.编写程序完成:使用循环,计算1至5的和与积,并输出。

3.从键盘读入两个正整数x和y,计算x与y之间的整数和(含x和y),并不知道x,y中哪个大。

4.编写程序完成:从键盘读入20个整数,它们都是0-9之间的个位数,输出0-9元素的个数(例如0:1个,1:2个...9:1个)。

5.完成教材141页,11题。

(参考答案:第10次落地经过299.609375米,第10次弹起距离0.097656米,选作)。

6.思考教材141页,12题。

(参考答案:total=1534)第3次上机练习:1.从键盘读入10个整数(包括正数、负数和0),输出其中的最大值和最小值。

2.从键盘读入一个正整数,输出各个位数字之和。

(用%取余数,用x/10获取下次循环的数值)3.从键盘读入n,求解1!+2!+3!+...+n!。

(n不要太大否则可能溢出)4.从键盘读入整数,当读入0时结束循环,输出正数和负数各有多少个。

5.输入一行字符,分别统计其中字母、数字和空格的个数。

(用while((ch1=getchar())!='\n')来判断是否结束输入,用&&表示并且,例如if(ch1>='a'&&ch1<='z')。

c语言for循环题目经典题

c语言for循环题目经典题

c语言for循环题目经典题下面是搜集的关于C语言for循环的经典例题。

一、求水仙花数问题水仙花数:水仙花数是一个三位数,特点是各个位数的立方和等于该数本身。

//水仙花数是一个三位数,特点是各个位数的立方和等于该数本身。

//例:153=1*1*1+5*5*5+3*3*3#include <stdio.h>int main(){int i,a,b,c;for(i=100;i<=999;i++) //保证范围为三位数{a = i%10; //取变量的个位数b = i/10%10; //取变量的十位数c = i/100; //取变量的百位数if ((a*a*a+b*b*b+c*c*c) == i) printf("%d\n",i);}return 0;}二、求规定范围内的完数问题完数:一个正整数的所有真因子(除了自身以外的约数)的和恰好等于它本身//完数定义:一个正整数的所有真因子(除了自身以外的约数)的和恰好等于它本身//例:6为完数,6的真因子为1,2,3 6=1+2+3#include <stdio.h>int main(){int n,i,j,sum;printf("请输入计算完数终止数:\n");scanf("%d",&n);for (i=1;i<=n;i++){sum=0; //一定要保证每次sum的值都要进行刷新(在循环体内)for (j=1;j<i;j++) //保证小于i,不可等于(完数定义){if (i%j==0) sum+=j;}if (sum==i) printf("%d\n",i);}return 0;}三、求规定范围内质数问题质数:一个大于1的整数只能被1和自己整除//质数:一个大于1的整数只能被1和自己整除#include <stdio.h>int main(){int i,j,k,n;printf("请输入终止范围:");scanf("%d",&n);for (i=2;i<=n;i++){k=1; //借助k的值对是否为质数进行判断,需保证每次k都能刷新for (j=2;j<i;j++) //最小质数是2{if (i%j==0){k=0; //在这期间只要有一个其他数可对该数进行整除,就代表该数不是质数break;}}if (k==1) printf("%d\n",i);}}四、计算阶乘之和正整数的阶乘:是所有小于及等于该数的正整数的积,并且0的阶乘为1。

寻出300以内的一切完数

寻出300以内的一切完数

找出300以内的所有完数,并输出其和(一个数若恰好等于它的各因子之和,即称为完数) #include<stdio.h>main(){int i,j,s=0,sum=0;for(i=1;i<=300;i++){s=0;for(j=2;j<=i/2;j++) 此行有误if(i/j==0) s=s+j; 此行有误if(s==i) sum=sum+s; }printf("%d",sum); }求[666,777]范围内素数的个数。

#include <stdio.h>#include <math.h>void main(){ int i,n=0,j;for (i=666;i<=777;i++){ for (j=1;j<=sqrt(i);j++) 此行有误if (i%j==0) continue; 此行有误if (j>sqrt(i)) {n++; printf("%5d",i);}}printf("\n%5d",n);已知A<B,且A,B为正整数, 求满足个条件A×B=716699且A+B最小的A值。

有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13....(注:该数列从第二项开始,其分子是前一项的分子与分母的和,而其分母是前一项的分子),求出这个序列前24项的和。

要求:按四舍五入的方式精确到小数点后第二位。

找出300以内的所有完数,并输出其和(一个数若恰好等于它的各因子之和,即称为完数) #include<stdio.h>main(){int i,j,s=0,sum=0;for(i=1;i<=300;i++){s=0;for(j=2;j<=i/2;j++) 此行有误if(i/j==0) s=s+j; 此行有误if(s==i) sum=sum+s; }printf("%d",sum); }百马百瓦问题:大、小马和马驹共100匹,共驮100片瓦,大马一驮三,小马一驮二,马驹二驮一,一次驮完,三种马都驮,共有多少种组合?#include<stdio.h>main(){int i,j,k,count=0;for(i=1;i<=33;i++)for(j=1;j<=100;j++) 此行有误for(k=1;k<=100;k++)if (3*i+2*j+0.5*k==100) 此行有误count++;printf("count=%d\n",count);}所谓回文数就是从左至右和从右至左读起来都是一样的数。

C语言经典100题

C语言经典100题

C语言程序设计复习指导一、程序设计题1、多项式求和(积)例1:3!+5!+7!+...+N!,求直到S>=680000为止的奇数N。

(N=11)main(){int i,j;long s,t=0;for(i=3;;i=i+2){s=1;for(j=1;j<=i;j++)s=s*j;t=t+s;if(t>=680000)break;}printf("%d",i);}例2:请编程计算1-1/2+1/3-1/4+1/5-...+1/99。

(精确到小数点后3位)。

main(){int i,t=1;float s=0;for(i=1;i<=99;i++){s=s+*t/i;t=-t;}printf("%.3f",s);getch();}例3:1+1/3+1/9+1/27…+1/n>时最小的n。

(n=81)main(){int i;float s=0;for(i=1;;i=i*3){s=s+i;if(s>break;}printf("%d",i);getch();}例4:求4*(1-1/3+1/5-1/7+…)的值,直到最后一项的绝对值小于10的负6次方为止。

#include ""main(){long i,t=1;float s=0;for(i=1;fabs*t/i)>=;i=i+2){s=s+*t/i;t=-t;}printf("%f",4*s);getch();}2、穷举法的应用例1:百钱百鸡问题。

例2:大作业本单价4元,中作业本单价2元,小作业本单价1元,当天共卖出大中小作业本30本,每种至少卖出1本,金额100元,问大中小作业本共有几种组合情况。

(3) main(){int a,b,c,s=0;for(a=1;a<=30;a++)for(b=1;b<=30-a;b++){c=30-a-b;if(a+b*2+c*4==100) s++;}printf("\n%d",s);}3、迭代法的应用例1:已知一个数列的前三个数是1,2,3,从第四个数起,每个数都是前三个数之和。

C程序设计教程第三版作业题解(第四章)

C程序设计教程第三版作业题解(第四章)

第四章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元。

水仙花数

水仙花数

水仙花数水仙花数是指一个n 位数( n≥3 ),它的每个位上的数字的n 次幂之和等于它本身。

(例如:1^3 + 5^3 + 3^3 = 153)。

水仙花数- 简介水仙花数在数论中,水仙花数是指这样一个数,其各个数之立方和等于该数。

例如:13+53+33=153。

十进制中的这样的数有:0、1、153、370、371、407,……(OEIS中的数列A005188),十进制的水仙花数共有88个,最大的是115,132,219,018,763,992,565,095,597,973,971,522,401共有39位数三进制中的这样的数有:0、1、2、12、122四进制中的这样的数有:0、1、2、3、313 水仙花数只是自幂数的一种,严格来说三位数的自幂数才成为水仙花数。

[1]附:其他位数的自幂数名字一位自幂数:独身数两位自幂数:没有三位自幂数:水仙花数四位自幂数:四叶玫瑰数五位自幂数:五角星数六位自幂数:六合数七位自幂数:北斗七星数八位自幂数:八仙数九位自幂数:九九重阳数十位自幂数:十全十美数水仙花数- 常见水仙花数水仙花数又称阿姆斯特朗数。

三位的水仙花数共有4个:153,370,371,407;水仙花数四位的水仙花数共有3个:1634,8208,9474;五位的水仙花数共有3个:54748,92727,93084;六位的水仙花数只有1个:548834;七位的水仙花数共有4个:1741725,4210818,9800817,9926315;八位的水仙花数共有3个:24678050,24678051,88593477…………使用高精度计算,可以得到超过INT类型上限的水仙花数:5: 930845: 927275: 547486: 5488347: 98008177: 42108187: 17417257: 99263158: 246780508: 246780518: 885934779: 1465112089: 9129851539: 4723359759: 53449483610: 467930777411: 3216404965011: 4002839422511: 4267829060311: 4938855060611: 3216404965111: 9420459191411: 4470863567911: 8269391657814: 28116440335967 16: 4338281769391370 16: 4338281769391371 17: 3587569906225003517: 2189714258761207519: 328958298444318703219: 492927388592808882619: 449812879116462486920: 6310542598859969391621: 44917739914603869730721: 12846864304373139125223: 2790786500997705256781423: 3545259010403169193594323: 2787969489305407447140523: 2188769684112291628885824: 17408800593806529302372224: 188451485447897896036875(为环保起见,24位以上的水仙花数略)理论上,最大的水仙花数不超过34位。

六年级上册数学欣赏与设计知识点

六年级上册数学欣赏与设计知识点

数学欣赏与设计是数学学科中的一个重要内容,可以培养学生的观察力、想象力和创造力,激发他们对数学的兴趣和热爱。

以下是六年级上册数学欣赏与设计的一些知识点,供参考。

1.水仙花数水仙花数是指一个三位数,其各个位上的立方之和等于该数本身。

例如,153是一个水仙花数,因为1的立方加5的立方加3的立方等于153、通过观察和验证,可以发现水仙花数的个位、十位和百位上的数字都是水仙花数中的一个。

2.完数完数是指一个正整数的所有真因子(即除了自身以外的所有因子)的和等于该数本身。

例如,6是一个完数,因为6=1+2+3、通过列举和验证,可以找到更多的完数,例如28、496等。

欣赏和研究完数有助于培养学生的观察力和逻辑思维能力。

3.黄金分割黄金分割是一种特殊的比例关系,它可以用一个无理数来表示,约等于1.618、黄金分割在美学、艺术和建筑等领域中常被应用,可以使作品具有一种和谐美感。

学生可以通过观察和测量一些具有黄金分割的事物(如图片、画作、建筑物等),了解黄金分割的应用和特点。

4.花花公子数花花公子数是指一个正整数,它的所有真因数之和等于它自己,并且它除了自身以外的所有真因数都是奇数。

例如,28是一个花花公子数,因为28=1+3+5+9+15、通过观察和验证,可以发现一些花花公子数,如28、70等。

欣赏和研究花花公子数可以锻炼学生的观察力和逻辑思维能力。

5.数学图形的设计数学图形的设计是数学欣赏与设计的一大重点内容。

学生可以通过连线、填色等方式创造各种各样的数学图形,如正方形、三角形、多边形等。

通过设计和制作这些图形,学生可以发现图形中的一些规律和性质,并培养他们的想象力和创造力。

6.数学游戏的设计数学游戏的设计是激发学生兴趣和培养他们逻辑思维的一种有效方式。

学生可以设计各种各样的数学游戏,如数独、九连环、堆积木等。

通过设计和玩这些游戏,学生不仅可以巩固和运用所学的数学知识,还可以培养他们的解决问题的能力和合作精神。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
printf("%d数是完数\n",j);
பைடு நூலகம் }
sum = 0;
}
}
#include<stdio.h>
void main()
{
int num;
int sum = 0;
int i;
for(i=1;i<=10;i++)
{
scanf("%d",&num);
-----------------------水仙花数
#include<stdio.h>
void main()
{
int i,j,k;
for(int n=100;n<1000;n++)
{
i=n/100;
j=(n-i*100)/10;
k=n%10;
if(i*i*i+j*j*j+k*k*k==n)
{
j=2;
while(i%j!=0)
j++;
if(i==j)
{
printf("%4d",i);
n++;
if(n%8==0)
printf("\n");
printf("%5d \n",n);
}
}
-----------------------九九三角形乘法结果表
#include<stdio.h>
void main()
{
for(int i=1;i<=9;i++)
{
for(int j=9;j>=1;j--)
{
printf("%4d",i*j);
case 11: b=31*6+29+30*4+0; break;//定义常量,再计算
case 12: b=31*6+29+30*4+0; break;//定义常量,再计算
}
}
else
{
printf("月数错误:");
}
}
}
default:
printf("输入错误:");//输出错误
}
b=b+c;//计算月数加天数
printf("%d天\n",b);//结果
}
else
{
printf("日数错误:");
if(num==999)
{
break;
}
sum=sum+num;
}
printf("这%d个数的和是%d",i-1,sum);
}
/*这段代码用于来表达最大公约数和最小公倍数*/
#include<stdio.h>
void main()
{
int a,b,c;
case 4: b=31*2+28+30+0; break;//定义常量,再计算
case 5: b=31*2+28+30+0; break;//定义常量,再计算
case 6: b=31*3+28+30*2+0; break;//定义常量,再计算
case 7: b=31*3+28+30*2+0; break;//定义常量,再计算
case 8: b=31*4+28+30*2+0; break;//定义常量,再计算
case 9: b=31*5+28+30*3+0; break; //定义常量,再计算
for(int k=1;k<=num1;k++)
{
for(int d=1;d<=k;d++)
{
printf("%d",k);
}
printf("\n");
}
}
-----------------------1-1000的完数
#include<stdio.h>
scanf("%d,%d,%d",&a,&b,&c);//接收
if ((a%4==0 && a%100 != 0) || (a%400==0))//判断
{
if (b<=12 && b>=1)//判断
{
}else
{
printf("月数错误:");
case 10: b=31*5+28+30*3+0; break;//定义常量,再计算
case 11: b=31*6+28+30*4+0; break;//定义常量,再计算
case 12: b=31*6+28+30*4+0; break;//定义常量,再计算
if(i==j)
break;
}
printf("\n");
}
}
-----------------------素数
#include<stdio.h>
void main()
{
int i,j,n;
n=0;
for(i=10;i<=100;i++)
int d;//存放最大公约数
printf("请你输入俩个数字:");
scanf("%d,%d",&a,&b);
if(a>b)//从小到大
{
c=a;
a=b;
b=c;
}
for(int i=1;i<=a;i++){
if(a%i==0 && b%i==0)//判断是否是公约数
case 2: b=31+0; break;//定义常量,再计算
case 3: b=31+29+0; break;//定义常量,再计算
case 4: b=31*2+29+30+0; break;//定义常量,再计算
{
d = i;
}
}
int e=(a*b)/d;//最小公倍数
printf("最大公约数:%d\n",d);
printf("最小公倍数:%d\n",e);
}
int a,b,c;//定义变量
printf("请输入'年数''月数''天数'");//让用户输入
switch (b)//判断
{
case 1: b=0; break;//定义常量,再计算
case 2: b=31+0; break;//定义常量,再计算
case 3: b=31+28+0; break;//定义常量,再计算
}
}
printf("\n");
}
-----------------------正倒三角形
#include<stdio.h>
void main()
{
int num1;
printf("请输入一个数:");
scanf("%d",&num1);
case 5: b=31*2+29+30+0; break;//定义常量,再计算
case 6: b=31*3+29+30*2+0; break;//定义常量,再计算
case 7: b=31*4+29+30*2+0; break;//定义常量,再计算
void main()
{
int sum = 0;
for(int j=1;j<=1000;j++)
{
for(int i=1;i<j;i++)
{
if(j%i==0)//求出因子
{
sum = sum+i;//将因子累加
}
}
if(sum == j)//判断是否是完数
} b=b+c;//计算月数加天数
printf("%d\n",b);//结果
}
else//否则
{
if (b<=12 && b>=1)//判断
{
if (c <= 32 && c>=1)//判断
{
for(int i=1;i<=num1;i++)//倒的三角形
{
for(int j=1;j<=(num1+1)-i;j++)
{
printf("%d",(num1+1)-i);
}
printf("\n");
}
printf("\n");
case 8: b=31*5+29+30*2+0; break;//定义常量,再计算
相关文档
最新文档