您的位置:首页 > 大数据 > 人工智能

"I am from shanghai"的多种倒序输出方式,“shanghai from am I”

2018-01-30 16:25 441 查看
1.指针,遇到空格对单词进行倒序,最后对字符串倒序。

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#define SIZE    5

int main()

{

   char str[]= {"i am from shanghai"};

 
 char *p1 = str;

 
 char *p2 = str + strlen(str) - 1;

 
 char tmp;

 
 char *p3 = NULL;

 while(p1 < p2)

 
 {

   
   tmp = *p1;
     *(p1++) = *p2;
 
*(p2--) = tmp;

   }

 printf("%s\n",str);

   p1 = str;

 
 p2 = str;

   while(*p2)

 
 {

  if(*p2 == ' ')
 {
   
p3 = p2 -1;
 
  while(p1 < p3)
 
  {
   
  tmp = *p1;
   
  *(p1++) = *p3;
   
  *(p3--) = tmp;
 
  }
 
  p1 = p2 + 1;
  }
 p2++;

 
 }

  

 printf("%s\n",str);

 
  return 0;

}

2.用二维数组,很容易理解。

#include <stdio.h>

#include <string.h>

/*char * gets(char *a)

{
scanf("%s",a);

}*/

int main()

{
int i=0,j=0,k=0,length;
char a[150] = {0}/*="i am from shanghai , and you asd sdfg wer"*/, b[150][150];
printf("Please input a sentence:\n");
gets(a);
//scanf("%s",  a);
printf("%s\n", a);

for(i = 0; i < strlen(a); i++)
{
if(' ' == a[i])
{
b[j][k]=' ';
b[j][k+1]='\0';
j++;
k = 0;
continue;
}

b[j][k] = a[i];
k++;
}

printf("%s ",b[j]);
for(i = j-1; i >= 0; i--)
printf("%s",b[i]);
printf("\n");

return 0;

}

3.用指针。

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main()

{
char c;
char *str= (char *)malloc (sizeof(char) * 20);
if (NULL == str)
{
printf("malloc failure\n");
}

    
char *t = str;
printf("please input:\n");
while((c = getchar()) != '\n')
{
*str++ = c;
}
str = t;
while(*str != '\0')
{
if (*str == ' ')
{
*str = '\0';
}
str++;
}
str--;

while(str != t)
{
if(*str == '\0')
{
printf("%s ",str+1);
}
str--;
}
printf("%s\n",t);

return 0;

}

4.用指针数组。

#include <stdio.h>

#include <stdlib.h>

int main ()

{
int i;
char *a[5]={0};

for(i = 0; i < 5; i++)
{
a[i] = (char*)malloc(sizeof(char) * 20);
if( NULL == a[i])
{
printf("failure\n");
exit(1);
}
scanf("%s",a[i]);
}
for(i = 4; i >= 0; i--)
{
printf("%s ",a[i]);
}
printf("\n");
return 0;

}

5.这是我自己学一维数组时写的,有点错误但是理论上是可以的。希望有人能加以修改。

#include <stdio.h>

#include <string.h>

int main()

{
int i,l,k,length;
char str[50]="I am from shanghai",ptr[50];
l = sizeof (str);
for(i = 0; i < l; i++)
{
length = sizeof (str);
if(' ' == str[i])
{
for(k = 0; k<= i; k++)
ptr[length - i + k-1] = str[k];
for(k = 0; k <= length - i; k++)
str[k] =str[k + i+1];
i = 0;
}
else if('\0' == str[i])
{
for(k = 0; k < i; k++)
ptr[k] = str[k];
ptr[i] = ' ';
break;
}
}

for(i =0; i < l; i++)
printf("%c",ptr[i]);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐