fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int myStrlen(char s[]){
  5. int i;
  6. for(i=0;s[i]!='\0';i++);
  7. return i;
  8. }
  9.  
  10. int hantei(char tmp[]){
  11. int n,medi;
  12. n=myStrlen(tmp);
  13. if(n%2==1){
  14. medi=(n/2)+1;
  15. }else{
  16. medi=(n/2);
  17. }
  18.  
  19. for(int i=0;i<medi;i++){
  20. if(tmp[i]!=tmp[n-1-i]){
  21. return 0;
  22. }
  23. }
  24. return 1;
  25. }
  26. char *zurashi(char tmp[], int count){
  27. int n;
  28. n=myStrlen(tmp);
  29. if(count==0){
  30. return tmp;
  31. }
  32. else{
  33. tmp[n+count]=tmp[n+count-1];
  34. return zurashi(tmp,count-1);
  35. }
  36. }
  37.  
  38. char *setPalindrome(char s[]){
  39. char *tmp;
  40. int m,n,i,count=0;
  41. n=myStrlen(s);
  42. m=2*n;
  43. tmp=(char *)malloc(sizeof(char )*m);
  44. for(i=0;i<n;i++){
  45. tmp[i]=s[i];
  46. }
  47. while(hantei(tmp)==0){
  48. zurashi(tmp,count);
  49. tmp[n]=s[count];
  50. count++;
  51.  
  52. }
  53. return tmp;
  54. }
  55.  
  56.  
  57. //メイン関数はいじる必要はありません
  58. int main(){
  59. int i;
  60. char nyuryoku[1024]; //入力
  61. char *kaibun; //回文を受け取る
  62. scanf("%s",nyuryoku);
  63. kaibun = setPalindrome(nyuryoku);
  64. printf("%s\n -> %s\n",nyuryoku,kaibun);
  65. free(kaibun);
  66. return 0;
  67. }
  68.  
Success #stdin #stdout 0s 5348KB
stdin
ab
stdout
ab
  -> aba