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, int n){
  27.  
  28. if(count==-1){
  29. return tmp;
  30. }
  31. else{
  32. tmp[n+count]=tmp[n+count-1];
  33. return zurashi(tmp,count-1,n);
  34. }
  35. }
  36.  
  37. char *setPalindrome(char s[]){
  38. char *tmp;
  39. int m,n,i,count=-1;
  40. n=myStrlen(s);
  41. m=2*n;
  42. tmp=(char *)malloc(sizeof(char )*m);
  43. for(i=0;i<n;i++){
  44. tmp[i]=s[i];
  45. }
  46. while(hantei(tmp)==0){
  47. count++;
  48. zurashi(tmp,count,n);
  49. tmp[n]=s[count];
  50. }
  51. printf("増やした文字数 : %d文字",count+1);
  52. return tmp;
  53. }
  54.  
  55.  
  56. //メイン関数はいじる必要はありません
  57. int main(){
  58. int i;
  59. char nyuryoku[1024]; //入力
  60. char *kaibun; //回文を受け取る
  61. scanf("%s",nyuryoku);
  62. kaibun = setPalindrome(nyuryoku);
  63. printf("%s -> %s\n",nyuryoku,kaibun);
  64. free(kaibun);
  65. return 0;
  66. }
  67.  
Success #stdin #stdout 0s 544KB
stdin
shiinaringo
stdout
増やした文字数 : 10文字shiinaringo  -> shiinaringogniraniihs