C++作业
- 格式:doc
- 大小:36.00 KB
- 文档页数:4
面向对象程序设计(C++) 编程作业 v2010.9
(以下作业都要求面向对象风格,标准C++程序,以您认为最佳的形式编程)
1. 构造求解圆柱体体积,侧面积的类 Cylinder;再派生出求解圆柱体质量(重
量)的类 Pillar。写出完整的程序(包括功能测试的主程序)。
2. 编写求解一元二次方程的程序(设误差为0.1e-8)。
3. 编程:输入一个字符串(不超过200字符),能够将全部字符进行偏移变换,
并能够还原。如偏移为1,输入串为 "abcd2345",则变换并输出为"bcde3456"。
4. 对一组双精度实数进行选择法排序。要求数据动态内存分配。
5. 分别以十六进制,八进制,十进制各输入一个整数;再将这三个整数以二进
制输出。
6. 输入一组双精度数,查找某个值(如1.0)出现的次数,设误差为0.1e-5。
(要求数据动态内存分配)
再将全部数据保留小数4位,小数第5位四舍五入,将处理后的数据写入一
个文本文件中。
7. 输入一段多行的文字,以空行结束,统计每个字母出现的个数(字母不区分
大小写)。
8. 输入一个字符串,将其中的每个单词作反转替换并输出。如输入
"etihW, dna kcalb.",则变换后的串为 "White, and black."
<完>
爱学网's Archiver
论坛 › C语言面试题 › C/C++面试题:编程实现字符串中各单词的翻转
fanchenqiong 发表于 2011-2-21 09:16:26
C/C++面试题:编程实现字符串中各单词的翻转
C/C++面试题:编程实现字符串中各单词的翻转
考点:字符串相关的综合编程能力
出现频率:☆☆☆
编写函数,将"I am from Shanghai"倒置为"Shanghai from am I",即句子中的单词位置倒置,而不
改变单词内部的结构。
解析:
第一种方法代码如下:
#include
using namespace std;
void RevStr(char *src)
{
char *start = src, *end = src, *ptr = src;
while(*ptr++ != '\0') //遍历字符串
{
if(*ptr == ' ' || *ptr == '\0') //找到一个单词
{
end = ptr - 1; //end指向单词末尾
while(start < end)
swap(*start++, *end--); //把单词的字母逆置
start = end = ptr+1; //指向下一个单词开头
}
}
start = src, end = ptr-2; //start指向字符串开头,end指向字符串末尾
while(start < end)
{
swap(*start++, *end--); //把整个字符串逆置
}
}
int main()
{
char src[] = "I am from Shanghai";
cout << src << "\n";
RevStr(src);
cout << src << "\n";
return 0;
}
程序输出结果:
I am from Shanghai
Shanghai From am I
第一种方法RevStr函数有两个转换步骤:代码8~18行将src中所有的单词进行翻转,其结果是src的
内容变为"I ma morf iahgnahS",然后代码20~23行再进行全局翻转。
第二种方法代码如下:
#include
using namespace std;
void RevStr(char *src)
{
char *start = src, *end = src, *ptr = src;
while(*ptr++ != '\0');
end = ptr-2; //找到字符串末尾
while(start < end)
{
swap(*start++, *end--); //逆置整个字符串
}
start = src, end = ptr-2;
ptr = start;
while(*ptr++ != '\0')
{
if(*ptr == ' ' || *ptr == '\0') //找到单词
{
end = ptr - 1; //end指向单词末尾
while(start < end)
swap(*start++, *end--); //逆置单词
start = end = ptr+1; //指向下一个单词开头
}
}
}
int main()
{
char src[] = "I am from Shanghai";
cout << src << "\n";
RevStr(src);
cout << src << "\n";
return 0;
}
程序输出结果:
I am from Shanghai
Shanghai from am I
第二种方法RevStr函数转换步骤与第一种方法相反:代码10~11行将src进行全局翻转。其结果是src
的内容变为"iahgnahS morf ma I",然后代码17~27行再把所有的单词进行翻转。
从上面的代码分析可以看出,两种方法都是采用两个步骤,即字符串全局翻转和各个单词局部翻转,只是
步骤的顺序不同,得到的结果都是一致的
页: [1]
查看完整版本: C/C++面试题:编程实现字符串中各单词的翻转
Powered by Discuz! X2 Archiver © 2001-2011 Comsenz Inc.