标题:如何在循环语句内进行符号替换?
取消只看楼主
Eahonxu
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2016-7-13
结帖率:96.15%
已结贴  问题点数:10 回复次数:4 
如何在循环语句内进行符号替换?
原题:利用if else读取输入,直到#。用一个感叹号代替每个句号,将原有的每个感叹号用两个感叹号代替,输出替代后的句子并报告进行了多少次替代。
我做的程序如下:
#include <stdio.h>
#define gth '!'
#define juh '.'
int main(void)
{
    char c;
    int tidai1, tidai2;
   
   
    c = getchar();
    if(c == '#');
    else
    {
        if(c == juh)
        {
            printf("!");
            tidai1++;
        }
        if(c == gth)
        {
            printf("!!");
            tidai2++;
        }
        putchar(c);
        printf("共进行了%d次替代\n", tidai1+tidai2);
        
    }
    return 0;
       感觉问题很大,请指教
   
}
搜索更多相关主题的帖子: include 感叹号 如何 
2016-08-21 19:56
Eahonxu
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2016-7-13
得分:0 
回复 2楼 ehszt
这是修改后的程序,但我不知道如何把两次替代分开,照这样open程序的话会导致!无限循环
#include <stdio.h>
#define gth '!'
#define juh '.'
int main(void)
{
    char c;
    int tidai1=0;
    int tidai2= 0;
   
   
    c = getchar();
    if(c == '#');
    else
    {
        while(c == juh)
        {
            printf("!");
            tidai1++;
        }
        while(c == gth)
        {
            printf("!!");
            tidai2++;
        }
        putchar(c);
        printf("共进行了%d次替代\n", tidai1+tidai2);
        
    }
    return 0;
        
   
}
2016-08-21 20:16
Eahonxu
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2016-7-13
得分:0 
以下是引用ehszt在2016-8-21 20:21:54的发言:

对整个读取替换过程进行循环,判断语句不变

抱歉我对这句话不太理解,“判断语句不变”指的是现程序内两个while语句不动,那么“对整个读取替换过程进行循环”是把句号变成感叹号,然后再用感叹号变成双感叹号。可如此一来第二次替换的字符(也就是感叹号)会不断进入下一次循环导致新替换出来的感叹号变成双感叹号然后无限循环。我还是不太明白你的意思
2016-08-21 22:00
Eahonxu
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2016-7-13
得分:0 
回复 6楼 ehszt
#include <stdio.h>
#define gth '!'
#define juh '.'
int main(void)
{
    char c;
    int tidai1=0, tidai2=0;
   
    while((c = getchar())!='#')
    {
        if(c == juh)
        {
            printf("!");
            tidai1++;
        }
        if(c == gth)
        {
            printf("!!");
            tidai2++;
        }
        putchar(c);
        
    }
    printf("共进行了%d次替代", tidai1+tidai2);

       printf("\n");
    return 0;
   
   
}
这是我修改后的程序,有两个问题:
第一,这个if判断语句并不能把原来的符号替换掉,只能添加符号;
第二,这个题目要求是用if else语句哎,所以好像不能用while循环语句来做吧
2016-08-22 11:46
Eahonxu
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2016-7-13
得分:0 
我的编译器不支持conio.h头文件,好像还是不行.不过我自己修改了下程序,现在可以了。谢谢啦~
#include <stdio.h>
#define gth '!'
#define juh '.'
int main(void)
{
    char c;
    int tidai1=0, tidai2=0;
   
    while((c = getchar())!='#')
    {
        if(c == juh)
        {
            printf("!");
            tidai1++;
        }
        else if(c == gth)
        {
            printf("!!");
            tidai2++;
        }
        else
            printf("%c", c);
        
    }
    printf("共进行了%d次替代", tidai1+tidai2);

       printf("\n");
    return 0;
   
   
}
2016-08-22 14:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-468068-1-1.html




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

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