投入就放过 发表于 2022-3-17 22:36:53

c 语言

//用二维数组存放每个单词

#include <stdio.h>

#define MAX80

int main(void)
{
        char str;
        char *p=str;
        int cot=0,i=0,j=0;
    char ch;
   
        fgets(str,MAX,stdin);
        while(*p++!='\n')
        {
                if(*p==' ')
                {
                        cot++;       
                }       
        }
        char word;

        p=str;
        while((ch=*p++)!='\n')
        {
                if(ch!=' ')
                {
                        word=ch;
                }
                if(ch==' ')
                {
                        word='\0';
                        i++;
                        j=0;
                }
        }
        word='\0';
       
        for(cot;cot>=0;cot--)
        {
                printf("%s",word);
                if(cot>0)
                {
            printf(" ");
                }
        }

        return 0;
}

我的思路是先创建一个二维数组,存好每个单词,最后根据最后一个单词没有句号输出,但是结果说我的程序运行时出现错误(如数组越界等问题),这是哪里出现了问题呢,请教各位大佬!

jhq999 发表于 2022-3-18 06:59:45

本帖最后由 jhq999 于 2022-3-18 07:40 编辑

#include <stdio.h>

#define MAX80

int main(void)
{
      char str;
      char *p=str;
      int cot=0,i=0,j=0;
      char ch;
      
      fgets(str,MAX,stdin);
      while(*p++!='\n')
      {
                if(*p==' ')
                {
                        cot++;      
                }      
      }
                cot++;//最后一个没有空格
      char (*word)=new char;

      p=str;
      while((ch=*p++)!='\n')
      {
                if(ch!=' ')
                {
                        word=ch;
                }
                if(ch==' ')
                {
                        word='\0';
                        i++;
                        j=0;
                }
      }
      word='\0';
      
      for(cot;cot>0;cot--)///////////
      {
                printf("%s",word);
                if(cot>0)
                {
            printf(" ");
                }
      }

      return 0;
}
#include <stdio.h>

#define MAX80

int main(void)
{
      char str;
      int cot=0,i=0,j=0;
      char ch;
      
      fgets(str,MAX,stdin);
      while(str!='\n')
      {
                        cot++;         
      }
        str='\0';
      for(cot;cot>0;cot--)
      {
                        if (str==0x20)
                        {
                                printf("%s",str+cot+1);
                                printf("%c",0x20);
                                str='\0';
                        }
      }
        printf("%s",str);
      return 0;
}
w eqrty u iop f gggh kl a
a kl gggh f iop u eqrty w

傻眼貓咪 发表于 2022-3-18 09:44:46

#include <stdio.h>

void foo(){
        char words;
        if(scanf("%s", words) == 1)
                ;
        else return;
        foo();
        printf("%s ", words);
}

int main(){
        foo();
        return 0;
}

投入就放过 发表于 2022-3-18 12:08:41

傻眼貓咪 发表于 2022-3-18 09:44


用递归只能实现反着输出,但是最后还是会有空格{:10_266:}
页: [1]
查看完整版本: c 语言