| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 524 人关注过本帖
标题:[求助]解释一下这个程序每句意思谢谢
只看楼主 加入收藏
冀霸天
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-7-1
收藏
 问题点数:0 回复次数:4 
[求助]解释一下这个程序每句意思谢谢

#include <iostream>
using namespace std;
void main()
{

int i;
char word;
string str;
while ((word = cin.get()) != '\n')
{
for (i = 1;i < str.size();i++)
{
if(str[i]>='A'&&str[i]<='Z')
str[i]+=32;
}
str += word;
}
for (i = 1;i < str.size();i++)
{
if (str[i] < str[i-1])
{
char temp = str[i];
int j = i;
do
{
str[j] = str[j-1];
--j;
}
while (j > 0 && temp < str[j-1]);
str[j] = temp;
}
}
for (int k = 0;k< str.size();k++)
cout<<str[k]<<endl;
}

搜索更多相关主题的帖子: 解释 
2007-07-01 19:15
lous122
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-5-23
收藏
得分:0 

#include <iostream>
using namespace std;
void main()
{

int i; \\定义一个整型变量i
char word;
string str; \\定义一个字符串变量str
while ((word = cin.get()) != '\n') \\当输入不为回车时实现循环
{
for (i = 1;i < str.size();i++)
{
if(str[i]>='A'&&str[i]<='Z')
str[i]+=32; \\当输入字符为大写字母时转化为小写
}
str += word; \\str字符串与word字符相连
}
for (i = 1;i < str.size();i++) \\实现字符从小到大排序 word该字符大小写不变
{
if (str[i] < str[i-1])
{
char temp = str[i];
int j = i;
do
{
str[j] = str[j-1];
--j;
}
while (j > 0 && temp < str[j-1]);
str[j] = temp;
}
}
for (int k = 0;k< str.size();k++)
cout<<str[k]<<endl;
}


2007-07-01 19:43
terisevend
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-2
收藏
得分:0 
(1)定义数据;
(2)从输入设备中获得字符串,并把一个字符付给word,如果word不等于换行符,则进行下面的大写字母换成小写字母的操作。(不包括头和尾的字符判断转换。)
(3)for当中的内容就是对大写字母换成小写字母的操作。(不包括头和尾的字符判断转换。)
(4)然后就把word的字符给str。(就是因为这一步在(3)后面,所以最后一个字符不会被判断转换。)
(5)简单的说,就是对str中的字符进行从小到大的排序。
(6)让目前(i)的字符与前一个(i-1)字符进行比较,如果比前一个字符小,则让目前(i)字符与前面的i个字符比较。顺便把他们的位置后移(如果你学过数据结构,你会很了解,对于字符串的插入的其中一种方法中,有用到这个。)
当找到位置,便插入。(当中用到的i字符与i-1字符比较,有点冒泡算法的味道。。。)
(7)不用我说了吧,就是把结果输出。
(8)总结:这个程序的功能就是把从输入设备中所获得字符进行字母大小转换(除头和尾)和从小到大排序。当然,这个程序是可以改进的。例如加入一些变量用来记录上一次str中的字母转换到哪里。从而从那位置开始对后面的进行转换,(空间换时间)。还有其他的一些改进,这里不多说了。
(9)当遇到读不懂的程序的时候,就把程序运行一下,看看结果与初时有什么不同,再结合代码来看,会容易理解很多。
(10)我最近在学习数据结构和算法设计,如果你也有兴趣的话,欢迎和我交流。

2007-07-01 19:57
mcquay
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-6-18
收藏
得分:0 

str+=word

为什么这么做?怎么不直接str=word?
菜鸟问题


2007-07-02 10:38
terisevend
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-2
收藏
得分:0 
因为word的类型是char,每次只能获得一个字节的字符,而str为string字符串类型,所以不能用=,一用=,则str等于的只是一个字符,并不是一个字符串。你可以做一下测试,分别定义一个char(a)和string(b)类型变量,然后从键盘输入一个字符串,赋予a,然后再让a=b,然后分别输出a和b,你可以发现,输出的b和a都是输入的字符串中第一个字符。

2007-07-02 23:36
快速回复:[求助]解释一下这个程序每句意思谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027181 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved