ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

颠倒句子中的单词顺序(哈工大Mooc)

2020-11-29 09:06:08  阅读:172  来源: 互联网

标签:ARR rows ++ str2 str1 Mooc 单词 哈工大 SIZE


Mooc课后习题集 及 做到的一些有趣的题

啊 关于这道题 因为我在上传的时候我有意识的去把哈工大后面的编程题题目和我上传的博客 题目改成一样 目的就是还想着 以后大一的新同学如果还用哈工大mooc的教材有不会的题 搜索出来也方便
当时我在我做过的题中 找这个题的程序 找了半天才找到 我把答案输进去试了一下 结果发现答案是错的:) 于是乎我又重新做了一次
这道题有很多地方需要注意 因为笔者也是调试了好久才调试成功qwq 水平有限 用指针还不是很会做hhhhh 希望这个能对大家有所启发

#include<string.h>
#include<stdio.h>

#define ARR_SIZE 100
int Inverse(char str1[ARR_SIZE],char str2[ARR_SIZE][ARR_SIZE]);

int main()
{
    int rows;
    char str1[ARR_SIZE],str2[ARR_SIZE][ARR_SIZE],character;
    //首先初始化字符串 character表示最后的符号
    printf("Please enter a string: ");
    gets(str1);
    //获取字符串str1
    character = str1[strlen(str1)-1]; 
    //这个是把符号给提取出去 剪1的原因是字符串是从0开始的 
    //而strlen不会读入'\0'
    str1[strlen(str1)-1] = '\0'; 
    //这个是把最后的符号给直接变空 免得把后面的Inverse给影响到了
    rows = Inverse(str1,str2);
    //rows返回的是str2一共有的行数
    printf("The inversed string is: ");
    while(--rows)
    {
        printf("%s ",str2[rows]);
    }
    printf("%s%c\n",str2[rows],character);
    return 0;
}

int Inverse(char str1[ARR_SIZE],char str2[ARR_SIZE][ARR_SIZE])
{
    int i=0,j=0,k=0;
    //i 记录str1的具体字符位置 j表示行数 k表示每一列
    for(; ;)
    //重复循坏
    {
        if(str1[i] != ' ' && str1[i] != '\0')
            str2[j][k++] = str1[i++];
            //这里是当str1中有效字符 赋值并且i向后移 k向后移动
        else if(str1[i] == ' ')
        {
            j++;
            i++;
            k=0;
            //将列数自动移到0 i继续向后移动 j来到下一行
        }
        if(str1[i] == '\0')
        {
             str2[j++][k] = ' ';
             //结束时最后一行的末尾还需要加个空格 
             //因为待会printf时是从最后一行开始读取
             //会导致第一组字符和第二组 没有间隔
             break;
        }
    }
    return j;
}

标签:ARR,rows,++,str2,str1,Mooc,单词,哈工大,SIZE
来源: https://blog.csdn.net/qq_37500516/article/details/110245230

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有