超菜问题.........
程序的功能在程序里已经写了
我现在想实现的是输入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(" * »¶Ó­Ê¹Óñ¾³ÌÐò! * \n");
printf(" * ´Ë³ÌÐòµÄ¹¦ÄÜÊÇ: * \n");
printf(" * Çó1!+2!+3!+...+n!=? * \n");
printf(" * Í˳öÇëÊäÈë:exit¡£ * \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("ÇëÊäÈëÒ»¸öÕýÕûÊý(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("Í˳ö\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("ÇëÊäÈëÒ»¸öÕýÕûÊý(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¡£ * \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£¬pls reputin£¡\n");
continue;
}
else
printf("result:%d\n",sum(n));
}
else{
printf("exit\n");
exit(0);
}
}
}Top




