C趣味程序百例(19)1~9组成三个3位的平方数

合集下载

计算机简单编程示例

计算机简单编程示例

精选文档从键盘输入三个数,找出它们的最小值#include<stdio.h>main(){floata,b,c,min;printf("inputthreenumbers:");scanf("%f%f%f",&a,&b,&c);if(a>b)min=b;elsemin=a;if(min>c)min=c;printf("min=%f\n",min);}2.输出九九乘法表#include<stdio.h>main(){inti,j;for(i=1;i<=9;i++){for(j=1;j<=i;j++)printf("%d*%d=%2d",i,j,i*j);printf("\n");}}3.编程找出全部水仙花数#include<stdio.h>main(){intx,a,b,c;for(x=100;x<=999;x++){a=x/100;b=x%100/10;c=x%10;if(a*a*a+b*b*b+c*c *c==x);printf("%d",x);}}1.从键盘输入三个数找出它们的均匀数#include<stdio.h>main(){floata,b,c,aver;scanf("%f%f%f",&a,&b,&c);aver=(a+b+c)/3; printf("aver=%f\n",aver);}2.输出两个正整数的全部条约数#include<stdio.h>main(){inta,b,i,n;scanf("%d%d",&a,&b);if(a>b){n=b,b=a,a=n;}for(i=1;i<=a;i++){if(a%i==0&&b%i==0)printf("%2d",i);}printf("\n");return0;}.精选文档3.输出一个3*4的矩阵中的最小值,矩阵的数据从键盘输入#include<stdio.h>main(){inti,j,min,a[3][4];{printf("原矩阵a[%d][%d]:\n",3,4);for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);}printf("\n");min=a[0][0];for(i=0;i<3;i++)for(j=0;j<4;j++){if(min>a[i][j])min=a[i][j];}printf("theminnumber%3d",min);}1.从键盘输入圆的半径,计算圆的面积和周长#include<stdio.h>#definePImain(){floatr,s,l;printf("请输入圆的半径");scanf("%f",&r);s=PI*r*r;l=PI*r*2;printf("s=%f,l=%f\n",s,l);}2.从键盘输入10个数字,用起泡法从小到大排序#include<stdio.h>intmain(){inta[10];inti,j,t;printf("input10number:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");for(j=0;j<9;j++)for(i=0;i<9-j;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf("thesortednumber:\n");for(i=0;i<10;i++)printf("%5.0d",a[i]);printf("\n");return0;}}.精选文档3.从入 10个数,算它的最大#include<stdio.h>main(){floatx,max;inti;printf("入第一个数:");scanf("%f",&x);max=x;for(i=1;i<=9;i++){printf("入第%d个数:");scanf("%f",&x);if(x>max)max=x;}printf("10个数中最大:%f\n",max); }1.从入方形的和,算方形的面和周#include<stdio.h>main(){floata,b,s,l;printf("入方形的和");scanf("%f%f",&a,&b);s=a*b;l=2*(a+b);printf("s=%f,l=%f\n",s,l);}2.算s=1+2+3⋯+100#include<stdio.h>main(){inti=2,sum=0;do{sum=sum+i;i=i+2;}while(i<=100);printf("sum=%d\n",sum);}3.出一个3*3矩的置矩,矩的数据从入#include<stdio.h>main(){inti,j,temp,a[3][3];{printf("原矩a[%d][%d]:\n",3,3);for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);}for(i=0;i<2;i++)for(j=i+1;j<3;j++)if(i!=j){temp=a[i][j];a[i][j]=a[j][i];a[j][i]=temp;} printf("置矩A[%d][%d]:\n",3,3);for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%4d",a[i][j]);printf("\n");}}.1.从键盘输入三个整数,找出它们的最大值#include<stdio.h>main(){inta,b,c,max;printf("inputthreenumber:");scanf("%d%d%d",&a,&b,&c);if(a>b){max=a;}else{max=b;}if(max<c)max=c;printf("max=%d\n",max);}2.从键盘输入一行字符,统计所输入字符的个数#include<stdio.h>main(){intn=0;printf("inputastring:\n");while(getchar()!='\n')n++;printf("%d\n",n);}3.计算两个正整数的最小公倍数#include<stdio.h>main(){intm,n,r,g,p,h;printf("请输入求最小公倍数的数:"); scanf("%d%d",&m,&n);p=m*n;while((r=m%n)!=0){m=n;n=r;}g=n;printf("h=%d\n",h);}从键盘输入十个数,计算它们的最小值#include<stdio.h>main(){floatx,min;inti;printf("请输入第一个数:");scanf("%f",&x);min=x;for(i=1;i<=9;i++){printf("请输入第%d个数:");scanf("%f",&x);if(x<min)min=x;}printf("10个数中最小是:%f\n",min);}.从键盘输入十个数,计算他们的均匀值#include<stdio.h>main(){floatx,sum,d;inti;printf("请输入第一个数:");scanf("%f",&x);sum=x;for(i=1;i<=9;i++){printf("请输入第%d个数:",i+1);scanf("%f",&x);sum=sum+x;}d=sum/10.0;printf("10个数的均匀值是:%f\n",d); }计算s=1+3+5+7+...+99#include<stdio.h>main(){inti=1,sum=0;do{sum=sum+i;i=i+2;}while(i<=99);printf("sum=%d\n",sum);}计算s=2+4+6+8+...+100#include<stdio.h>main(){inti=2,sum=0;do{sum=sum+i;}while(i<=100);printf("sum=%d\n",sum);}计算s=n!(n从键盘输入)#include<stdio.h>main(){intn,i;doublefact=1;printf("请输入随意数:\n");scanf("%d",&n);for(i=1;i<=n;i++)fact=fact*i;printf("%5.0f%3d!\n",fact,n);}计算两个正整数的最大条约数#include<stdio.h>main(){intm,n,r,g,p;printf("请输入求最大条约数的数:"); scanf("%d%d",&m,&n);while((r=m%n)!=0){m=n;n=r;}g=n;printf("g=%d\n",g);}.数列:1 1 2 3 5 ...从第三项起每项数据都是其前两项之和计算该数列的前15项。

c趣味编程100例(含答案)

c趣味编程100例(含答案)
}
}
*思考题
实现函数y=x2的图形与圆的图形叠加显示
4.歌星大奖赛
在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。
*问题分析与算法实现
这个问题的算法十分简单,但是要注意在程序中判断最大、最小值的变量是如何赋值的。
44.分数之和 61
45.将真分数分解为埃及分数 63
46.列出真分数序列 65
47.计算分数的精确值 66
48.新娘和新郞 68
49.委派任务 70
50.谁在说谎 73
51.谁是窃贼 74
52.黑与白 76
53.迷语博士的难题(1) 79
54.迷语博士的难题(2) 81
55.哪个大夫哪天值班 84
87.黑白子交换 164
88.常胜将军 168
89.抢 30 169
90.搬山游戏 172
91.人机猜数游戏 176
92.人机猜数游戏(2) 179
93.汉诺塔 183
94.兎子产子 187
95.将阿拉伯数字转换为罗马数字 189
96.选美比赛 191
97.满足特异条件的数列 193
66.除式还原(1) 117
67.除式还原(2) 120
68.九位累进可除数 124
69.魔术师的猜牌术(1) 128
70.魔术师的猜牌术(2) 129
71.约瑟夫问题 131
72.邮票组合 134
73 和数能表示1~23的5个正整数 135
74.可称1~40磅的4块砝码 137

初中数学竞赛:数论的方法技巧(含例题练习及答案)

初中数学竞赛:数论的方法技巧(含例题练习及答案)

初中数学竞赛:数论的方法技巧数论是研究整数性质的一个数学分支,它历史悠久,而且有着强大的生命力。

数论问题叙述简明,“很多数论问题可以从经验中归纳出来,并且仅用三言两语就能向一个行外人解释清楚,但要证明它却远非易事”。

因而有人说:“用以发现天才,在初等数学中再也没有比数论更好的课程了。

任何学生,如能把当今任何一本数论教材中的习题做出,就应当受到鼓励,并劝他将来从事数学方面的工作。

”所以在国内外各级各类的数学竞赛中,数论问题总是占有相当大的比重。

数学竞赛中的数论问题,常常涉及整数的整除性、带余除法、奇数与偶数、质数与合数、约数与倍数、整数的分解与分拆。

主要的结论有:1.带余除法:若a,b是两个整数,b>0,则存在两个整数q,r,使得a=bq+r (0≤r<b),且q,r是唯一的。

特别地,如果r=0,那么a=bq。

这时,a被b整除,记作b|a,也称b是a 的约数,a是b的倍数。

2.若a|c,b|c,且a,b互质,则ab|c。

3.唯一分解定理:每一个大于1的自然数n都可以写成质数的连乘积,即其中p1<p2<…<pk为质数,a1,a2,…,ak为自然数,并且这种表示是唯一的。

(1)式称为n的质因数分解或标准分解。

4.约数个数定理:设n的标准分解式为(1),则它的正约数个数为:d(n)=(a1+1)(a2+1)…(ak+1)。

5.整数集的离散性:n与n+1之间不再有其他整数。

因此,不等式x<y与x≤y-1是等价的。

下面,我们将按解数论题的方法技巧来分类讲解。

一、利用整数的各种表示法对于某些研究整数本身的特性的问题,若能合理地选择整数的表示形式,则常常有助于问题的解决。

这些常用的形式有:1.十进制表示形式:n=an10n+an-110n-1+…+a0;2.带余形式:a=bq+r;4.2的乘方与奇数之积式:n=2m t,其中t为奇数。

例1 红、黄、白和蓝色卡片各1张,每张上写有1个数字,小明将这4张卡片如下图放置,使它们构成1个四位数,并计算这个四位数与它的各位数字之和的10倍的差。

C语言编程题

C语言编程题

四、编写程序题及参考答案导读:虽然题目基本按照教材章节顺序排列的,但是把同类题目尽量排在一起,便于读者学习掌握编程方法和思路,提高自己的编程能力。

【】已知银行整存整取存款不同期限的月息利率分别为:% 期限一年% 期限二年月息利率= % 期限三年% 期限五年% 期限八年要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。

【】输入年份year和月month,求该月有多少天。

判断是否为闰年,可用如下C语言表达式:year%4==0 && year%100!=0 || year%400==0。

若表达式成立(即表达式值为1),则year为闰年;否则,表达式不成立(即值为0),year为平年。

【】编写一个简单计算器程序,输入格式为:data1 op data2。

其中data1和data2是参加运算的两个数,op为运算符,它的取值只能是+、-、*、/。

【】输入n值,输出如图所示矩形。

【】输入n值,输出如图所示平行四边形。

【】输入n值,输出如图所示高为n的等腰三角形。

【】输入n值,输出如图所示高为n的等腰三角形。

【】输入n值,输出如图所示高和上底均为n的等腰梯形。

【】输入n值,输出如图所示高和上底均为n的等腰空心梯形。

【】输入n值,输出如图所示边长为n的空心正六边型。

【】输入n值,输出如图所示图形。

【】输入n值,输出如图所示图形。

【】输入n值,输出如图所示图形。

【】输入n值,输出如图所示图形。

【】输入n值,输出如图所示图形。

上一页下一页【】输入n值,输出如图所示图形。

(例为n=6时)【】编写程序,输出如图所示sin(x) 函数0到2π的图形。

【】编写程序,在屏幕上输出一个由*号围成的空心圆。

【】编写程序,在屏幕上绘制如图余弦曲线和直线。

若屏幕的横向为x轴,纵向为y轴,在屏幕上显示0~360度的cos(x)曲线与直线x=f(y)=45*(y-1)+31的迭加图形。

其中cos图形用"*"表示,f(y)用"+"表示,在两个图形的交点处则用f(y)图形的符号。

(信息学奥赛辅导)程序设计试题汇编(答案)

(信息学奥赛辅导)程序设计试题汇编(答案)

程序设计试题及答案(备注:试题难度评价采取五★级评价体系,分基础、容易、一般、稍难、难五个等级,其中的一、二、三★级都属于程序设计的基础试题级别,同学们稍加思考均有能力求得正确解答,对于四★级试题属于程序设计试题基础级别的思考题,五★级难度试题在此没有涉及,在程序设计高级试题中另行讲解。

对于基础和容易两个级别的程序设计试题,若能够给出语句分类(如If条件语句、条件语句嵌套、循环语句、多重循环语句等)的将尽量给出。

若属于13大类别的将尽量标注。

)程序设计试题几大分类:1、1\素数类问题(求素数的几种算法):2、数据排序问题(数据排序的几种方法):3、最大公约数和最小公倍数问题(几种算法):4、公式求解类问题(如求圆周率π、自然常数e、解方程等等):5、编号相反处理问题:6、约瑟夫问题(或猴子选大王问题、密码问题):7、回文数问题:8、高精度数值计算问题:9、数值计算问题:10、进制相互转换问题:11、字符串倒置问题:12、排列与组合类问题:13、因子、质因子(质因数)类相关问题:答案部分:(程序设计的源程序没有统一的标准答案,实现程序的算法也是多种多样,但结果是唯一的,算法也有优劣之分,一个程序的优劣,关键在于是否找到了好的算法,以下程序和算法不一定就是最佳算法和最佳程序,只能仅供参考,希望同学们能够对某些程序提出更好的算法来改进程序)(经常碰到的判断是否为素数、是否为回文数、求两个数的最大公约数、求两个数的最小公倍数等问题的子函数源程序,请务必记住!)①判断是否为素数,若是素数则返回true,若不是素数则返回false:function prime(x:longint):boolean;varj,y:longint;beginprime:=true;if x<2 then prime:=false;y:=trunc(sqrt(x));for j:=2 to y doif (x mod j = 0) thenbegin prime:=false; exit; end;end;备注:1~100之间所有的素数:2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97。

【题3】数字分组

【题3】数字分组

【题3】数字分组将1,2...9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数。

例如:三个三位数192,384,576满足以上条件。

题解设三组为(a1,a2,a3)、(b1,b2,b3)、(c1,c2,c3)。

我们通过枚举a1,b1,c1→枚举a3,计算b3、c3→枚举a2,计算b2、c2列举出三组数据的所有可能情况:1.枚举a1,b1,c11≤a1≤3,a1*2≤b1≤a1*2+1,a1*3≤c1≤min{ a1*3+2,9} 条件:b1≠c12.枚举a3,计算b3、c31≤a3≤9,b3=( a3*2) mod 10,c3=( a3*3) mod 10 条件:(a3≠5)∧({ a1,b1,c1}*{ a3,b3,c3}={})3.枚举a2,计算b2、c21≤a2≤9,a2∉{ a1,b1,c1,a3,b3,c3};b2=(a2*2+⎥⎦⎥⎢⎣⎢10*23a)mod 10 ;c2=45- a1- a2 -a3 -b1 -b2 -b3 -c1 -c3条件:({ a2,b2,c2}*{ a3,b3,c3}={})∧(a1*200+a2 *20+a3*2= b1 *100+b2 *10+b3)∧(a1*300+a2 *30+a3*3= c1 *100+c2 *10+c3)满足上述条件的所有(a1,a2,a3)、(b1,b2,b3)、(c1,c2,c3)即为解。

由此得出算法:for a1←1 to 3 do {枚举a1,b1,c1}for b1←a1*2 to a1*2+1 dofor c1←a1*3 to min(a1*3+2,9) do if b1≠c1then for a3←1 to 9 do {枚举a3,计算b3、c3}beginb3←(a3*2) mod 10;c3←(a3*3) mod 10;if (a3≠5) and ([a1,b1,c1]*[a3,b3,c3]=[])then for a2←1 to 9 do {枚举a2,计算b2、c2}if not (a2 in [a1,b1,c1,a3,b3,c3])then beginb2←(a2*2+(a3*2) div 10) mod 10;c2←45-a1-a2-a3-b1-b2-b3-c1-c3;if ([a2,b2,c2]*[a3,b3,c3]=[])and (a1*200+a2*20+a3*2=b1*100+b2*10+b3)and (a1*300+a2*30+a3*3=c1*100+c2*10+c3)then writeln(a1,a2,a3,’’,b1,b2,b3,’’,c1,c2,c3)end;{then}end;{for}下面,给出一种优化方法:设三组数为a,a*2,a*3,显然a的范围为123≤a≤329。

趣味c语言编程100例

趣味c语言编程100例

趣味 c 语言编程100 例【程序 1】题目:有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、 2、3、4。

组成所有的排列后再去掉不满足条件的排列。

2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++) / *以下为三重循环 */for( j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /* 确保 i 、 j、 k 三位互不相同 */printf("%d,%d,%d\n",i,j,k);}}程序 2】题目:企业发放的奖金根据利润提成。

利润 (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,求应发放奖金总数?1. 程序分析:请利用数轴来分界,定位。

注意定义时需把奖金定义成长整型。

2. 程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}【程序 3】题目:一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?1. 程序分析:在 10 万以内判断,先将该数加上 100 后再开方,再将该数加上 268 后再开方,如果开方后的结果满足如下条件,即是结果。

三阶幻方的N种构造方法

三阶幻方的N种构造方法

三阶幻方的N种构造方法说起幻方,许多人见惯不怪了。

最简单的莫过于三阶幻方或者说四阶幻方,三阶幻方是由1到9这9个数填进3X3的九宫图中,使每行,每列和对角线的三个数之和相等(3阶,幻和为15)。

三阶幻方最早起源于我国,古代人们将三阶幻方称之为“河图”和“洛书”我国宋代数学家杨辉称之为“纵横图”。

好了,其他的不多说了,让我们直奔主题吧。

第一种:变形法将1~9数依顺序填入下框;2和6对调,4和6对调;将2、4、6、8向四个角外移。

这样就快速完成3阶幻方了。

第二种:楼梯法在第一行的中间填上1.,然后依次在“右上角”填上2(下一个数),再在2的“右上角”(相对的)填上3,依次类推。

当遇到“右上角”已经有数的时候,就填在原地的下一个格,再运用楼梯法继续填,知道填到最后一个数。

□n□□□□□由于3的右上角已经有数了,所以4要填在3的下一个格。

□n□N n n□□再填5在4的右上角,就这样以此类推。

n□□□s就这样就完成了。

还有,这种方法适用于所有的奇数幻方。

第三种:推理法①1〜9个数填入九宫图,容易推出幻和为15,而用1〜9个数有以下的算式组合。

1+5+9=152+5+8=153+5+7=154+5+6=152+6+7=152+5+8=152+4+9=154+3+8=158+1+6=15观察上面9条算式容易知道,5出现了4次,1、3、7、9出现了2次,2、4、6、8出现了3次。

再回来想想九宫格的位置特性,中间的格一定要满足4条算式(中间行,中间列,2对角线)成立,故中间应该填的是5;n n nM M nO o o四个角的格也要各满足3条算式成立,故四个角的格应该填的是2、4、6、8。

nn M nt□(其实不用下面步骤都可以构造出来了,因为幻和为15,可以推算出。

)同理, 1、3、7、9应该填在前行前列的中间。

这样的话,就很容易构造出3阶幻方。

n n n□o所以得出的3阶幻方如下:□t Q t第四种:推理法②前提条件:已知幻和=15,中间是5。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C趣味程序百例(19)1~9组成三个3位的平方数
61.1~9组成三个3位的平方数
将1、2、3、4、5、6、7、8、9九个数字分成三组,每个数字只能用一次,即每组三个数不允许有重复数字,也不许同其它组的三个数字重复,要求每组中的三位数都组成一个平方数。

*问题分析与算法设计
本问题的思路很多,这里介绍一种简单快速的算法。

首先求出三位数中不包含0且是某个整数平方的三位数,这样的三位数是不多的。

然后将满足条件的三位数进行组合,使得所选出的3个三位数的9个数字没有重复。

程序中可以将寻找足条件的三位数的过程和对该三位数进行数字分解的过程结合起来。

*程序与程序注释
#include
void main()
{
int a[20],num[20][3],b[10]; /*a:存放满足条件的三位数*/
/*若不是10 的倍数,则分解三位数*/
/*分解该三位数中的每一个数字*/
int i,j,k,m,n,t,flag;
printf("The 3 squares with 3 different digits each are:\n");
for(j=0,i=11;i<=31;i++) /*求出是平方数的三位数*/
if(i%10!=0) /*若不是10的倍数,则分解三位数*/
{
k=i*i; /*分解该三位数中的每一个数字*/
num[j+1][0]=k/100; /*百位*/
num[j+1][1]=k/10%10; /*十位*/
num[j+1][2]=k%10; /*个位*/
if(!(num[j+1][0]==num[j+1][1]||num[j+1][0]==num[j+1][2]||
num[j+1][1]==num[j+1][2])) /*若分解的三位数字均不相等*/
a[++j]=k; /*j:计数器,统计已找到的满足要求的三位数*/
}
for(i=1;i<=j-2;++i) /*从满足条件的三位数中选出三个进行组合*/ {
b[1]=num[i][0];
b[2]=num[i][1];
b[3]=num[i][2];
for(t=i+1;t<=j-1;++t)
{
b[4]=num[t][0]; /*取第t个数的三位数字*/
b[5]=num[t][1];
b[6]=num[t][2];
for(flag=0,m=1;!flag&&m<=3;m++) /*flag:出现数字重复的标记*/ for(n=4;!flag&&n<=6;n++) /*判断两个数的数字是否有重复*/
if(b[m]==b[n])flag=1; /*flag=1:数字有重复*/
1 2。

相关文档
最新文档