| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1219 人关注过本帖, 1 人收藏
标题:求助各位大大解决一下这个程序的小问题!
只看楼主 加入收藏
gz0000
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2010-1-23
结帖率:77.78%
收藏(1)
已结贴  问题点数:10 回复次数:13 
求助各位大大解决一下这个程序的小问题!

这个程序有点小毛病!就是在进入模块1输入待统计的字符后再次输入该字符会显示错误!请大家帮帮忙!
还有就是选择进入模块2后!按提示完成步骤直到返回主菜单!但如果不选择主菜单上的功能选项!可以直接进行模块2的应用!
程序不是很严谨~希望大家帮帮忙!




/*program yya13-1.c*/
#include "stdio.h"
#include "stdlib.h"
void main()
{
    char *p="The furthest distance in the world\nIs not between life and death\nBut when I stand in front of you\nYet you don't know that I love you\n";
    char ch,ch1,*q=NULL;
    int count;
    int t;
    /*主菜单程序段*/
lable1:printf("\n\t请选择功能:\n");           /*语句标号*/
       printf("\n\t=========================\n");/*(/t)指横向跳格*/
       printf("\n\t1:打开已有文件进行统计\n");
       printf("\n\t2:用户新建文件并进行统计\n");
       printf("\n\t3:结束程序\n");
       printf("\n\t=========================\n");
       scanf("%d",&t);getchar();            /*功能编号,消去输入的回车符*/
       if(t!=1&&t!=2&&t!=3)                 /*输入不正确,再次重复输入*/
       {
           printf("\n\t请重新选择功能键\n");
           goto lable1;                     /*再次重复显示主菜单并输入*/
       }
       switch(t)                            /*进入不同功能模块*/
       {
       case 1:goto lable2;
       case 2:goto lable3;
       case 3:exit(0);
       }
       /*模块功能1*/
lable2:printf("打开并显示已有文件:\n");      /*语句标号*/
      printf("%s\n",p);                     /*显示p指向的字符常量*/
      printf("请输入待统计的字符:\n");
      scanf("%c",&ch); getchar();
      count=0;                              /*计数器清零*/
      q=p;                                  /*指针q指向字符串常量*/
loop1:                                      /*语句标号*/
      if(*q=='\0')                          /*通过指针q的间接访问判断是否到文本结束标志*/
      {
          printf("%c的个数是:%d\n",ch,count); /*输出结果*/
          goto lable1;
      }
      else
      {
          if(*q==ch)                        /*用指针q间接访问字符,判断该字符是否为待统计的字符*/
          count++;
          q++;
          goto loop1;
      }
      /*功能模块2*/
lable3:printf("请输入待统计的字符:\n");
       scanf("%c",&ch); getchar();
       count=0;
       printf("请输入新建英文文章。回车结束输入!\n");
loop2:ch1=getchar();                        /*输入文章的每个字符,不储存*/
      if(ch1=='\n')                         /*回车结束输入*/
      {
          printf("%c的个数是:%d\n",ch,count);/*输出结果*/
          goto lable1;
      }
      else                                  /*文章未结束,继续输入并进行字符统计*/
      {
          if(ch1==ch)                       /*判断当前字符是否为待统计的字符*/
              count++;                     
          goto loop2;                       /*转入下一次判断*/
      }
}
搜索更多相关主题的帖子: 菜单 问题 distance between include 
2010-02-16 19:02
dydsdyds
Rank: 6Rank: 6
来 自:Java
等 级:侠之大者
帖 子:217
专家分:457
注 册:2010-2-14
收藏
得分:0 
这个程序对我来说太复杂了,先坐下,看看高手的思路~

c语言刚开一学期,就换开VB...
2010-02-16 19:53
kinwyb
Rank: 4
等 级:业余侠客
帖 子:134
专家分:244
注 册:2009-3-7
收藏
得分:0 
好像没发现楼主的问题“就是在进入模块1输入待统计的字符后再次输入该字符会显示错误!”不知道楼主说的是第二次进入模块1再次输入和第一次一样的统计字符会出错还是别的情况?
还有“择进入模块2后!按提示完成步骤直到返回主菜单!但如果不选择主菜单上的功能选项!可以直接进行模块2的应用”怎么不选择主菜单的功能继续执行?如果可以的话应该是t的值没有清空的原因,前一次t的值为2你不输入后其默认值还是为2,故而自动进入模块2.。。(本人也是新手

学习c语言痛苦!!但是要坚持~~
2010-02-16 20:44
gz0000
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2010-1-23
收藏
得分:0 
该程序的错误截图放置gzr0000@  密码111111

[ 本帖最后由 gz0000 于 2010-2-16 21:52 编辑 ]
2010-02-16 21:39
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
收藏
得分:0 
楼主以前学basic或Fortran吗,怎么这么多goto……
2010-02-16 22:45
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
收藏
得分:0 
同意楼上。过多使用goto不是一个好习惯。还是直接用while等循环语句为好。
2010-02-16 23:58
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
收藏
得分:3 
换成循环语句:
/*program yya13-1.c*/
#include "stdio.h"
#include "stdlib.h"
void main()
{
    char *p="The furthest distance in the world\nIs not between life and death\nBut when I stand in front of you\nYet you don't know that I love you\n";
    char ch,ch1,*q=NULL;
    int count;
    int t;
    /*主菜单程序段*/
while(1)
{
    do
    {
        printf("\n\t请选择功能:\n");           /*语句标号*/
        printf("\n\t=========================\n");/*(/t)指横向跳格*/
        printf("\n\t1:打开已有文件进行统计\n");
        printf("\n\t2:用户新建文件并进行统计\n");
        printf("\n\t3:结束程序\n");
        printf("\n\t=========================\n");

       scanf("%d",&t);getchar();            /*功能编号,消去输入的回车符*/

    }while(t!=1&&t!=2&&t!=3);                /*输入不正确,再次重复输入*/

   switch(t)                            /*进入不同功能模块*/
   {
        case 1:            /*模块功能1*/
                printf("打开并显示已有文件:\n");      /*语句标号*/
                printf("%s\n",p);                     /*显示p指向的字符常量*/
                printf("请输入待统计的字符:\n");
                scanf("%c",&ch); getchar();
                count=0;                              /*计数器清零*/
                q=p;                                /*指针q指向字符串常量*/
                while(*q)
                {
                    if(*q==ch)count++;                        /*用指针q间接访问字符,判断该字符是否为待统计的字符*/                           
                    q++;
                }  
                printf("%c的个数是:%d\n",ch,count); /*输出结果*/
                break;

        case 2: /*功能模块2*/
            printf("请输入待统计的字符:\n");
            scanf("%c",&ch); getchar();
            count=0;
            printf("请输入新建英文文章。回车结束输入!\n");
            while((ch1=getchar())!='\n')
            {
                if(ch1==ch)count++;                        /*判断当前字符是否为待统计的字符*/
            }
            printf("%c的个数是:%d\n",ch,count); /*输出结果*/
            break;
               

        case 3:exit(0);
   }
}
}
2010-02-17 00:04
gz0000
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2010-1-23
收藏
得分:0 
谢谢大家的建议~我会择优改正!
  只是...俺的问题好像并没有解决哦!
2010-02-17 00:25
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
收藏
得分:0 
/*program yya13-1.c*/
#include "stdio.h"
#include "stdlib.h"
void main()
{
    char *p="The furthest distance in the world\nIs not between life and death\nBut when I stand in front of you\nYet you don't know that I love you\n";
    char ch,ch1,*q=NULL;
    int count;
    int t;
    /*主菜单程序段*/
while(1)
{
        printf("\n\t请选择功能:\n");           /*语句标号*/
        printf("\n\t=========================\n");/*(/t)指横向跳格*/
        printf("\n\t1:打开已有文件进行统计\n");
        printf("\n\t2:用户新建文件并进行统计\n");
        printf("\n\t3:结束程序\n");
        printf("\n\t=========================\n");

       scanf("%d",&t);getchar();            /*功能编号,消去输入的回车符*/

       if(t!=1&&t!=3)t=2;                /*输入不正确,再次重复输入*/

   switch(t)                            /*进入不同功能模块*/
   {
        case 1:            /*模块功能1*/
                printf("打开并显示已有文件:\n");      /*语句标号*/
                printf("%s\n",p);                     /*显示p指向的字符常量*/
                printf("请输入待统计的字符:\n");
                scanf("%c",&ch); getchar();
                count=0;                              /*计数器清零*/
                q=p;                                /*指针q指向字符串常量*/
                while(*q)
                {
                    if(*q==ch)count++;                        /*用指针q间接访问字符,判断该字符是否为待统计的字符*/                           
                    q++;
                }  
                printf("%c的个数是:%d\n",ch,count); /*输出结果*/
                break;

        case 2: /*功能模块2*/
            printf("请输入待统计的字符:\n");
            scanf("%c",&ch); getchar();
            count=0;
            printf("请输入新建英文文章。回车结束输入!\n");
            while((ch1=getchar())!='\n')
            {
                if(ch1==ch)count++;                        /*判断当前字符是否为待统计的字符*/
            }
            printf("%c的个数是:%d\n",ch,count); /*输出结果*/
            break;
               

        case 3:exit(0);
   }
}
}
2010-02-17 08:27
dydsdyds
Rank: 6Rank: 6
来 自:Java
等 级:侠之大者
帖 子:217
专家分:457
注 册:2010-2-14
收藏
得分:0 
还是看不懂,唉,赶紧开阔思维……

c语言刚开一学期,就换开VB...
2010-02-17 08:57
快速回复:求助各位大大解决一下这个程序的小问题!
数据加载中...
 
   



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

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