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

#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 却没有结果 求原因~!

我帮你改了一下,你可以试一试,可能有的地方不合你的题目(建议你把题目描述贴出来,我再改改)。可能你的编译器和我的不一样,要是有编译错误的话你可以自己改一下(或者把错误贴出来,我再改改),至少我的代码符合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;
}
}
}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-16
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));
}
第2个回答  2011-05-16
else if(n==1||n==0)
n=1;

c语言问题求解!!!谢谢!!!
2、字符串长度问题。字符串赋初值时,系统自动给字符串分配一个空间存储‘\\0’字符结束判定字符。他是一个隐藏字符。求字符长度时,strlen求字符长度时会自动忽略‘\\0’,但sizeof不会,所以求字符长度时,sizeof() = strlen() +1;3、自增运算符的运算机制问题。自增运算符放在变量后面,如a++,...

C语言菜鸟求高手解答...
1. 第一个问题似乎是一个关于C语言条件判断的疑问。你需要明确表达你的问题,以便得到具体的解答。2. 在C语言中,`m++` 表示先使用变量 `m` 的值,然后将 `m` 的值加1。所以,表达式 `m++ > 5` 首先将 `m` 的值(初始为5)用于比较,然后 `m` 自增。3. 由于 `m` 的初始值是5,...

C语言入门题目,求详细易懂的解答过程。
答案为第一行:Tony。解答:for循环共循环2次,然后strcpy(a,b)比较两串字符大小,如果strcpy值大于0,则a大于b。具体的比较是看字符串的字母的ASCII码的大小,如果相同,再继续比较第二个,这个不赘述。主要看一下name[],对于一维数组来讲,它是元素,对于二维数组来讲,它不是具体的元素,而是代...

C语言作业,急急急求解答
1.优化程序代码:检查程序中是否存在冗余、重复计算或者低效算法等因素,对代码进行优化和精简,以提高程序的运行效率。2.延迟加载数据:考虑将一些不必要立即加载的数据进行延迟加载,减少程序启动时的数据负担。3.异步加载数据:使用异步加载技术,将一些需要联网获取的数据离线处理,并在后台进行加载,避免程...

计算机有关c语言的一些问题选择 各位大大 求帮忙~~~
第三题:c 理由:这个没什么解释的,记住就行了 第四题:a 理由:同上 第五题:b 理由:赋值运算符的左侧必须是变量,不能是表达式,故d错。%运算符的操作数必须是整型数据,故c错,在C语言中不存在:=运算符,故a错。第六题:c 理由:字符常量要用单撇号括起来 第七题:a c 理由:C中...

C语言 计算机题 求大神解答~
1、能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是“a>=10||a<=0”。(D选项)解析:“≥”用“>=”表示,“或”用“||”表示。2、判断char型变量c是否为大写字母的表达式是“(c>='A')&&(c<='Z')”。(C选项)解析:大写字母是A~Z,加上单引号,可以直接用来判断是否符合要求...

C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下。
^是按位异或运算符,需要把a和b的值化为二进制数后进行按位异或就能得到答案。题中,a=3 ,二进制为:0011;b=6,二进制值为:0110。所以(a^b)按位异或后的值为0101也就是5,左移两位后值(二进制)为:010100 也就是 :20

C语言的题,都不难,帮忙解答,追加悬赏喔。麻烦把各个选项都解释解释最好...
第二题:这个union是表示,一块储存空间用short,long,char,三种类型来描述,所以c[0] 与i[0]一样的。这个程序是要打印s->c[0],printf("%x\\n", s ->c[0])这句里的%x表示打印的数字是十六进制的。由于c[0]里面放的是0x39,所以这里打印的正好是39.第三题:与第二题类似,注意这里求...

C语言问题,求大佬解答
整数类型 甲,个数=0, 输入数[最大输入个数],统计=0;小数类型 和=0,平均值;重复{ 图形输入整数() => 甲;如果( 甲 大于 0 ){ 和 += 甲;如果(个数 < 最大输入个数) 输入数[个数 ++] = 甲;} }直到 甲 等于 0;图形输出词语(“输入的正整数个数为:”);图形输出...

c语言的问题,求助解答。
1. (z>=y>=x)? 1:0 z>=y就是对的,所以为1 ,然后1>=x不对,所以为0,所以整个表达式为0 2. z>=y&&y>=x z>=y对为1 ,y>=x对为1,1&&1,所以答案为1,A

相似回答