c语言问题求解答~~~!

#include<stdio.h>intsax(intn){ints;if(n==1)s=1;elses=sax(n-1)*n;//for(s=1,i=1;i<n+1;i... #include<stdio.h>
int sax(int n)
{ int s;
if(n==1)
s=1;
else
s=sax(n-1)*n;
//for(s=1,i=1;i<n+1;i++)
//s=s*i;
return(s);
}
void main()
{
int n;
scanf("%d",&n);
if(n<0)
printf("不对");
else if(n==1||n==0)
n==1;
printf("%d\n",sax(n));
}

这是输入一个数字 然后算出这个数字的阶乘 但是0的阶乘应该是0 为什么输入0 却没有结果 求原因~!
展开
 我来答
vndojsa
2011-05-19 · TA获得超过809个赞
知道小有建树答主
回答量:1042
采纳率:0%
帮助的人:568万
展开全部
我帮你改了一下,你可以试一试,可能有的地方不合你的题目(建议你把题目描述贴出来,我再改改)。可能你的编译器和我的不一样,要是有编译错误的话你可以自己改一下(或者把错误贴出来,我再改改),至少我的代码符合C99标准。
ps:LZ挺勤奋的,不想某些伸手党直接贴题目,LZ还写了很长的代码,赞一下!

#include<stdio.h>
#include<stdlib.h>
typedef struct //我定义了一个商品结构体
{int num; //我定义了一个商品号
char name[20]; //我定义了一个商品名称
double jia; //我定义了一个商品价格
} Shop;
struct hui //会员结构体
{ int number;
char name[40];
float fen;
int mima;
}h1[5]=,,,,};
void zero()/*指针函数*/
{int i;
FILE *fp;
fp=fopen("c: \\file1.txt","wb");
if(fp==NULL)

for(i=0;i<=4;i++)

fclose(fp);}
void Shop1() //函数购物
,,,,};
system("cls");
printf("\t\t\t 商品清单\n\n");
printf("**********************************************************************\n");
printf("编号\t\t\t 名称\t\t\t\t价格\n\n");
int g;
for(g=0;g<=4;g++)

printf("**********************************************************************\n");
}//上面是个输出商品清单
//我定义了一个主函数main
void main ()
{int a,b,c=1000,d=123456789,z=2;
FILE *fp;
L1:printf("**************欢迎来到超市!**************\n");
printf("**************下面进入管理员登陆界面**************\n");
printf("\t请输入登陆账号:\t"); scanf("%d",&a);
printf("\t请输入登陆密码:\t"); scanf("%d",&b);
if(a==c&&b==d)
{ printf("登陆成功\n");

}
else
for(z=2;z>=0;z--)
{
printf("账号或密码错误,请重新输入,您还有%d次机会!\n",z);
printf("\t请输入登陆账号:\t"); scanf("%d",&a);
printf("\t请输入登陆密码:\t"); scanf("%d",&b);
if(a==c&&b==d)
{
printf("登陆成功\n");
break;
}
}
//-----------------------------------------------
int m,k,i,x,o,q;
printf("**************下面进入会员登陆界面**************");
printf("\t\t\t1.会员登陆");
printf("\t\t\t2.非会员登陆");
printf("\t\t\t0.退出");
scanf("%d",&m);
if(m==0)

else if(m==1)
{
printf("**************请输入会员编号**************");
scanf("%d",&k);
printf("**************请输入会员密码**************");
scanf("%d",&x);
int i;
for(i=0; i<=4;++i)
{
if(h1[i].number==k&&h1[i].mima==x)
break;
}
if (i==5)
{
for (q=0;q<2;q++)
{
printf("编号或密码错误,请重新输入,您还有%d次机会!\n",2-q);
printf("\t请输入登陆编号:\t"); scanf("%d",&k);
printf("\t请输入登陆密码:\t"); scanf("%d",&x);
for(i=0; i<=4;++i)
{
if(h1[i].number==k&&h1[i].mima==x)
break;
}
if (i!=5)
break;
}
}
switch(k)
{
case 1:printf("您好尊敬的会员1");break;
case 2:printf("您好尊敬的会员2");break;
case 3:printf("您好尊敬的会员3");break;
case 4:printf("您好尊敬的会员4");break;
case 5:printf("您好尊敬的会员5");break;
}
fp=fopen("c: \\file1.txt","r");
if(fp==NULL)
{
printf("读写文件打开失败!\n");
exit(0);
}
fread(&h1,sizeof(struct hui),5,fp);
printf("\t\t%s\t积分%4.2f:\t",h1[i].name ,h1[i].fen );
fclose(fp);
fp=fopen("c: \\file1.txt","w");Shop1();

float u;
float sum=0;
int n;
int h;
float w;
Shop str1[5]=,,,,};
for(int j=0;j<=1000;j++)
{
printf("请输入您所选择的商品编号(输入886结束): ");
scanf("%d",&h);
for(int g1=0;g1<=4;g1++)
{
if(h==str1[g1].num)
{ (w=str1[g1].jia);
printf("名称: %s\t价格:$%.2f \n",str1[g1].name ,str1[g1].jia );
printf("请输入所选择商品的数量: ");
scanf("%d",&n);
sum=sum+(w*n);}}
if(h==886)
{
L2: printf("总价格:$%4.2f\n",sum);
printf("收银 :$",u);
scanf("%f",&u);
if(u==sum)
{ h1[i].fen=h1[i].fen+sum;
fwrite(&h1,sizeof(struct hui),5,fp);
printf("购物完的积分:%.2f\t",h1[i].fen);
fclose(fp);
printf(" 谢谢您的光临\n");break;
}
else
{
sum=u-sum;
printf("请找零:$%4.2f\n",sum);
goto L2;
}
}
}
}

else if (m==2)//非会员购买
{
Shop1();
float u;
float sum=0;
int n;
int h;
float w;
Shop str1[5]=,,,,};
for(int j=0;j<=1000;j++)
{
printf("请输入您所选择的商品编号(输入886结束): ");
scanf("%d",&h);
for(int g1=0;g1<=4;g1++)
{
if(h==str1[g1].num)
{
(w=str1[g1].jia);
printf("名称: %s\t价格:$%.2f \n",str1[g1].name ,str1[g1].jia );
printf("请输入所选择商品的数量: ");
scanf("%d",&n);
sum=sum+(w*n);
}
}
if(h==886)
{
L3: printf("总价格:$%4.2f\n",sum);
printf("收银 :$",u);
scanf("%f",&u);
if(u==sum)
{printf(" 谢谢您的光临\n");
break;
}
else
{ sum=u-sum;
printf("请找零:$%4.2f\n",sum);
goto L3;
}
}
}
}
}
phonnix
2011-05-16
知道答主
回答量:18
采纳率:0%
帮助的人:24.7万
展开全部
void main()
{
int n;
scanf("%d",&n);
if(n<0)
printf("不对");
else if(n==1||n==0)
n==1; //打错了,应该改为 n=1;
printf("%d\n",sax(n));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wskjuf
2011-05-16 · TA获得超过1289个赞
知道大有可为答主
回答量:1731
采纳率:0%
帮助的人:1767万
展开全部
else if(n==1||n==0)
n=1;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式