| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 573 人关注过本帖
标题:c++数学思维问题······
只看楼主 加入收藏
guchao2009
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:101
专家分:106
注 册:2009-4-13
结帖率:77.78%
收藏
已结贴  问题点数:0 回复次数:2 
c++数学思维问题······
/*
程序要求读入一个最长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;
}

 




搜索更多相关主题的帖子: 思维 数学 
2009-12-26 22:59
guchao2009
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:101
专家分:106
注 册:2009-4-13
收藏
得分:0 
补充···看看
      else
        {
            if(string[i]==' '||string[i]!=',')
            {
                for(j=i+1;j<maxsize;j++)
                {
                    if(string[j]==' ')
                        string[j]=string[j+1];
                }
            }
        }
帮我看看·····
2009-12-26 23:00
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:7 
说说想法,如果只是要求输出格式正确的话,其实可以不用改原来的串。
你可以在输出的时候动手脚就可以了。
比如这可能就是一种方法:
先定义两个字条集,一个定义句子分隔标识(比如可以是这个一个集合[., ?, !]之类的),再定义一个空白符集合(比如[(空格), tab, \n])。
之后一个字符一个字符的输某段文字,如果检查到句子分隔中的字符,下次输出之前转大字后再输出。如果检查到空白字符,输出之后,顺序向后检查非空字符。
这个做法,只对输出做手脚,而原串没动。
如果想改动原串用同样的方法也可以,比如申请一个临时的 string 用同样的方法扫描原串,然后“输出”到这个临时串。之后调用 swap。
2009-12-27 13:05
快速回复:c++数学思维问题······
数据加载中...
 
   



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

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