小米秋招第二题
2016-09-27 20:25
148 查看
给定一个句子(只包含字母和空格),将句子中的单词位置反转,单词用空格分割,单词之间只有一个空格,前后没有空格。
输入: hello xiao mi
输出: mi xiao hello
一开始的算法是想要把每个单词取出输入一个新的数组,但一直越界。。只得用malloc分配每次单词所需空间,将它倒置,最后将它倒着输出就行了~
代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char str[100];
char *change;
//scanf("%s", str1);
gets(str);
int len = strlen(str);
int i = len; int count = 0;
int space; int former;
while (i--)
{
if (int(str[i]) == 32)
{
count++;
space = i;
if (count == 1)
former = len;
int size = former - space - 1;
change = (char *)malloc(size*sizeof(char));
for (int k = 0; k < size; k++)
{
change[k] = str[space + k + 1];
}
for (int j = space; j < former - 1; j++)
{
str[j + 1] = change[size - 1 - (j - space)];
}
former = space;
}
}
//对第一个单词的处理
for (int i = 0; i < 100; i++)
{
if (int(str[i]) == 32)
{
int size = i;
change = (char *)malloc(size*sizeof(char));
for (int k = 0; k < size; k++)
{
change[k] = str[k];
}
for (int j = 0; j <size ; j++)
{
str[j] = change[size - j - 1];
}
break;
}
}
for (int i = len - 1; i >= 0; i--){printf("%c", str[i]);}//倒输出字符串
system("pause");
return(0);
}
学到的东西:
1. scanf输入连续字符串,不能存储空格。此时应该用gets。
2.错误的代码:str【i】==“ ”,这样判断空格是错误的,后面默认是int类型,最好将str【i】强制转换为ascll码。
依然存在的问题:
1.编程时间不长,但是总是想法太多,但是每一个想法都没什么具体的可行性,说明仍然对基础知识点的运用不熟悉,要加强锻炼。
2.一遇到字符串的赋值或者读取就懵逼。。。且不知道何时用char、char*.
输入: hello xiao mi
输出: mi xiao hello
一开始的算法是想要把每个单词取出输入一个新的数组,但一直越界。。只得用malloc分配每次单词所需空间,将它倒置,最后将它倒着输出就行了~
代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char str[100];
char *change;
//scanf("%s", str1);
gets(str);
int len = strlen(str);
int i = len; int count = 0;
int space; int former;
while (i--)
{
if (int(str[i]) == 32)
{
count++;
space = i;
if (count == 1)
former = len;
int size = former - space - 1;
change = (char *)malloc(size*sizeof(char));
for (int k = 0; k < size; k++)
{
change[k] = str[space + k + 1];
}
for (int j = space; j < former - 1; j++)
{
str[j + 1] = change[size - 1 - (j - space)];
}
former = space;
}
}
//对第一个单词的处理
for (int i = 0; i < 100; i++)
{
if (int(str[i]) == 32)
{
int size = i;
change = (char *)malloc(size*sizeof(char));
for (int k = 0; k < size; k++)
{
change[k] = str[k];
}
for (int j = 0; j <size ; j++)
{
str[j] = change[size - j - 1];
}
break;
}
}
for (int i = len - 1; i >= 0; i--){printf("%c", str[i]);}//倒输出字符串
system("pause");
return(0);
}
学到的东西:
1. scanf输入连续字符串,不能存储空格。此时应该用gets。
2.错误的代码:str【i】==“ ”,这样判断空格是错误的,后面默认是int类型,最好将str【i】强制转换为ascll码。
依然存在的问题:
1.编程时间不长,但是总是想法太多,但是每一个想法都没什么具体的可行性,说明仍然对基础知识点的运用不熟悉,要加强锻炼。
2.一遇到字符串的赋值或者读取就懵逼。。。且不知道何时用char、char*.
相关文章推荐
- 小米2015笔试第二题
- 中国互联网量级分化严重:小米将360踢出第二阵营
- 管理理念:小米成功启示录--团队第一,产品第二
- 真传x深度学习第二课:nvidia显卡驱动和cuda安装(小米13.3,显卡mx150)
- 安卓自动化测试第二课
- Android极光、小米、百度、jpush等一些推送简介
- 第二十八天【java虐我千百遍,我待java如初恋】
- 第二讲:云分类及服务模式
- 小米的软件危机
- ListView.OnScrollListener监听listview滚到最底部,实现分页加载(本文第一部分转载,第二部分原创)
- 网友吐槽和小米的策略缺陷
- WPF/E CTP Quick Start - 第二部分:创建一个XAML文件(翻译)
- 小米联合创始人黎万强:亚文化是产品经理必修课
- Linux与云计算——第二阶段Linux服务器架设 第六章:目录Directory服务器架设—NIS
- 【安卓开机动画】小米正在排队,请…
- 小米(MIUI)系统组招聘职位
- 论坛Discuz!代码第二课:表格代码T…
- Linux与云计算——第二阶段Linux服务器架设 第七章:网站WEB服务器架设—代理模块
- 小米官网抢手机攻略 六招搞定
- 分享磨砺营马剑威讲解-android项目开发第二弹