浙江大学09计算机上机题(含答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、xxx定律
题目描述:
对于一个数n,如果是偶数,就把n砍掉一半;如果是奇数,把n变成3*n+ 1后砍掉一半,直到该数变为1为止。
请计算需要经过几步才能将n变到1,具体可见样例。
输入:
测试包含多个用例,每个用例包含一个整数n,当n为0 时表示输入结束。
(1<=n<=10000)
输出:
对于每组测试用例请输出一个数,表示需要经过的步数,每组输出占一行。
样例输入:
3
1
样例输出:
5
答案:
#include
#include
#include
int n, step;
int main() {
while (scanf("%d", &n), n) {
step = 0;
while (n != 1) {
if (n & 1) {
n = 3 * n + 1;
n >>= 1;
} else {
n >>= 1;
}
step++;
}
printf("%d\n", step);
}
return 0;
}
仅供参考
1.#include
2.unsigned int count=0;
3.
4.void odd(int);
5.void even(int);
6.
7.int main(void){
8. int a;
9. while(scanf("%u",&a)!=EOF && a!=0){
10. count=0;
11. if(a==1){
12. printf("%u\n",count);
13. continue;
14. }else if(a%2==0){
15. even(a);
16. }else{
17. odd(a);
18. }
19. printf("%u\n",count);
20. }
21.
22. return 0;
23.}
24.
25.void odd(int a){
26. a=a*3+1;
27. even(a);
28.}
29.
30.void even(int a){
31. if(a==2){
32. count++;
33. }else if(a%2==0){
34. a/=2;
35. count++;
36. even(a);
37. }else{
38. odd(a);
39. }
40.}
AC成功,分享一下
二、ZOJ
题目描述:
读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字符用完时,剩下的仍然按照ZOJ的顺序输出。
输入:
题目包含多组用例,每组用例占一行,包含ZOJ三个字符,当输入“E”时表示输入结束。
1<=length<=100。
输出:
对于每组输入,请输出一行,表示按照要求处理后的字符串。
具体可见样例。
样例输入:
ZZOOOJJJ
ZZZZOOOOOJJJ
ZOOOJJ
E
样例输出:
ZOJZOJOJ
ZOJZOJZOJZOO
ZOJOJO
答案:
已ac
#include
#include
int main()
{char a[101];
int k,k1,k2,k3,i;
while(scanf("%s",&a)!=EOF)
{if(a[0]=='E')return 0;
else
{k=-1+strlen(a);
k1=k2=k3=0;
for(i=0;i<=k;i++)
{if(a[i]=='Z')k1++;
if(a[i]=='O')k2++;
if(a[i]=='J')k3++;}
if(k1>=k2&&k2>=k3)
{for(i=1;i<=k3;i++)printf("ZOJ"); for(i=1;i<=k2-k3;i++)printf("ZO"); for(i=1;i<=k1-k2;i++)printf("Z"); printf("\n");continue;}
if(k1>=k3&&k3>=k2)
{for(i=1;i<=k2;i++)printf("ZOJ"); for(i=1;i<=k3-k2;i++)printf("ZJ"); for(i=1;i<=k1-k3;i++)printf("Z"); printf("\n");continue;}
if(k2>=k1&&k1>=k3)
{for(i=1;i<=k3;i++)printf("ZOJ"); for(i=1;i<=k1-k3;i++)printf("ZO"); for(i=1;i<=k2-k1;i++)printf("O"); printf("\n");continue;}
if(k2>=k3&&k3>=k1)
{for(i=1;i<=k1;i++)printf("ZOJ"); for(i=1;i<=k3-k1;i++)printf("OJ"); for(i=1;i<=k2-k3;i++)printf("O"); printf("\n");continue;}
if(k3>=k1&&k1>=k2)
{for(i=1;i<=k2;i++)printf("ZOJ"); for(i=1;i<=k1-k2;i++)printf("ZJ"); for(i=1;i<=k3-k1;i++)printf("J"); printf("\n");continue;}
if(k3>=k2&&k2>=k1)
{for(i=1;i<=k1;i++)printf("ZOJ"); for(i=1;i<=k2-k1;i++)printf("OJ"); for(i=1;i<=k3-k2;i++)printf("J"); printf("\n");continue;}
}
}
return 0;
}
另: