![]() |
#2
do8do8do82020-12-24 21:11
|
输入
I like thinking...
输出
I ekil gnikniht...
下面是我的代码:

#include <stdio.h>
#include <string.h>
int main(void)
{
char a[20];
gets(a);
int len;
len=strlen(a);
char b[20][20];
int i,j,k;
int m[20];
j=0;
k=0;
for(i=0;i<len;i++)//将输入的字符串化为二维数组 每一个单词单独占一行
{
if(a[i]==' ')
{
j++;
k=0;
continue;
}
b[j][k]=a[i];
k++;
m[j]=k;
}
/*int t;
for(t=0;t<j+1;t++)
printf("%d\n",m[t]);*/
int p,q;
char c[20][20];
char d[20];
for(p=0;p<j+1;p++)//行
{ for(q=0;q<m[p];q++)//列
{
if(b[p][m[p]-1-q]>='a'&&b[p][m[p]-1-q]<='z'||b[p][m[p]-1-q]>='A'&&b[p][m[p]-1-q]<='Z')
c[p][q]=b[p][m[p]-1-q];//逆序,c为逆序后的数组
}
}
p=0;
while(p<j+1)
{
for(q=0;q<m[p];q++)
{
printf("%c",c[p][q]);
}
p++;
printf(" ");
}
return 0;
}
#include <string.h>
int main(void)
{
char a[20];
gets(a);
int len;
len=strlen(a);
char b[20][20];
int i,j,k;
int m[20];
j=0;
k=0;
for(i=0;i<len;i++)//将输入的字符串化为二维数组 每一个单词单独占一行
{
if(a[i]==' ')
{
j++;
k=0;
continue;
}
b[j][k]=a[i];
k++;
m[j]=k;
}
/*int t;
for(t=0;t<j+1;t++)
printf("%d\n",m[t]);*/
int p,q;
char c[20][20];
char d[20];
for(p=0;p<j+1;p++)//行
{ for(q=0;q<m[p];q++)//列
{
if(b[p][m[p]-1-q]>='a'&&b[p][m[p]-1-q]<='z'||b[p][m[p]-1-q]>='A'&&b[p][m[p]-1-q]<='Z')
c[p][q]=b[p][m[p]-1-q];//逆序,c为逆序后的数组
}
}
p=0;
while(p<j+1)
{
for(q=0;q<m[p];q++)
{
printf("%c",c[p][q]);
}
p++;
printf(" ");
}
return 0;
}
然后我的输出结果是这样的:
i like thinking...
i ekil gnikniht
可以看到,标点符号没有输出且占了位置。请教大佬们我该如何修改才能显示出样例中输出的结果。