| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 376 人关注过本帖
标题:关于一道题的,求解!
只看楼主 加入收藏
C语言学徒
Rank: 2
来 自:NamKing
等 级:论坛游民
帖 子:51
专家分:22
注 册:2009-2-27
结帖率:90%
收藏
已结贴  问题点数:10 回复次数:2 
关于一道题的,求解!
给出函数void printsentence(const char *line)的定义,其中参数line为一个自然段,该函数的功能是将line中的每一个句子分行打印出来,这里的句子的定义是:以中文句号(。)感叹号(!)或(?)结尾的字符串,其他标点不考虑,也不考虑三个标点连用的情况!


这个题我的解法好像是错的,费了我半个多小时,没有一点思路
这个是我的思路,请大家帮忙指导处错误并给予准确答案,再次谢谢大家
void printsentence(const char *line)
{char *p,*q;
int i;
for(p=line;*p!='\0';p++)
{if(*p='。'||*p='!'||*p='?')
 for(q=line+i;q<=p;q++)
printf("%c",*q);
printf("\n");
i=p;
}
}

感觉自己的想法是不是太蠢了啊,一运算错误太多了,很自卑啊
搜索更多相关主题的帖子: 求解 
2009-09-22 17:47
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:7 
我对指针用的不太好,我换用数组说明。你可以在理解后在改用指针。
你只需要将原来的自然段按顺序输出,不过要判断当出现?!和。时要先输出\n。
你的if()判断语句不对,当字符是?!。时应该是if(*p=='。'||*p=='!'||*p=='?'),只有一个等号就是赋值,那么if()语句为真,将起不到判断的作用。
我有完整程序验证了一下。下面是程序:
#include "stdio.h"
main()
{
char s[100];
char p;
int i;
printf("Please input the string:");
gets(s);
for(i=0;s[i]!='\0';i++)
{
printf("%c",s[i]);
if(s[i]=='.'||s[i]=='?'||s[i]=='!')
printf("\n");
}
}
你可以自己运行一下试试。我运行着可以。
2009-09-22 18:56
tnyysnow
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-9-24
收藏
得分:0 
#include <stdio.h>
#include <conio.h>
void pri(const char *line)
{
    const char *p;
    for(p=line;*p!='\0';p++)
    {
        printf("%c",*p);
        if(*p=='.'||*p=='!'||*p=='?')
            printf("\n");
    }
}
void main()
{
    char a[100];
    printf("请输入一行字符串:");
    gets(a);
    pri(a);
    getch();
}
自己瞎编的 不知道对不对。
2009-09-24 21:49
快速回复:关于一道题的,求解!
数据加载中...
 
   



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

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