资源预览内容
第1页 / 共26页
第2页 / 共26页
第3页 / 共26页
第4页 / 共26页
第5页 / 共26页
第6页 / 共26页
第7页 / 共26页
第8页 / 共26页
第9页 / 共26页
第10页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
哈工大计算机院研究生入学考试机试编程题(09-12)哈工大计算机专业机试编程题(2009)题目描述: 用小于等于n元去买100只鸡,大鸡5元/只,小鸡3元/只,还有1/3元每只的一种小鸡,分别记为x只,y只,z只。编程求解x,y,z所有可能解。输入: 测试数据有多组,输入n。输出: 对于每组输入,请输出x,y,z所有可行解,按照x,y,z依次增大的顺序输出。样例输入:40样例输出:x=0,y=0,z=100x=0,y=1,z=99x=0,y=2,z=98x=1,y=0,z=99参考答案:#includeint main()int x, y, z;float n;while(scanf(%f,&n)!=EOF)for(x=0;5*x=n;x+)for(y=0;3*y=n;y+)z=100-x-y;if(5*x+3*y+(float)z/3)=n)printf(x=%d,y=%d,z=%dn,x,y,z);return 0;题目描述:输入10个数,要求输出其中的最大值。输入:测试数据有多组,每组10个数。输出:对于每组输入,请输出其最大值(有回车)。样例输入:10 22 23 152 65 79 85 96 32 1样例输出:max=152参考答案:#includeint main()int i, a10, maxn;while(scanf(%d,&a0)!=EOF)maxn=a0;for(i=1;i10;i+)scanf(%d,&ai);if(maxnai)maxn=ai;printf(max=%dn,maxn);return 0;题目描述:给定一个数n,要求判断其是否为素数(0,1,负数都是非素数)。输入:测试数据有多组,每组输入一个数n。输出:对于每组输入,若是素数则输出yes,否则输入no。样例输入:13样例输出:yes参考答案:#include#includeint judge(int n) int i; if(n=1) return 0; else for(i=2;i=sqrt(n);i+) if(n%i=0) return 0; return 1; int main() int n; while(scanf(%d,&n)!=EOF) if(judge(n) printf(yesn); else printf(non); return 0;题目描述:给定三角形的三条边,a,b,c。判断该三角形类型。输入:测试数据有多组,每组输入三角形的三条边。输出:对于每组输入,输出直角三角形、锐角三角形、或是钝角三角形。样例输入:3 4 5样例输出:直角三角形参考答案:/判断直角、锐角、钝角三角形#include#includevoid exchange(int *a,int *b) int temp=*a; *a = *b; *b = temp;int main() int a, b, c; int x; while(scanf(%d%d%d,&a,&b,&c)!=EOF) if(ab) exchange(&a,&b); if(ac) exchange(&a,&c); x = a*a - b*b -c*c; if(x=0) printf(直角三角形n); if(x0) printf(钝角三角形n); return 0;题目描述:输入字符串s和字符c,要求去掉s中所有的c字符,并输出结果。输入:测试数据有多组,每组输入字符串s和字符c。输出:对于每组输入,输出去除c字符后的结果。样例输入:healloa样例输出:hello参考答案:#include#includeint main() char a100, b; int i, j, l; while(scanf(%s %c,a,&b)!=EOF) j=0; l = strlen(a); for(i=0;il;i+) if(ai!=b) aj+=ai; aj=al; printf(%sn,a); return 0;哈工大计算机专业机试编程题(2010)题目描述: 求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。即完数是等于其所有因子相加和的数。输入: 测试数据有多组,输入n,n数据范围不大。输出: 对于每组输入,请输出1-n内所有的完数。如有案例输出有多个数字,用空格隔开,输出最后不要有多余的空格。样例输入:6样例输出:6参考答案:#includeint main() int n, i, j, k, a, b20=0; /b20存放小于n的完全数 while(scanf(%d,&n)!=EOF) /输入一个n k = 0; /bk表示第k+1个完全数,每次输入n后,k清零 for(i=2;i=n;i+) /2n,寻找完全数 a = 0; /a存放所有约数的和 for(j=1;ji;j+) if(i%j=0) a+=j; /判断是否为约数 if(a=i) /判断约数和与原数是否相等 bk+ = a; for(i=0;i(k-1);i+) /输出前k-1个完全数 printf(%d ,bi); printf(%dn,bi); /输出第k个 return 0;题目描述:给定a和n,计算a+aa+aaa+a.a(n个a)的和。输入:测试数据有多组,输入a,n(1=a=9,1=n=100)。输出:对于每组输入,请输出结果。样例输入:1 10样例输出:1234567900参考答案:/*-1.本题是一大数求和问题,无法用已知类型表示,故采用数组进行存储。2.可用数组表示成为一个栈,结果取值从低位到高位依次入栈,然后依次出栈。即s0表示为结果中的个位数,s1为十位数,依次类推。3.si的值可由(n - i)*a + temp)%10获得,其中temp为后一位向前的进位,temp 可由 (n - i)*a + temp)/10表示。temp初始值为0.4.注意结果如果为0时的情况,例输入 0 2 输出应为0 而不应是00;-*/#includeint main() int i, a, n, b50, temp=0, counter; while(scanf(%d%d,&a,&n)!=EOF) counter = 0; temp = 0; for(i=0;i=0;i-) if(bi=0) counter+; if(counter=(n+1) /结果全零,不
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号