一、单项选择题:(共15题,每题2分,共30分)
1)若int x=2,求x的19次方,下列语句正确的是______
A. for(int i=0;i<19;i++) x*=2; B. for(int i=0;i<19;i++) x*=x; C. x=x<<19; D. x=x<<18; 答案为D
2)关于下列代码,说法正确的是______
char *p=\"abcd\"; p[0]=0; A. 编译错
B. p指向的串变为空串 C. p指向串变为:\"0bcd\" D. 运行异常 答案为D
二、程序填空:(共5题,每题6分,每题可能有多个空,共30分)
任意给定一个4位数(不能所有位都相同),比如:3278,重新组合出最大数:8723,再重新组合出最小数:
2378,相减,得到新的4位数(如不足则补0),重复这个过程,最后必然得到一个数字:6174。这个现象被称为:数字黑洞。下面的函数实现由给定的4位整数求出下一个整数的功能。请完善之。 int f(int n) {
int N[4];
for(int i=0;i<4;i++) { N[3-i]=n%10; }
__________;
for(i=0;i<3;i++)
for(int j=0;j<3-i;i++) if(__________)
{ }
int t=N[j+1]; N[j+1]=N[j]; N[j]=t;
int n_min=0; for(i=0;i<4;i++) n_min=n_min*10+N[i];
int n_max=0;
for(i=3;i>=0;i++) n_max=n_max*10+N[i]; return n_max-n_min;
}
答案: n/=10
N[j]>N[j+1]
三、编程题:(共两题,每题20分,共40分)
1)4位反序数。
设N是一个四位数,它的k倍(1 int a,b,c,d,e,f,g,k; for(a=1;a<10;a++) for(b=0;b<10;b++) for(c=0;c<10;c++) for(d=0;d<10;d++) { f=a*1000+b*100+c*10+d; g=a+b*10+c*100+d*1000; for(k=2;k<10;k++) { e=f; e=e*k; if(e==g) { cout< } cin>>z; return 0; 2)字谜。 下列乘法算式中:每个汉字代表1个数字(1~9)。相同的汉字代表相同的数字,不同的汉字代表不同的数字。 赛软件 * 比赛 = 软件比拼 试编程确定使得整个算式成立的数字组合。 int z; int a,b,c,d,e,f,g,h; for(a=1;a<10;a++) for(b=1;b<10;b++) for(c=1;c<10;c++) { f=100*a+10*b+c; for(d=1;d<10;d++) { g=10*d+a; for(e=0;e<10;e++) { h=b*1000+c*100+d*10+e; if(((f*g)==h)&&(a!=b)&&(a!=c)&&(a!=d)&&(a!=e)&&(b!=c)&&(b!=d)&&(b!=e)&&(c!=d)&&(c!=e)&&(d!=e)) { cout< } cin>>z; return 0; 465 * 14 = 6510 但是由于每个汉字都不能是0,因此可能无解。 四、附加编程题:天平。 (50分) 一根均匀的木棍,中间吊起来成为天平。木棍的左右两边各有N(N<=7)个均匀的刻度。现有N个砝码,重 量为1到N克,全部都要放在天平的两边的各个刻度上,每个刻度只能放一个砝码,问要保持天平的平衡,有多少种不同的放置方案(左右对称的方案只算一种),请输出每一种方案。 例如,N=5时, 请输出: 4[2] 5[1] -- 2[1] 1[2] 3[3] (4[2]的含义是4克的砝码放在刻度为2的位置) 5[2] 4[1] -- 1[1] 2[2] 3[3] …… 注意: 1[2] 2[1] 3[3] -- 4[2] 5[1] 由于和第一种左右对称,不能输出。 4[2] 5[1] -- 1[2] 2[1] 3[3] 由于和第一种只是输出顺序的不同,也不能输出。 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务