7个hu不变矩c++程序小试
C语言程序设计教程 第七章 课后习题参考答案

{
for(j=0;j<N;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
for(i=0;i<M;iபைடு நூலகம்+)
{
for(j=0;j<N;j++)
{
if(i==j)
m+=a[i][j];
}
}
printf("主对角线元素之和为:%d\n",m);
批注本地保存成功开通会员云端永久保存去开通
P198 3求主、副对角线元素之和
#include<stdio.h>
#define M 4
#define N 4
int main()
{
int a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int i,j,m=0,n=0;
{
if(a[j]>a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
printf("\n");
printf("排序后的数组为:\n");
for(i=0;i<N;i++)
{
printf("%4d",a[i]);
}
}
P76 3成绩
#include<stdio.h>
void input(int cla[50][3],int n);
C语言竞赛练习题(答案)

C语言竞赛练习题目录一、穷举1、求最大数2、高次方数的尾数3、借书方案知多少6、抓交通肇事犯12、平分七筐鱼13、有限5位数14、除不尽的数15、一个奇异的三位数16、位反序数17、求车速18、阿姆斯特朗数19、完全数20、亲密数21、自守数22、回文数23、求具有abcd=(ab+cd)2性质的四位数24、求素数25、歌德巴赫猜想26、要发就发27、素数幻方28、百钱百鸡问题29、斯坦的数学题31、换分币32、三色球问题33、马克思手稿中的数学题34、分数比较、分数之和35、将真分数分解为埃及分数36、列出真分数序列37、计算分数的精确值38、谁是窃贼39、黑与白40、迷语博士的难题41、哪个大夫哪天值班42、区分旅客国籍43、谁家孩子跑最慢44、拉丁方45、填表格46、1~9分成1:2:3的三个3位数47、1~9组成三个3位的平方数48、由8个整数形成奇特的立方体49、减式还原50、乘式还原51、九位累进可除数52、魔术师的猜牌术53、约瑟夫问题、邮票组合54、和数能表示1~23的5个正整数55、可称1~40磅的4块砝码56、10个小孩分糖果57、小明买书61、四方定理63、尼科彻斯定理65、自动发牌66、黑白子交换67、常胜将军二、计算4、数制转换5、打鱼还是晒网7、该存多少钱8、怎样存钱利最大9、捕鱼和分鱼10、出售金鱼11、分数四则运算30、年龄几何58、波松瓦酒的分酒趣题59、波松瓦酒的分酒趣题60、角谷猜想62、卡布列克常数64、回文数的形成1.求最大数问555555的约数中最大的三位数是多少?*问题分析与算法设计根据约数的定义,对于一个整数N,除去1和它自身外,凡能整除N的数即为N的约数。
因此,最简单的方法是用2到N-1之间的所有数去除N,即可求出N的全部约数。
本题只要求取约数中最大的三位数,则其取值范围可限制在100到999之间。
*程序说明与注释#include<stdio.h>void main(){long i;int j;printf("Please input number:");scanf("%ld",&i);for(j=999;j>=100;j--)if(i%j==0){printf("The max factor with 3 digits in %ld is:%d,\\n",i,j);break;}*运行结果输入:555555输出:The max factor with 3 digits in 555555 is:7772.高次方数的尾数求13的13次方的最后三位数*问题分析与算法设计解本题最直接的方法是:将13累乘13次方截取最后三位即可。
C程序设计第七章课后练习答案

C程序设计(第三版)谭浩强著课后习题答案第7章2009-05-16 10:567.7 打印“魔方阵”。
所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。
例如,三阶魔方阵为8 1 63 5 74 9 2要求打印出由1 到n2 的自然数构成的魔方阵。
/******************************************************************** **算法思路:魔方阵中各数的排列规律如下:**(1)将1放在第一行中间一列**(2)从2开始直到n×n止各数依次按下列规则存放:每一个数存放的行比前一个数的** 行数减1,列数加1**(3)如果上一个数的行数为1,则下一个数的行数为n(指最下一行)**(4)当上一个数的列数为n时,下一个数的列数应为1,行数减1**(5)如果按上面的规则确定的位置数已有数,或者上一个数是第1行第n列时,则把** 下一个数放在上一个数的下面********************************************************************/ #include <stdio.h>void main(){int a[16][16],i,j,k,p,m,n;/*初始化*/p=1;while(p==1){printf("input n.(0<n<=15,n是奇数.)\n");scanf("%d",&n);if((n != 0) && (n<=15) && (n%2 != 0)){printf("矩阵阶数是%d\n",n);p=0;}}for(i=1;i<=n;i++)for(j=1;j<=n;j++) a[i][j]=0;/*建立魔方*/j=n/2+1;a[1][j]=1;for(k=2;k<=n*n;k++){i=i-1;j=j+1;if((i<1)&&(j>n)){i=i+2;j=j-1;}else{if(i<1) i=n;if(j>n) j=1;}if(a[i][j]==0) a[i][j]=k;else{i=i+2;j=j-1;a[i][j]=k;}}/*输出*/for(i=1;i<=n;i++){for(j=1;j<=n;j++)printf("%5d",a[i][j]);printf("\n");}}7.8 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。
计算机笔试题大全

找工作也快两月了,感受颇多,最近看了一篇《怎样花两年时间去面试一个人》的博客,很有感触,将自己的想法写出来。
在找工作的两月中,自己从四大门户:新浪、搜狐、网易、腾讯到业界领先的百度,搜狗、淘宝以及行业巨头的微软;从几个人创业的阿甘网到几十个人美丽说、友录、微游半创业公司;从做浏览器的opera 到石油设备的哈里伯顿、斯伦贝谢到咨询的ThoughtWorks再到做游戏的金山网游,如果加上一些想不起的公司名,面试有二三十家,再加上一倍以上的笔试。
北京带“网”字的公司几乎被过了一圈。
从这一圈的经验,通过现在互联网公司招聘的漏洞,总结出一些可以在两月的时间内得到一家顶级互联网公司的offer的经验。
简单来说,成功100分的话,得分组成比例可以如下:1、50分的算法和C语言,2、15分的项目分,3、15分的知识面和扯淡分,4、10分的开发语言细节分,5、5分的其他。
首先很赞同文首博客中的观点,在短短的几轮面试以及校园招聘意义不大的一轮笔试,想选取一个人是很困难的,而且还很容易漏掉一些有实力的人,我敢保证连IDE都没启动过而进入顶级互联网公司的同学不在少数,不是怀疑这些同学的能力,只是说招这些同学对公司来说是一个极大的风险,纸上的程序永远不能变成产品,而且纸上写程序发现不了真正的问题,我加入的一些技术群中,一些我仰慕公司的员工不懂得求助百度,只会一有问题就摆到群上,让人作答,甚至有些工作相当时间的人不懂得如何断点调试。
好了,切入正题50分的算法和C语言题:假入你这两个比较好(非超牛),那么你就有50%以上的机会进入心仪的互联网公司,现在的校园招聘笔试和面试,不分公司和部门都是一窝蜂的考这两项,其实对于应届生来说,没有履历,没有工作对口方向知识的积累,而用人单位为了省事,经常就一套题,所以有不少想做前端的同学去忍受C指针和算法的折磨。
假如您的C语言不好,问题不大,翻出谭浩强的那个工科生必修的C教材,看了两个礼拜足够。
c程序设计(谭浩强)第七章习题答案

int i;
float ave=0;
for(i=0;i<10;i++)
ave=ave+a[i][n]/10;
return ave;
}
void max(float a[][5]) //最高分的学生和课程
{
int i,j,row,colum;
float max=a[0][0];
for(i=0;i<10;i++)
# include <stdio.h>
# include<math.h>
# include<string.h>
/*int yue(int a,int b) //求最大公约数
{
int i,min;
min=a>b?b:a;
for(i=min;i>0;i--)
{
if(a%i==0&&b%i==0)
{
return i;
if((mid%2)!=1) //因职工号序号为奇数,故强制把序号转为奇数
mid-=1;
if(strcmp(b,a[mid])>0) //不能写b>a[mid]
{min=mid+2;}
else if(strcmp(b,a[mid])<0) //不能写b<a[mid]
{max=mid-2;}
else
{printf("职工姓名为:%s\n",a[mid-1]);break;}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf("%-2d",b[i][j]);
c语言用函数做笨小猴解题思路

c语言用函数做笨小猴解题思路C语言用函数做笨小猴解题思路笨小猴是一种著名的编程题,被广泛应用于C语言学习和题目解析中。
学习C语言的过程中,经常需要通过编写函数来解决问题,而笨小猴正是一个很好的案例。
通过笨小猴这个题目,我们可以深入理解函数的概念和运用,展示C语言的强大功能和灵活性。
下面,我们将从简单到复杂、由浅入深地探讨如何用函数来解答笨小猴题目,帮助大家更好地理解这一概念。
一、理解笨小猴题目笨小猴问题是一个典型的算法问题,题目是这样的:有64级楼梯,一只笨小猴子只能跳1级或2级楼梯,编写一个函数计算笨小猴子跳上这64级楼梯一共有多少种跳法。
这个问题看似简单,实际上涉及到递归、循环和函数的使用,非常适合我们来深入探讨C语言函数的应用。
二、编写递归函数一种比较直接的解法是使用递归函数来解决笨小猴问题。
递归函数是指在函数定义中调用函数本身的一种方式,非常适合解决具有递归特性的问题,比如笨小猴跳楼梯的问题。
我们可以定义一个递归函数,用来计算跳上n级楼梯的跳法数量。
在函数内部,通过递归调用自身来实现对所有可能性的遍历,直到跳到1级楼梯或2级楼梯时结束递归。
这样可以实现对笨小猴问题的解决,从而展示了函数在递归运用方面的灵活性和功能强大之处。
三、优化递归函数然而,简单的递归函数在解决笨小猴问题时存在效率不高的问题,因为递归会导致函数的重复调用,增加了计算的时间复杂度。
我们可以通过优化递归函数,引入记忆化搜索等方法来提高计算效率。
在优化后的递归函数中,我们可以使用一个数组来保存已经计算过的结果,避免重复计算,从而大大缩减了计算时间。
这种优化方式可以展示函数在算法优化方面的作用和价值,帮助我们更好地理解函数的灵活运用。
四、使用循环函数除了递归函数,我们还可以使用循环函数来解决笨小猴问题。
通过编写一个循环函数,我们可以遍历所有可能的跳法,逐步累加到64级楼梯的跳法总数。
循环函数相对于递归函数来说,具有更高的计算效率和更好的可读性,尤其适合解决需要迭代计算的问题。
C语言程序设计第四版第七章答案谭浩强
C语言程序设计第四版第七章答案谭浩强第七章用函数实现模块化程序设计第七章函数7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。
ma某yuehu(m,n)intm,n;{inti=1,t;for(;i<=m&&i<=n;i++){if(m%i==0&&n%i==0)t=i;}return(t);}minbeihu(m,n)intm,n;{intj;if(m>=n)j=m;elej=n;for(;!(j%m==0&&j%n==0);j++);returnj;}main(){inta,b,ma某,min;printf("entertwonumberi:");canf("%d,%d",&a,&b);ma某=ma某yuehu(a,b);min=minbeihu(a,b);printf("ma某=%d,min=%d\n",ma某,min);}7.2求方程的根,用三个函数分别求当b2-4ac大于0、等于0、和小于0时的根,并输出结果。
从主函数输入a、b、c的值。
#include"math.h"floatyihigen(m,n,k)floatm,n,k;{float某1,某2;某1=(-n+qrt(k))/(2某m);某2=(-n-qrt(k))/(2某m);printf("twohigeni某1=%.3fand某2=%.3f\n",某1,某2);}floatdenggen(m,n)floatm,n;{float某;某=-n/(2某m);printf("denggeni某=%.3f\n",某);}第七章用函数实现模块化程序设计float某ugen(m,n,k)floatm,n,k;{float某,y;某=-n/(2某m);y=qrt(-k)/(2某m);printf("two某ugeni某1=%.3f+%.3fiand某2=%.3f-%.3fi\n",某,y,某,y);}main(){floata,b,c,q;printf("inputabci");canf("%f,%f,%f",&a,&b,&c);printf("\n");q=b某b-4某a某c;if(q>0)yihigen(a,b,q);eleif(q==0)denggen(a,b);ele某ugen(a,b,q);}7.3写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。
2018版高考数学大一轮复习第十章计数原理10.2排列与组合试题理北师大版
第十章计数原理10.2排列与组合试题理北师大版基础知识自主学习ET知识梳理----------------------------i .排列与组合的概念2. 排列数与组合数(1) 排列数的定义:从n个不同元素中取出m(m^ n)个元素的所有排列的个数叫作从n个不同元素中取出m个元素的排列数,用A表示.(2) 组合数的定义:从n个不同元素中取出me n)个元素的所有组合的个数, 叫作从n个不同元素中取出m个元素的组合数,用C表示.3 •排列数、组合数的公式及性质【思考辨析】判断下列结论是否正确(请在括号中打“V”或“ x”)(1) 所有元素完全相同的两个排列为相同排列. (X )(2) 一个组合中取出的元素讲究元素的先后顺序. (X )(3) 两个组合相同的充要条件是其中的元素完全相同. (V )(4) ( n+ 1) ! - n!= n • n! .( V )(5) A n = n A n-1.( " )(6) k C k= n^-\.( V )考点自测1 . (2016 •四川)用数字1,2,3,4,5 组成没有重复数字的五位数,其中奇数的个数为()A. 24B. 48C. 60D. 72答案D解析由题可知,五位数要为奇数,则个位数只能是1,3,5 ;分为两步:先从1,3,5三个数中选一个作为个位数有C种情况,再将剩下的4个数字排列得到A:种情况,则满足条件的五位数有d•A4= 72(个).故选D.2. 6把椅子摆成一排,3人随机就座,任何两人不相邻的坐法种数为()A. 144 B . 120 C . 72 D . 24答案D解析“插空法”,先排3个空位,形成4个空隙供3人选择就座,因此任何两人不相邻的坐法种数为A^ = 4X 3X 2= 24.3. (教材改编)用数字1,2,3,4,5 组成的无重复数字的四位数,其中偶数的个数为()A. 8 B . 24 C . 48 D . 120答案C解析末位数字排法有A2种,其他位置排法有A种,共有A2A4= 48(种).4. _________________ 某高三毕业班有40人,同学这间两两彼此给对方写一条毕业留言,那么全班共写了______________ 条毕业留言.(用数字作答)答案 1 560解析依题意知两两彼此给对方写一条毕业留言相当于从40人中任选两人的排列数,所以全班共写了A4Q= 40X 39= 1 560(条)留言.5 .某班级要从4名男生、2名女生中选派4人参加某次社区服务,如果要求至少有1名女生, 那么不同的选派方案有_________________ 种.答案14解析分两类:①有1名女生:C2C;= 8.②有2名女生:C2C4= 6.•••不同的选派方案有8+ 6 = 14(种).题型分类深度剖析题型一排列问题例1 (1)3名男生,4名女生,选其中5人排成一排,则有_______________ 种不同的排法.(2) _____ 六个人从左至右排成一行,最左端只能排甲或乙,最右端不能排甲,则不同的排法共有种. 答案(1)2 520 (2)216解析(1)问题即为从7个元素中选出5个全排列,有A7= 2 520(种)排法.(2)当最左端排甲时,不同的排法共有A5种;当最左端排乙时,甲只能排在中间四个位置之一,则不同的排法共有dA4种.故不同的排法共有A5+C A4= 120+ 96 = 216(种).引申探究1 •本例(1)中若将条件“选其中5人排成一排”改为“排成前后两排,前排3人,后排4人”,其他条件不变,则有多少种不同的排法?解前排3人,后排4人,相当于排成一排,共有A7= 5 040(种)排法.2 .本例(1)中若将条件“选其中5人排成一排”改为“全体站成一排,男、女各站在一起”,其他条件不变,则有多少种不同的排法?解相邻问题(捆绑法):男生必须站在一起,是男生的全排列,有A!种排法;女生必须站在一起,是女生的全排列,有A4种排法;全体男生、女生各视为一个元素,有A2种排法.根据乘法原理,共有A T A4・A;= 288(种)排法.3. 本例(1)中若将条件“选其中5人排成一排”改为“全体站成一排,男生不能站在一起”,其他条件不变,则有多少种不同的排法?解不相邻问题(插空法):先安排女生共有A4种排法,男生在4个女生隔成的5个空中安排共有A5种排法,故共有A4・A3= 1 440(种)排法.4 .本例(1)中若将条件“选其中5人排成一排”改为“全体站成一排,甲不站排头也不站排尾”,其他条件不变,则有多少种不同的排法?解先安排甲,从除去排头和排尾的5个位置中安排甲,有A5= 5(种)排法;再安排其他人,有A6= 720(种)排法.所以共有A5・A6= 3 600(种)排法.思维升华排列应用问题的分类与解法(1) 对于有限制条件的排列问题,分析问题时有位置分析法、元素分析法,在实际进行排列时一般采用特殊元素优先原则,即先安排有限制条件的元素或有限制条件的位置,对于分类过多的问题可以采用间接法.(2) 对相邻问题采用捆绑法、不相邻问题采用插空法、定序问题采用倍缩法是解决有限制条件的排列问题的常用方法•低LW I穿由0,1,2,3,4,5 这六个数字组成的无重复数字的自然数.求:(1)有多少个含2,3,但它们不相邻的五位数?(2)有多少个含数字1,2,3,且必须按由大到小顺序排列的六位数?解(1)先不考虑0是否在首位,0,1,4,5先排三个位置,则有 A 3个,2,3去排四个空档,有 A 个,即有A 4A 2个;而0在首位时,有 A A I 个,即有A 4A 4 — AA = 252(个)含有2,3,但它们不 相邻的五位数. (2)在六个位置先排0,4,5,先不考虑0是否在首位,则有 A 6个,去掉0在首位,即有A 3— A 个, 0,4,5 三个元素排在六个位置上留下了三个空位, 1,2,3 必须由大到小进入相应位置, 并 不能自由排列,所以有 A 3—A 5= 100(个)六位数. 题型二 组合问题 例2(1)若从1,2,3,…,9这9个整数中同时取 4个不同的数,其和为偶数,则不同的取法的种数是 ( )A . 60B . 63C . 65D . 66(2)要从12人中选出5人去参加一项活动, 代B, C 三人必须入选,则有 __________ 种不同选法. 答案 (1)D(2)36解析 (1) 因为 1,2,3 ,…, 9中共有 4个不同的偶数和 5个不同的奇数,要使和为偶数,则 4个数全为奇数或全为偶数或2个奇数和2个偶数,故有C 4+ C + C 5C4= 66(种)不同的取法.⑵ 只需从A , B, C 之外的9人中选择2人,即有C 9 = 36(种)不同的选法.引申探究1 .本例(2)中若将条件“ A, B , C 三人必须入选”改为“ A , B, C 三人都不能入选”,其他条 件不变,则不同的选法有多少种?解 由代B , C 三人都不能入选只需从余下 9人中选择5人,即有d= C 9= 126(种)不同的选法.2 •本例(2)中若将条件“ A, B , C 三人必须入选”改为“ A , B, C 三人只有一人入选”,其他 条件不变,则不同的选法有多少种?解 可分两步,先从 代B , C 三人中选出1人,有d 种选法,再从余下的 9人中选4人,有C 9种选法,所以共有 C 3XC 4= 378(种)不同的选法.3 •本例⑵中若将条件“ A B , C 三人必须入选”改为“ A , B, C 三人至少一人入选”,其他 条件不变,则不同的选法有多少种?解 可考虑间接法,从12人中选5人共有&2种,再减去 代B, C 三人都不入选的情况 C 9种, 共有C 2 — C = 666(种)不同的选法.思维升华 组合问题常有以下两类题型变化(1)“含有”或“不含有”某些元素的组合题型: “含”, 则先将这些元素取出, 再由另外元 素补足;“不含”,则先将这些元素剔除,再从剩下的元素中去选取.(2) “至少”或“至多”含有几个元素的组合题型:解这类题必须十分重视“至少”与“至 多”这两个关键词的含义,谨防重复与漏解•用直接法和间接法都可以求解,通常用直接法 分类复杂时,考虑逆向思维,用间接法处理.氓即口轻;某市工商局对35种商品进行抽样检查,已知其中有15种假货.现从35种商品中选取3种.(1) 其中某一种假货必须在内,不同的取法有多少种?(2) 其中某一种假货不能在内,不同的取法有多少种?(3) 恰有2种假货在内,不同的取法有多少种?(4) 至少有2种假货在内,不同的取法有多少种?(5) 至多有2种假货在内,不同的取法有多少种?解(1)从余下的34种商品中,选取2种有Ct= 561(种),•••某一种假货必须在内的不同取法有561种.⑵ 从34种可选商品中,选取3种,有£4种或者C35-出=&= 5 984(种).•某一种假货不能在内的不同取法有 5 984种.⑶从20种真货中选取1件,从15种假货中选取2件有C2cd5= 2 100(种).•恰有2种假货在内的不同的取法有 2 100种.⑷选取2件假货有C;od5种,选取3件假货有C^种,共有选取方式C Ic C^ + ds = 2 100 + 455 =2 555(种). •至少有2种假货在内的不同的取法有 2 555种.⑸选取3件的总数为CL,因此共有选取方式CL—C?5= 6 545 - 455= 6 090(种).•至多有2种假货在内的不同的取法有 6 090种.题型三排列与组合问题的综合应用命题点1相邻问题例3 (2017 •济南调研)一排9个座位坐了3个三口之家,若每家人坐在一起,则不同的坐法种数为()3A. 3X 3!B. 3X (3 !)4C. (3 ! )D. 9!答案C解析把一家三口看作一个排列,然后再排列这3家,所以有(3 ! )4种坐法.命题点2相间问题例4某次联欢会要安排3个歌舞类节目,2个小品类节目和1个相声类节目的演出顺序,则同类节目不相邻的排法种数是__________ .答案120解析先安排小品节目和相声节目,然后让歌舞节目去插空•安排小品节目和相声节目的顺序有三种:“小品1,小品2,相声”,“小品1,相声,小品2”和“相声,小品1,小品2”.对于第一种情况,形式为“□小品1歌舞1小品2□相声□”,有足心启=36(种)安排方法;同理,第三种情况也有36种安排方法,对于第二种情况,三个节目形成4个空,其形式为“口小品1 □相声□小品2□”,有48(种)安排方法.根据加法原理,共有36 + 36 + 48 = 120(种)安排方法.命题点3特殊元素(位置)问题例5 (2016 •郑州检测)从1,2,3,4,5 这五个数字中任取3个组成无重复数字的三位数,当三个数字中有2和3时,2需排在3的前面(不一定相邻),这样的三位数有____________ 个.答案51解析分三类:第一类,没有2,3,由其他三个数字组成三位数,有A3= 6(个);第二类,只有2或3其中的一个,需从1,4,5中选两个数字组成三位数,有2C3A3= 36(个); 第三类,2,3均有,再从1,4,5中选一个,因为2需排在3的前面,所以可组成1C3A3= 9(个).根据加法原理,这样的三位数共有51个.思维升华排列与组合综合问题的常见类型及解题策略(1)相邻问题捆绑法.在特定条件下,将几个相关元素视为一个元素来考虑,待整个问题排好之后,再考虑它们“内部”的排列.⑵相间问题插空法.先把一般元素排好,然后把特定元素插在它们之间或两端的空当中,它与捆绑法有同等作用.(3)特殊元素(位置)优先安排法.优先考虑问题中的特殊元素或位置,然后再排列其他一般元素或位置.(4)多元问题分类法.将符合条件的排列分为几类,而每一类的排列数较易求出,然后根据分类加法计数原理求出排列总数.厲涂叮% 3 (1)(2016 •山西四校联考三)有5名优秀毕业生到母校的3个班去做学习经验交流,则每个班至少去一名的不同分派方法种数为()A. 150B. 180C. 200D. 280(2)将甲、乙、丙、丁、戊五位同学分别保送到北大、上海交大和浙大3所大学,若每所大学至少保送1人,甲不能被保送到北大,则不同的保送方案共有()A. 150 种B. 114 种C. 100 种D. 72 种答案(1)A (2)CC2C2解析(1)分两类:一类,3个班分派的毕业生人数分别为2,2,1,则有~A~•AU 90(种)分派方法;另一类,3个班分派的毕业生人数分别为1,1,3,则有C3-A3= 60(种)分派方法,所以不同分派方法种数为90+ 60= 150,故选A.(2)先将五人分成三组,因为要求每组至少一人,所以可选择的只有2,2,1或者3,1,1 ,所以卑廻+ C5CC1= 25(种)分组方法•因为甲不能被保送到北大,所以有甲的那组只有上海交大和浙大两个选择,剩下的两组无限制,一共有4种方法,所以不同的保送方案共有25X4=100(种)•14 •排列、组合问题典例有20个零件,其中16个一等品,4个二等品,若从20个零件中任意取3个,那么至少有1个一等品的不同取法有____________________ 种.错解展示解析先从一等品中取1个,有C;6种取法;再从余下的19个零件中任取2个,有&9种不同取法,共有C6XCw = 2 736(种)不同取法.答案 2 736现场纠错解析方法一将“至少有1个是一等品的不同取法”分三类:“恰有1个一等品”,“恰有2个一等品”,“恰有3个一等品”,根据加法原理,有C e Ck C6C4+ C6 = 1 136(种).方法二考虑其对立事件“3 个都是二等品”,用间接法:C20- E= 1 136(种).答案 1 136纠错心得(1)解排列、组合问题的基本原则:特殊优先,先分组再分解,先取后排;较复杂问题可采用间接法,转化为求它的对立事件.⑵解题时要细心、周全,做到不重不漏.课时作业1 •两家夫妇各带一个小孩一起到动物园游玩,购票后排队依次入园,为安全起见,首尾一定共有要排两位爸爸,另外,两个小孩一定要排在一起,则这 6人的入园顺序排法种数为( )A . 48B . 36C . 24D . 12 答案 C解析(捆绑法)爸爸排法有A 2种,两个小孩排在一起故看成一体,有 A 2种排法,妈妈和孩子共有A 3种排法,•••排法种数共有 A 2A 2A != 24(种).故选C.2 . (2016 •黄山月考)某小区有排成一排的 7个车位,现有3辆不同型号的车需要停放, 如果要求剩余的4个车位连在一起,那么不同的停放方法的种数为 ( )A . 16B . 18C . 24D . 32 答案 C解析 将四个车位捆绑在一起,看成一个元素,先排3辆不同型号的车,在三个车位上任意排列,有A 3= 6(种)排法,再将捆绑在一起的四个车位插入 4个空档中,有4种方法,故共有4X 6= 24(种)方法.3.在航天员进行的一项太空实验中,要先后实施6个程序,其中程序A 只能出现在第一或最后一步,程序B 和C 在实施时必须相邻,问实验顺序的编排方法共有 ( )A . 34 种 B. 48 种 C. 96 种 D. 144 种答案 C解析 程序A 有兄=2(种)结果,将程序B 和C 看作一个元素与除 A 外的3个元素排列有 宓 =48(种), 根据乘法原理,实验编排共有2X 48= 96(种)方法.4 .将A , B, C , D, E 排成一列,要求 A, B , C 在排列中顺序为“ A, B, C'或“ C, B, A ” (可 以不相邻),这样的排列数有( )A . 12 种 B. 20 种 C. 40 种 D. 60 种答案 C解析(消序法)五个元素没有限制全排列为A 5,由于要求代B, C 的次序一定(按A, B, C 或C, B , A , 故除以这三个元素的全排列A 3,5.(2017 •长沙质检)某校高二年级共有 6个班级,现从外地转入4名学生,要安排到该年级 的两个班级且每班安排 2名,则不同的安排方案种数为( )B. 严D. 2A 2答案B解析 方法一 将4人平均分成两组有1&种方法,将此两组分配到 6个班级中的2个班有 A l 种.所以不同的安排方法有 5朋种.方法二 先从6个班级中选2个班级有C 6C3种不同方法,然后安排学生有 66种,故cldc ;6. (2017 •汉中质检)从正方体六个面的对角线中任取两条作为一对,其中所成的角为 60的共有( )A . 24 对 C. 48 对 D. 60 对答案 C解析 正方体中共有12条面对角线,任取两条作为一对共有 C ?2= 66(对),12条对角线中的 两条所构成的关系有平行、垂直、成60°角•相对两面上的4条对角线组成的C 4= 6(对)组 合中,平行有2对,垂直有4对,所以所有的平行和垂直共有 3C 4= 18(对).所以成60°角的有 C 2 — 3C i = 66 - 18= 48(对).7 .(2016 •北京西城区期末)现有5名教师要带3个兴趣小组外出学习考察, 要求每个兴趣小组的带队教师至多2人,但其中甲教师和乙教师均不能单独带队,则不同的带队方案有________ 种.(用数字作答) 答案 54解析 第一类,把甲、乙看作一个复合元素,另外3人分成两组,再分配到 3个小组中,有CA 3 = 18(种);第二类,先把另外的 3人分配到3个小组,再把甲、乙分配到其中 2个小组, 有 职=36(种).根据加法原理,共有 36 + 18= 54(种)不同的带队方案.8.(2017 •福州质检)在8张奖券中有一、二、三等奖各1张,其余5张无奖.将这8张奖券分配给4个人,每人2张,不同的获奖情况有 ____________ 种.(用数字作答) 答案 60解析 分两类:第一类:3张中奖奖券分给3个人,共 局种分法; 第二类:3张中奖奖券分给2个人相当于把3张中奖奖券分两组再分给 4人中的2人,共有CA 2种分法.总获奖情况共有 A 3+ C A ^= 60(种). 9.把5件不同产品摆成一排, 若产品A 与产品B 相邻,产品A 与产品C 不相邻,则不同的摆 法有 ________ 种. 答案 36B. 30 对解析先考虑产品A与B相邻,把A, B作为一个元素有A4种方法,而A, B可交换位置,所以有2A4= 48(种)摆法,又当A, B相邻且又满足A, C相邻,有2A3= 12(种)摆法,故满足条件的摆法有48- 12 = 36(种).10•若把英语单词“ good”的字母顺序写错了,则可能出现的错误方法共有 ____________ 种.答案11解析把g、o、o、d 4个字母排一列,可分两步进行,第一步:排g和d,共有屈种排法;第二步:排两个o,共一种排法•所以总的排法种数为A4= 12,其中正确的有一种,所以错误的共有A2- 1 = 12 - 1 = 11(种).11 •将A, B, C, D, E, F六个字母排成一排,且A, B均在C的同侧,则不同的排法共有 __________ 种. (用数字作答)答案480解析从左往右看,若C排在第1位,共有A5= 120(种)排法;若C排在第2位,A和B有C 右边的4个位置可以选,共有A T A;= 72(种)排法;若C排在第3位,则A, B可排C的左侧或右侧,共有A 73 + A48(种)排法;若C排在第4,5,6位时,其排法数与排在第3,2,1位相同,故共有2X (120 + 72 + 48)= 480(种)排法.12. 2016年某通讯公司推出一组手机卡号码,卡号的前七位数字固定,后四位数从“ 0000” 到“9999”共10 000 个号码中选择.公司规定:凡卡号的后四位恰带有两个数字“ 6”或恰带有两个数字“ 8”的一律作为“金猴卡”,享受一定优惠政策.如后四位数为“ 2663”,“8685”为“金猴卡”,求这组号码中“金猴卡”的张数.解①当后四位数恰有2个6时,“金猴卡”共有C S x 9X 9= 486(张);②当后四位数恰有2个8时,“金猴卡”也共有C4x 9X 9= 486(张). 但这两种情况都包含了后四位数是由2个6和2个8组成的这种情况,所以要减掉C24=6,即“金猴卡”共有486X2- 6= 966(张).13. 有9名学生, 其中2名会下象棋但不会下围棋, 3名会下围棋但不会下象棋, 4名既会下围棋又会下象棋.现在要从这9名学生中选出2名学生,一名参加象棋比赛,另一名参加围棋比赛,共有多少种不同的选派方法?解设2名会下象棋但不会下围棋的同学组成集合A,3名会下围棋但不会下象棋的同学组成集合B,4名既会下围棋又会下象棋的同学组成集合C,则选派2名参赛同学的方法可以分为以下4类:第一类:A中选1人参加象棋比赛,B中选1 人参加围棋比赛,方法数为 d •C3= 6(种);第二类:C中选1人参加象棋比赛,B中选1 人参加围棋比赛,方法数为 d •C31= 12(种);第三类:C中选1人参加围棋比赛,A中选1 人参加象棋比赛,方法数为 C •C2= 8(种);第四类:C中选2人分别参加两项比赛,方法数为A = 12(种). 根据加法原理,不同的选派方法共有6+12+8+12=38(种).14. (20 17 •洛阳预测)设三位数n= abc ,若以a, b, c为三条边的长可以构成一个等腰(含等边)三角形,则这样的三位数n有多少个?解a, b, c要能构成三角形的边长,显然均不为0,即a, b, c€ {1,2,3,…,9} •①若构成等边三角形,设这样的三位数的个数为n i,由于三位数中三个数字都相同,所以n i = & = 9;②若构成等腰(非等边)三角形,设这样的三位数的个数为n2,由于三位数中只有2个不同数2字,设为a, b,注意到三角形腰与底可以互换,所以可取的数组(a, b)共有2C2组,但当大数为底时,设a>b,必须满足b<a<2b,此时,不能构成三角形的数字是共20种情况.同时,每个数组(a, b)中的两个数字填上三个数位,有&种情况,故n2= C3(2C2—20)= 156.综上,n= m+ 165.。
C语言程序设计在线练习
C语言程序设计在线练习1.第1题以下程序的输出结果是______。
main(){ int i,x,a[10],b[3];x=5;for(i=0;i<10;i++) a[i]=i;for(i=0;i<3;i++) b[i]=a[i*(i+1)];for(i=0;i<3;i++) x=b[i]*2;printf("%d\n",x);}A.12B.21C.22D.23标准答案:A2.第2题定义如下变量和数组:int i;int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是______。
for(i=0;i<3;i++) printf("%d",x[i][2-1]);A.1 5 9B.1 4 7C.2 5 8D.3 6 9标准答案:C3.第3题写出下列程序的运行结果_______。
int x=-2;printf("%d,%u,%o",x,x,x);A.-2,-2,-2B.-2,32767,-177777C.-2,32768,177777D.-2,65534,177776标准答案:D4.第4题以下程序的运行结果是______。
# include "stdio.h"main(){ int a=1,b=2,c;c=max(a,b);printf("max is %d\n",c);}max(int x,int y){ int z;z=(x>y)?x:y;return(z);}A.2B.MAXIS2C.max is 2D.maxis2标准答案:C5.第5题写出下列程序的运行结果_______。
main(){ int a[]={2,4,6},*pr=&a[0],x=6,y,z;for(y=0;y<4;y++)z=(*(pr+y)<x)?*(pr+y):x;printf("%d\n",z);}A.6B.0C.4D.2标准答案:A6.第6题写出下列程序的运行结果_______。
电子学会青少年软件编程(C语言七级)等级考试真题试卷(2022年3月)-附答案
FindPath(matrix, x - 1, y, v); } if (y < n - 1 && matrix[x][y + 1] == 0) {
FindPath(matrix, x, y + 1, v); } if (y >= 1 && matrix[x][y - 1] =
{
now=q.front();
q.pop();
if(now.x<0 || now.x>=r || now.y<0 || now.y>=c) break;
//在 now 这里判断
for(int i=0;i<4;i++)
{
nxt.x = now.x+fx[i];//now.x替换了x
nxt.y = now.y+fy[i];
博学佑航-青少年考级竞赛题库
using namespace std; int m, n; struct Node {
int row; int col; }; vector<Node> now_path; void FindPath(int** matrix, int x, int y, vector<Node>& v) { matrix[x][y] = 1; now_path.push_back({ x, y }); if (x == m - 1 && y == n - 1) {
问答题 迷宫问题 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫, 其中的 1 表示墙壁, 0 表示可以走的路, 只能横着走或竖着走, 不能斜着走, 要求编程 序找出从左上角到右下角的最短路线。 时间限制: 1000 内存限制: 65536 输入 一个 5 × 5 的二维数组, 表示一个迷宫。 数据保证有唯一解。 输出 左上角到右下角的最短路径, 格式如样例所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7个hu不变矩c++程序小试
/blog/static/1207335020095247423457/
Opencv 2009-06-24 19:04 阅读246 评论6 字号:大大中中小小我使用OpenCV中的函数cvGetHumoments()计算7个hu不变矩时始终有错误,为了得到结果我自己用C++编写了一段计算7个hu不变矩的程序。
说明:图片必须是等边长的,即宽和高相等。
****或许图片宽不能大于40像素,如果是边缘检测后的线条图像,图像宽高的限制会降低。
如果你有什么好的想法,不妨留言交流一下。
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include <iostream.h>
float MOMENTS_M(IplImage* MAT,int p,int q) //空间距
{
CvScalar scl;
float M_sum_y;
float M_sum_xy;
int H,W;
H=MAT->height;
W=MA T->width;
for(int i=0;i<H;i++)
{ for(int j=0;j<W;j++)
{
scl=cvGet2D(MA T,i,j);
M_sum_y+=scl.val[0]*pow(j,q);
}
M_sum_xy+=pow(i,p)*M_sum_y;
}
return M_sum_xy;
}
float MOMENTS_U(IplImage* MAT,int p,int q,float X_,float Y_) //中心距{
CvScalar scl;
float N_sum_y;
float N_sum_xy;
int H,W;
H=MAT->height;
W=MA T->width;
for(int i=0;i<H;i++)
{ for(int j=0;j<W;j++)
{
scl=cvGet2D(MA T,i,j);
N_sum_y+=scl.val[0]*pow(j-Y_,q);
}
N_sum_xy+=pow(i-X_,p)*N_sum_y;
}
return N_sum_xy;
}
//归一化的中心距
void main()
{
int M00,M01,M10,M11,M02,M20,M12,M21,M03,M30;
float X_,Y_;
float U00,U02,U20,U11,U03,U30,U21,U12;
float N02,N20,N11,N03,N30,N12,N21;
float H1,H2,H3,H4,H5,H6,H7;
// IplImage* img;
IplImage* mat;
mat=cvLoadImage("pic5_00.jpg",0);
// mat=cvCreateImage(img->height,img->width,8); // cvCopy(img,mat);
M00=MOMENTS_M(mat,0,0);
M01=MOMENTS_M(mat,0,1);
M10=MOMENTS_M(mat,1,0);
M11=MOMENTS_M(mat,1,1);
M02=MOMENTS_M(mat,0,2);
M20=MOMENTS_M(mat,2,0);
M12=MOMENTS_M(mat,1,2);
M21=MOMENTS_M(mat,2,1);
M03=MOMENTS_M(mat,0,3);
M30=MOMENTS_M(mat,3,0);
X_=M10/M00;
Y_=M01/M00;
U00=M00;
U02=M02-M01*Y_;
U20=M20-M10*X_;
U11=M11-M10*Y_;
U03=M03-3*M02*X_+2*M10*X_*X_;
U30=M30-3*M02*Y_+2*M01*Y_*Y_;
U12=M12-2*M11*Y_-M02*X_+2*M10*Y_*Y_;
U21=M21-2*M11*X_-M20*Y_+2*M01*X_*X_;
cout<<U00<<"XXX"<<U02<<"XXX"<<U20<<"XXX"<<U11<<"XXX"<<U03<<"XXX"<<U30 <<"XXX"<<U12<<"XXX"<<U21<<endl;
N02=U02/U00/U00;
N20=U20/U00/U00;
N11=U11/U00/U00;
N03=U03/U00/U00/sqrt(U00);
N30=U30/U00/U00/sqrt(U00);
N12=U12/U00/U00/sqrt(U00);
N21=U21/U00/U00/sqrt(U00);
cout<<N02<<"XXX"<<N20<<"XXX"<<N11<<"XXX"<<N03<<"XXX"<<N30<<"XXX"<<N12 <<"XXX"<<N21<<endl;
//hu7个不变距
H1=N20+N02;
H2=(N20-N02)* (N20-N02)+4*N11*N11;
H3=(N30-3*N12)* (N30-3*N12)+(3*N21-N03)* (3*N21-N03);
H4=(N30+N12)* (N30+N12)+(N21+N03)* (N21+N03);
H5=((N30-3*N12)*(N30+N12)*((N30+N12)*(N30+N12)-3*(N21+N03)*(N21+N03))
+(3*N21-N03)*(N21+N03)*(3*(N30+N12)* (N30+N12)-(N21+N03)* (N21+N03)))*100000;
H6=(N20-N02)*((N30+N12)* (N30+N12)-(N21+N03)* (N21+N03))
+4*N11*(N30+N12)*(N21+N03);
H7=((3*N21-N03)*(N30+N12)*((N30+N12)*(N30+N12)-3*(N21+N03)*(N21+N03))
+(3*N12-N30)*(N21+N03)*(3*(N30+N12)* (N30+N12)- (N21+N03)* (N21+N03)))*100000;
cout<<H1<<"XXX"<<H2<<"XXX"<<H3<<"XXX"<<H4<<"XXX"<<H5<<"XXX"<<H6<<"XX X"<<H7<<endl;
}。