CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

超菜问题.........

楼主wujie0978()2002-11-02 09:24:56 在 C/C++ / C语言 提问

程序的功能在程序里已经写了  
  我现在想实现的是输入exit就退出程序,不然就一直执行下去  
  可是这个程序只能计算一次就退出了,而且输入exit也没有反映,请求高手指点!  
  #include   <stdio.h>  
  #include   <stdlib.h>  
  void   printstar(int   n)  
  {  
  int   i;  
  for(i=0;i<n;i++)  
  printf("*");  
  printf("\n");  
  }  
  void   printmessage()  
  {  
  printf("   *             欢迎使用本程序!             *   \n");  
  printf("   *             此程序的功能是:             *   \n");  
  printf("   *         求1!+2!+3!+...+n!=?         *   \n");  
  printf("   *             退出请输入:exit。         *   \n");  
  }  
  fact(int   n)  
  {  
  int   answer;  
  if(n==1)   return(1);  
  answer=fact(n-1)*n;  
  return(answer);  
  }  
  sum(int   n)  
  {  
  int   answer;  
  if(n==1)   return(1);  
  answer=fact(n)+sum(n-1);  
  return(answer);  
  }  
  main()  
  {  
  char   *string;   int   n;  
  printstar(32);  
  printmessage();  
          printstar(32);  
  printf("请输入一个正整数(n):");  
  scanf("%s",&string);  
  while(string!="exit")  
  {  
  n=atoi(string);  
  if(n<=0)  
                  {  
  printf("输入错误,请重新输入!\n");  
  continue;  
                  }  
  else  
  printf("计算结果:%d\n",sum(n));  
          }  
  } 问题点数:50、回复次数:9Top

1 楼artman(The Final.)回复于 2002-11-02 09:28:14 得分 0

while(string!="exit")  
  两个指针相比,不出什么意外的话,是永远不可能相等的.  
  应改为while(strcmp(string,"exit")!=0)Top

2 楼cct8(臭臭他爸)回复于 2002-11-02 09:31:14 得分 0

main()  
  {  
  char   string[256];  
                    int   n;  
  printstar(32);  
  printmessage();  
                    printstar(32);  
  printf("请输入一个正整数(n):");  
  scanf("%s",string);  
  while(strncmp(string,"exit",256))  
  {  
  n=atoi(string);  
  if(n<=0)  
                  {  
  printf("输入错误,请重新输入!\n");  
  continue;  
                  }  
  else  
  printf("计算结果:%d\n",sum(n));  
          }  
  }  
  Top

3 楼auto_lu(都市拾荒者)回复于 2002-11-02 09:42:30 得分 0

同意   artman(服务器太忙)   的见解.  
   
  bool   b1=   ("string"=="string"?true:false);  
   
  char   s1[]   =   "string",s2[]   =   "string";  
   
  bool   b2=   (s1==s2?true:false);  
   
  b1和b2都将为假.   因为指针的地址不同.Top

4 楼newgina(哈哈哈)回复于 2002-11-02 09:44:31 得分 0

字符串的后面应该有一个结束标志  
  “/0”           这样就不能比较了Top

5 楼wujie0978()回复于 2002-11-02 09:47:05 得分 0

#include   <stdio.h>  
  #include   <stdlib.h>  
  #include   <string.h>  
  main()  
  {  
  char   string;   int   n;int   a=1;  
  while(a==1)  
          {  
  printf("请输入一个正整数(n):");  
  scanf("%s",&string);  
  if(strcmp(string,"exit"))  
                  {  
  a=0;  
  break;  
                  }  
  n=atoi(string);  
  if(n<=0)  
  printf("0\n");  
  else  
  printf("计算结果:%d\n",sum(n));  
                                            //sum(n)为求阶乘和的函数  
          }  
  }  
  改成这样还是不能用Top

6 楼Flamesong(永远自信)回复于 2002-11-02 09:47:31 得分 50

#include   <stdio.h>  
  #include   <stdlib.h>  
  #include   <string.h>  
   
  void   printstar(int   n)  
  {  
  int   i;  
  for(i=0;i<n;i++)  
  printf("*");  
  printf("\n");  
  }  
  void   printmessage()  
  {  
  printf("   *             &raquo;&para;&Oacute;&shy;&Ecirc;&sup1;&Oacute;&Atilde;±&frac34;&sup3;&Igrave;&ETH;ò!             *   \n");  
  printf("   *             &acute;&Euml;&sup3;&Igrave;&ETH;ò&micro;&Auml;&sup1;&brvbar;&Auml;&Uuml;&Ecirc;&Ccedil;:             *   \n");  
  printf("   *         &Ccedil;ó1!+2!+3!+...+n!=?         *   \n");  
  printf("   *             &Iacute;&Euml;&sup3;&ouml;&Ccedil;&euml;&Ecirc;&auml;&Egrave;&euml;:exit&iexcl;&pound;         *   \n");  
  }  
   
  int   fact(int   n)  
  {  
  int   answer;  
  if(n==1)   return(1);  
  answer=fact(n-1)*n;  
  return(answer);  
  }  
   
  int   sum(int   n)  
  {  
  int   answer;  
  if(n==1)   return(1);  
  answer=fact(n)+sum(n-1);  
  return(answer);  
  }  
   
  void   main()  
  {  
  char   string[100];  
   
  int   n;  
  printstar(32);  
  printmessage();  
          printstar(32);  
  while(1){  
                memset(string,0,100);  
        printf("&Ccedil;&euml;&Ecirc;&auml;&Egrave;&euml;&Ograve;&raquo;&cedil;&ouml;&Otilde;&yacute;&Otilde;&ucirc;&Ecirc;&yacute;(n):");  
        scanf("%s",string);  
        if(strcmp(string,"exit"))  
        {  
  n=atoi(string);  
  if(n<=0){  
  printf("&Ecirc;&auml;&Egrave;&euml;&acute;í&Icirc;ó&pound;&not;&Ccedil;&euml;&Ouml;&Oslash;&ETH;&Acirc;&Ecirc;&auml;&Egrave;&euml;&pound;&iexcl;\n");  
  continue;  
  }  
  else  
  printf("&frac14;&AElig;&Euml;&atilde;&frac12;á&sup1;&ucirc;:%d\n",sum(n));  
                }  
                else{  
  printf("&Iacute;&Euml;&sup3;&ouml;\n");  
                          exit(0);  
                }    
  }  
  }  
  我在VC下实现的.Top

7 楼Flamesong(永远自信)回复于 2002-11-02 09:52:51 得分 0

不好意思出现了乱字符:  
  void   main()  
  {  
  char   string[100];  
   
  int   n;  
  printstar(32);  
  printmessage();  
                    printstar(32);  
  while(1){  
                          memset(string,0,100);  
        printf("&Ccedil;&euml;&Ecirc;&auml;&Egrave;&euml;&Ograve;&raquo;&cedil;&ouml;&Otilde;&yacute;&Otilde;&ucirc;&Ecirc;&yacute;(n):");  
        scanf("%s",string);  
        if(strcmp(string,"exit"))  
        {  
  n=atoi(string);  
  if(n<=0){  
  printf("输入错误,请重新输入!\n"); continue;  
  }  
  else  
  printf("计算结果:%d\n",sum(n));                
                          }  
                          else{  
  printf("exit\n");  
                                      exit(0);  
                          }    
  }  
  }  
  Top

8 楼wujie0978()回复于 2002-11-02 09:56:38 得分 0

太感谢Flamesong了,全分奉送Top

9 楼Flamesong(永远自信)回复于 2002-11-02 09:59:10 得分 0

我从VC下往这边COPY就是有乱字符,反正大家看懂就行了.  
  #include   <stdio.h>  
  #include   <stdlib.h>  
  #include   <string.h>  
   
  void   printstar(int   n)  
  {  
  int   i;  
  for(i=0;i<n;i++)  
  printf("*");  
  printf("\n");  
  }  
  void   printmessage()  
  {  
  printf("   *             welcome!                           *   \n");  
  printf("   *             this   program   is:           *   \n");  
  printf("   *             1!+2!+3!+...+n!=?         *   \n");  
  printf("   *             putin   exit   for   end&iexcl;&pound;   *   \n");  
  }  
   
  int   fact(int   n)  
  {  
  int   answer;  
  if(n==1)   return(1);  
  answer=fact(n-1)*n;  
  return(answer);  
  }  
   
  int   sum(int   n)  
  {  
  int   answer;  
  if(n==1)   return(1);  
  answer=fact(n)+sum(n-1);  
  return(answer);  
  }  
   
  void   main()  
  {  
  char   string[100];  
   
  int   n;  
  printstar(32);  
  printmessage();  
                    printstar(32);  
  while(1){  
                          memset(string,0,100);  
        printf("pls   putin   a   integer   (n):");  
        scanf("%s",string);  
        if(strcmp(string,"exit"))  
        {  
                    n=atoi(string);  
  if(n<=0){  
        printf("error&pound;&not;pls   reputin&pound;&iexcl;\n");  
        continue;  
  }  
  else  
        printf("result:%d\n",sum(n));  
                          }  
                          else{  
        printf("exit\n");  
                                              exit(0);  
                          }    
  }  
  }Top

相关问题

  • 超菜问题:
  • 超菜问题!
  • 超菜问题:)
  • 超菜问题。
  • 超菜问题!
  • 超级菜题
  • 超级菜鸟!
  • 超菜问题
  • 超级菜问!
  • 超级菜问

关键词

  • 程序
  • 输入
  • exit
  • include
  • void printstar

得分解答快速导航

  • 帖主:wujie0978
  • Flamesong

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo