69,371
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<string.h>
int main()
{
char a[128];
fgets(a, 128, stdin);
int l = strlen(a);
char b[l];
int i,j,c=-1,d=0;
for(i = 0; i < l; i++)
{
if(a[i] == '\0')
break;
c++;
if(a[i] == ' ' || a[i] == '\n') {
for(j = 0; j < c; j++) {
b[d + j] = a[i-1-j];
}
d = d + c;
b[d++] = ' ';
c = -1;
}
}
printf("%s",b);
return 0;
}
之所以只对第一个单词反转,因为第二个单词后面没有空格,因为你的程序里只有遇到了空格才会反转;所以,在输入时注意在最后一个单词后面加空格;
考虑gets不安全,我用fgets代替,但fgets在最后会有一个回车符加入到缓存(当输入的数据少于字符数组长度时)
#include<stdio.h>
#include<string.h>
int main()
{
char a[1000];
gets(a);
int l=strlen(a);
char b[l];
int i,m,c=-1,d=0;
for(i=0;i<100;i++)
{
c++;
if(a[i]==' ' || a[i]=='\0')
{
for(m=0;m<c;m++)
{
b[d+m]=a[i-1-m];
}
d=d+c;
b[d++]=' ';
c=-1;
if(a[i]=='\0')
break;
}
}
printf("%s",b);
return 0;
}