41.输出字符回形阵
成绩: 10 / 折扣: 0.8
输入图形行数N和中心字符,输出如图所示回形方阵。 例如,输入:5 Z 输出如下图形: X X X X X X Y Y Y X X Y Z Y X X Y Y Y X X X X X X
注:N<24,且N是奇数。
1. #include
4. char k,b,c,d,a;
5. scanf(\,&N,&k); 6. if(N%2==0)
7. printf(\,N); 8. else if(N<24)
9. { for(i=1;i<=N;i++) 10. { for(j=1;j<=N;j++) 11. { b=k-N/2+i-1; 12. c=k-N/2+N-j; 13. d=k-N/2+j-1; 14. a=k-N/2+N-i; 15. if(i<=j && i<=(N-j+1)) 16. {if(k<=90 && b<=64) b=90-(64-b)&; 17. if(k>=97 && b<=96) b=122-(96-b)&; 18. printf(\,b);} 19. if(i<=j && i>(N-j+1)) 20. {if(k<=90 && c<=64) c=90-(64-c)&; 21. if(k>=97 && c<=96) c=122-(96-c)&; 22. printf(\,c);} 23. if(i>j && i<=(N-j+1)) 24. {if(k<=90 && d<=64) d=90-(64-d)&; 25. if(k>=97 && d<=96) d=122-(96-d)&; 26. printf(\,d);} 27. if(i>j && i>(N-j+1)) 28. {if(k<=90 && a<=64) a=90-(64-a)&; 29. if(k>=97 && a<=96) a=122-(96-a)&;
30. printf(\,a);} 31. if(j!=N) printf(\);} 32. printf(\);} 33. } 34. }
42 子串反向——递归
成绩: 10 / 折扣: 0.8
请编写一个递归函数 reverse(char str[], int start, int end ) ,该函数的功能是将串 str 中下标从 start 开始到 end 结束的字符颠倒顺序。假设 start 和 end 都在合理的取值范围。 例如:
执行前:str[]=\;start=1 ;end=4 执行后:strr[]=\
要求在该函数中不使用新的数组,没有循环。
注意:只需要编写递归函数 reverse,系统中已经设置好了main函数。
预设代码 前置代码
view plaincopy to clipboardprint?
1. /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */ 2.
3. #include
5. { char str[100]; 6. int start, end; 7. gets(str);
8. scanf(\, &start, &end); 9. reverse( str, start, end ); 10. printf(\, str); 11. return 0; 12. } 13.
14. /* PRESET CODE END - NEVER TOUCH CODE ABOVE */ 15. #include
44. 函数递归
成绩: 10 / 折扣: 0.8
编写一个函数,使用递归算法求满足下述定义的整数序列的第n项。 f( n ) =
1
f(n-1) + f(n-3) f(n-2) + f(n-4) -1
当 n >= 0 且 n <= 4 时 当 n > 4 且n为偶数 时 当 n > 4 且n为奇数 时 其他
函数原型如下:
int findf(int n);
参数说明:n 项数;返回值是第n项值。 例如输入:10,输出:8
预设代码 前置代码
view plaincopy to clipboardprint?
1. /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */ 2.
3. #include
5. int main()
6. { int n,s, findf( int ); 7. scanf(\, &n); 8. s = findf(n);
9. printf(\, s); 10. return 0; 11. } 12. 13. /* PRESET CODE END - NEVER TOUCH CODE ABOVE */ 1. 2. 3. 4. 5. 6. 7. 8. 9.
int findf(int n) {
int i;
if(n>=0&&n<=4) i=1;
if(n>4&&n%2==0) i=findf(n-1)+findf(n-3); if(n>4&&n%2==1) i=findf(n-2)+findf(n-4); if(n<0) i=-1; return i; }