真题演练-句子逆转

题目:
从键盘输入一个句子(假设字符数小于100个),句子中的单词之间用空格分隔,句子必须以一个标点符号作为结尾,句子开头和末尾标点符号前均没有空格,以回车表示输入结束,请编程颠倒句中的单词顺序并输出。
函数原型:int Inverse(char str1[], char str2[][N])
函数功能:将str1中的单词颠倒顺序后分别存入str2的每一行,返回str1中的单词数。
程序运行结果示例1:
Input a sentence:you can cage a swallow can’t you?↙
you can’t swallow a cage can you?

程序运行结果示例2:
Input a string:you are my sunshine!↙
sunshine my are you!

程序运行结果示例3:
Input a sentence:I love you!↙
you love I!

输入提示信息:"“Input a sentence:”"
输入格式: 用gets()函数
输出格式:
每个单词的输出格式:""%s “” (注意: %s后面有一个空格)
最后一个单词和标点符号的输出格式:""%s%c\n""

#include <stdio.h>
#include <string.h>
#define N 100
int Inverse(char str1[], char str2[][N]);
int Inverse(char str1[], char str2[][N])
{
    int i,j=0,t=0,len=strlen(str1);
    for(i=0;i<len-1;i++)
    {
        if(str1[i]!=' ')
            str2[t][j++]=str1[i];
        else
        {
            t++;
            j=0;
        }
    }
    str2[t+1][0]=str1[len-1];
    return t;
}
int main()
{
    char str1[N],str2[N][N];
    printf("Input a sentence:");
    gets(str1);
    int i,t=Inverse(str1,str2);
    for(i=t;i>=0;i--)
    {
        if(i!=0)
           printf("%s ",str2[i]);
        else
            printf("%s",str2[i]);
    }
    printf("%s%c\n",str2[t+1]);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值