| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1619 人关注过本帖
标题:如何在循环语句内进行符号替换?
只看楼主 加入收藏
Eahonxu
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2016-7-13
结帖率:96.15%
收藏
已结贴  问题点数:10 回复次数:8 
如何在循环语句内进行符号替换?
原题:利用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
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:10 
首先,要计数的变量要初始化,再就是你这个程序只能计一次,要计多次要用循环语句。
2016-08-21 20:10
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
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
对整个读取替换过程进行循环,判断语句不变
2016-08-21 20:21
Eahonxu
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2016-7-13
收藏
得分:0 
以下是引用ehszt在2016-8-21 20:21:54的发言:

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

抱歉我对这句话不太理解,“判断语句不变”指的是现程序内两个while语句不动,那么“对整个读取替换过程进行循环”是把句号变成感叹号,然后再用感叹号变成双感叹号。可如此一来第二次替换的字符(也就是感叹号)会不断进入下一次循环导致新替换出来的感叹号变成双感叹号然后无限循环。我还是不太明白你的意思
2016-08-21 22:00
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
回复 5楼 Eahonxu
判断还是判断不用改成循环呀。
#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++;
         }
         getchar();
         printf("共进行了%d次替代\n", tidai1+tidai2);
         
     }
  
     return 0;
     
   
 }

[此贴子已经被作者于2016-8-22 07:28编辑过]

2016-08-22 06:41
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
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
那就这样
#include <stdio.h>
#include <conio.h>
 #define gth '!'
 #define juh '.'
 int main(void)
 {
     char c;
     int tidai1=0, tidai2=0;
     
     while((c = getch())!='#')
     {
         if(c == juh)
         {
             printf("!");
             tidai1++;
         }
         else if(c == gth)
         {
             printf("!!");
             tidai2++;
         }
         else
         printf("%c",c);
         while(getchar()!='\n');
         printf("共进行了%d次替代\n", tidai1+tidai2);
         
     }
  
     return 0;
     
   
 }
2016-08-22 12:34
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
快速回复:如何在循环语句内进行符号替换?
数据加载中...
 
   



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

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