浙江大学09计算机上机题(含答案)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

}

另:

相关文档
最新文档