【单词倒置】附一个考试易错点

来源:互联网 发布:淘宝智能版怎么装修 编辑:程序博客网 时间:2024/06/13 20:59

描述:

给一行英文句子,把每个单词倒置,注意:单词的顺序不变。

输入:

一行英文句子,其中只包含大写字母、小写字母和空格。

输出:

把每个单词的字母倒置输出。

输入样例:

 akhk jrow mfo zj ajp

输出样例:

 khka worj ofm jz pja

#include <stdio.h>#include <stdlib.h>#include <string.h>
char a[1000];           //输入的字符型数组int Start[1000];        //a[]中单词的第一个字母起始点位置int scnt;               //数数,第几个起始点int End[1000];          //a[]中单词最后一个字母后的空格位置int ecnt;               //数数,第几个结束点int x;                  //输入的字符长度
void init();void daozhi();void output();
int main(){    gets(a);    x = strlen(a);
    init();
    daozhi();
    output();    return 0;}
void init(){    int i;    scnt = 0;    ecnt = 0;    for(i = 0; i < x; i ++)    {        if(a[0] != ' ' && i == 0)        {            Start[scnt] = 0;            scnt ++;        }        else if(i >= 1)        {            if(a[i] != ' ' && a[i - 1] == ' ')            {                Start[scnt] = i;                scnt ++;            }        }        else            ;    }    for(i = 0; i < x; i ++)    {        if(i >= 1)        {            if(a[i] == ' ' && a[i - 1] != ' ')            {                End[ecnt] = i - 1;                ecnt ++;            }            else if(a[x - 1] != ' ' && i == x - 1)            {                End[ecnt] = x - 1;                ecnt ++;            }            else                ;        }    }}
void daozhi(){    int i;    int j;    int s, e;    int temp;               //字母交换时的介质    for(i = 0; i < scnt; i ++)    {        s = Start[i];        e = End[i];        if((e - s) % 2 == 0)        {            for(j = 0; ; j ++)            {                s += j;                e -= j;                if(s == e)                    break;                temp = a[s];                a[s] = a[e];                a[e] = temp;                s = Start[i];                e = End[i];            }        }        else        {            for(j = 0; ; j ++)            {                s += j;                e -= j;                if(e < s)                    break;                temp = a[s];                a[s] = a[e];                a[e] = temp;                s = Start[i];                e = End[i];            }        }    }}
void output(){    int i;    for(i = 0; i < x; i ++)    {        if(i == x - 1)            printf("%c\n", a[i]);        else            printf("%c", a[i]);    }}
我开始output();函数是这样写的:
void output(){    int i;    for(i = 0; i < x; i ++)    {        printf("%c", a[i]);    }}
当然,这样写输出的形式和答案一模一样,但是总显示格式错误提交不了。这是为什么呢?
因为考试要求最后一个输出要打回车!!!
这也许是很多同学会忘记的,在此提出来,作为对大家的一个提示。
希望能帮助到大家!!

原创粉丝点击