注册 登录
编程论坛 C++教室

字符串综合题

fydgo 发布于 2009-12-23 10:26, 910 次点击
我是刚学的,学到字符串,做综合题时候遇到麻烦,请教高手。
程序要求读入一个最长100个字符的句子。对这个句子进行调试,输出间距正确,且首字母正确大写的结果。换言之,在输出句子中国,有两个或者更多空格构成的所有字符串都必须压缩成一个空格。句子以大写字母开头。但除此之外不能再有其他任何大写字母(专业名词也是)。将换行符视为一个空格,您需要将任意数量的换行符压缩成单独一个空格。假定句子以一个句点符号结尾,而且句子中没有其他句点。列入
the  Answer to life,  the Universe,  and   everything
IS 42
所生成的输出是
The answer to life,the universe,and everything is 42.
这题对我来说有几个难点,怎么把多个空格压缩成一个空格&&怎么检查第一个以外都是小写字母。
请高手指点,谢谢
5 回复
#2
guchao20092009-12-26 22:54
/*
程序要求读入一个最长100个字符的句子。对这个句子进行调试,输出间距正确,且首字母正确大写的结果。换言之,在输出句子中国,有两个或者更多空格构成的所有字符串都必须压缩成一个空格。句子以大写字母开头。但除此之外不能再有其他任何大写字母(专业名词也是)。将换行符视为一个空格,您需要将任意数量的换行符压缩成单独一个空格。假定句子以一个句点符号结尾,而且句子中没有其他句点。列入
the  Answer to life,  the Universe,  and   everything
IS 42
所生成的输出是
The answer to life,the universe,and everything is 42.
这题对我来说有几个难点,怎么把多个空格压缩成一个空格&&怎么检查第一个以外都是小写字母。
*/

#include<iostream>
#define maxsize 20

using namespace std;
void main()
{
    char string[maxsize];
    int i,j;
    cout<<"请您输入一个最长20个字符的句子:"<<endl;
    for(i=0;i<maxsize;i++)
        cin>>string[i];
    for(i=1;i<maxsize;i++)
    {
        if(string[0]>=97||string[0]>=122)
            string[0]=string[0]-32;
        else if(string[i]>=65||string[i]<=90)
            string[i]=string[i]+32;
        else
        {
            if(string[i]==' '||string[i]!=',')
            {
                for(j=i+1;j<maxsize;j++)
                {
                    if(string[j]==' ')
                        string[j]=string[j+1];
                }
            }
        }
    }
    cout<<"输出修改后的字符句子:"<<endl;
    for(i=0;i<maxsize;i++)
        cout<<string[i];
    cout<<endl;
}

 

我只能做到这里了·········我帮你问其他人


#3
pangding2009-12-27 13:20
先看见的另一个帖子:
https://bbs.bccn.net/thread-294393-1-1.html
 
大家把想法集中到一个帖子里去吧。那样方便后人看,不用互相参考了。

[ 本帖最后由 pangding 于 2009-12-27 13:22 编辑 ]
#4
guchao20092009-12-27 15:25
好像他的贴子没人关注我才又发一遍的······

知道了 ···以后会注意的·····
#5
冰蟾子2009-12-27 16:57
不考虑标点符号前面的空格和标点符号的空格?
#6
pangding2009-12-29 11:53
嗯,细节之类的问题还是挺多的,我觉得最多讨论一下解决类似问题的方法。
1