c语言 输入一个字符串 (一句英文)然后将英文里所有的单词逆序 然后输出这个字符串 大神帮我改程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 输入一个字符串 (一句英文)然后将英文里所有的单词逆序 然后输出这个字符串 大神帮我改程序相关的知识,希望对你有一定的参考价值。

我的程序 大神帮我把程序改一下 加注释 谢谢
我的程序:
#include <stdio.h>
int main()

int i,j;
char myString[300],temp[20];
j=0;
int p;//用来记录数组位置
p=0;
/*scanf("%d",&T);
for (i=0;i<T;i++)

gets(myString[i]);
*/
gets(myString);
for (i=0;;i++)

//p=i;
if (myString[i]==0)

break;

if (myString[i]==' ')

//j=0;
p=i;
for (j=0;;j++)

if(myString[p]==' ')
break;
myString[p]=temp[j];
p--;

j=0;

temp[j]=myString[i];

printf("%s\n",myString);
return 0;

没按你的要求,我自己写了一个,,,满意望采纳...
#include <stdio.h>
#include <string.h>
int main()

char s[3000],c[1000][20]=0;//c[j]来储存单词,k是单词中的字母
int i,j=0,k=0;
gets(s);
for(i=0; i<strlen(s); i++)

if(s[i]==' ')

j++; //遇空格换下一个单词,k归零
k=0;
continue;

c[j][k]=s[i];
k++;

for(i=j; i>=0; i--)//逆序输出
printf("%s ",c[i]);
追问

谢谢 不过你写的程序没有按照我的要求 我想的是 每一个单词都逆序输出 不过你的程序还是给了我很大启发 我也在你的程序的基础上写出来了 谢谢

参考技术A #include<stdio.h>
#include<string.h>
#define SIZE 15
int main()

char words[SIZE][15];
char s[SIZE*15];
int i,j,num=0;
gets(s);
i=0;
while(s[0]!='\0')

if(i==0)

if(s[0]!=' ')

j=0;
num++;
words [num-1][j]=s[0]; /////第一个单词保存
if(words [num-1][j]>='a'&&words [num-1][j]<='z')
words [num-1][j]=words [num-1][j]-32; //////首字母大写



for(i=1;i<(SIZE*15);i++)

if(s[i-1]=' ')

if(s[i]!=' ')

j=0;
num++;
words [num-1][j]=s[i];
if(words [num-1][j]>='a'&&words [num-1][j]<='z')
words [num-1][j]=words [num-1][j]-32;

else//////s[i]==' ';




for()
printf("%c",words[num-1][j]);
system("pause");
return 0;


这是一个不完整的程序,不知道怎么写了
参考技术B

不改你的了,提供一个作参考……

//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "ctype.h"
#include "string.h"
int main(void)
    char text[300],tmp[20],ch;
    int i,j,n,ln,lx;
    printf("Type a text...\\ntext=");
    ln=strlen(gets(text));
    for(i=0;i<ln;i++)
        sscanf(text+i,"%s%n",tmp,&n);
        if(isalpha(tmp[0]))
            if(lx=strlen(tmp)-1,!isalpha(tmp[lx]))
                lx--;
            for(j=0;j<lx;j++,lx--)
                ch=text[i+j],text[i+j]=text[i+lx],text[i+lx]=ch;
        
        i+=n;
    
    printf("%s\\n",text);
    return 0;

本回答被提问者和网友采纳

C语言描述,将一句话的单词进行倒置,标点符号不倒置。

题目描述

将一句话的单词进行倒置,标点符号不倒置。

输入示例

每次输入一个测试用例,输入长度不超过100

I love you.

输出实例

依次输出倒置后的字符串,以空格分割

you. love I

#include<stdio.h>
#include<string.h>
#include<assert.h>
void ReverseArr(char* begin, char* end)
{
    assert(begin && end);
    while (begin < end)
    {
        char temp = *begin;
        *begin = *end;
        *end = temp;
        begin++;
        end--;
    }
}
int main()
{
    char arr[100] = { 0 };
    gets(arr);
    int sz = strlen(arr);
    //1.将字符串所有都逆序
    ReverseArr(arr, arr + sz - 1);//将数组首地址和数组末地址传过去
    //uoy evol I
    //2.再逆序每个单词
    char* start = arr;
    while (*start)
    {
        char* end = start;
        while(*end != ' ' && *end != '\\0')//uoy evol I
        {
            end++;
        }//出循环*end为' '或者'\\0'
        ReverseArr(start, end - 1);
        //当*end为字符空格时,说明后面还有单词,end+1指向下一个单词的起始位置
        if (*end == ' ')
        {
            start = end + 1;
        }
        else//此时*end为'\\0',说明已经结束,将end指向赋给start,结束大循环,所有单词逆序完成
        {
            start = end;
        }
    }
    printf("%s\\n", arr);
    return 0;
}

另一种写法:

#include<stdio.h>
#include<string.h>
#include<assert.h>
void ReverseArr(char *begin,char *end)
{
    assert(begin && end);
    while(begin<end)
    {
        char temp=*begin;
        *begin=*end;
        *end=temp;
        begin++;
        end--;
    }
}
int main()
{
    char arr[100]={0};
    gets(arr);
    int sz=strlen(arr);
    //1.逆序整个字符串
    ReverseArr(arr,arr+sz-1);
    //uoy evol I
    //2.逆序每个单词
    int i=0;
    int j=0;
    for(i=0;i<sz;i++)
    {
        if(arr[i]==' ')
        {
            ReverseArr(arr+j,arr+i-1);
        }
        j=i+1;
        if(i==sz-1)
        {
            ReverseArr(arr+j,arr+i)
        }
    }
    return 0;
}

image-20210520185555639

以上是关于c语言 输入一个字符串 (一句英文)然后将英文里所有的单词逆序 然后输出这个字符串 大神帮我改程序的主要内容,如果未能解决你的问题,请参考以下文章

c语言中,使用scanf输入一句话,中间有空格,怎样用printf将这句话打印出来

C语言 输入一句英文,统计其中单词个数,单词之间用空格隔开

C语言中输入一个字母,怎么输出它的下一个字母

C语言:输入一个字符串,然后逆序输出

如何用C语言将输入的数字转化成英语

用一句Halle认识C 语言