代码: 全选
#include<stdio.h>
long int fac(int n)
{if (n==1) return 1L;
else return n*fac(n-1);
}
void main()
{int i,m;
printf("Please input a number:");
scanf("%d",&m);
for (i=1;i<=m;i=i+1)
{
printf("%d!=%d\n",i,fac(i));
}
}
代码: 全选
#include<stdio.h>
long int fac(int n)
{if (n==1) return 1L;
else return n*fac(n-1);
}
void main()
{int i,m;
printf("Please input a number:");
scanf("%d",&m);
for (i=1;i<=m;i=i+1)
{
printf("%d!=%d\n",i,fac(i));
}
}
代码: 全选
#include<stdio.h>
long int fac(int n)
{
if (n==1)
return 1L;
else
return n*fac(n-1);
}
int main()
{
int i,m;
printf("Please input a number:");
scanf("%d",&m);
for (i=1;i<=m;i=i+1)
{
printf("%d!=%ld\n",i,fac(i));
}
return 0;
}
赞~dbzhang800 写了:1主要是你的 printf中,long对应 %ld代码: 全选
#include<stdio.h> long int fac(int n) { if (n==1) return 1L; else return n*fac(n-1); } int main() { int i,m; printf("Please input a number:"); scanf("%d",&m); for (i=1;i<=m;i=i+1) { printf("%d!=%ld\n",i,fac(i)); } return 0; }
题外话:
2.编译程序时要加 -Wall 选项
3.找本好点的书看,至少要main前面有个int的
代码: 全选
#include<stdio.h>
long int fac(int n)
{if (n==1) return 1L;
else return n*fac(n-1);
}
void main()
{int i,m;
printf("Please input a number:");
scanf("%d",&m);
for (i=1;i<=m;i=i+1)
{
printf("%d!=%d\n",i,fac(i));
}
}
代码: 全选
if(!scanf()){
perror("scanf()");
exit(ERROR);
代码: 全选
#include<stdio.h>
#include<errno.h>
long int fac(int n)
{
if (n==1)
return 1L;
else
return n*fac(n-1);
}
int main()
{
int i,m;
printf("Please input a number:");
scanf("%d",&m);
if (!scanf()){
perror("scanf()");
exit(ERROR);
}
for (i=1;i<=m;i=i+1)
{
printf("%d!=%ld\n",i,fac(i));
}
return 0;
}
这样是不行的,他的意思是 每次用scanf的时候,都要检查它的返回值。arsui 写了:谢谢ls~,你是说这样?代码: 全选
#include<stdio.h> #include<errno.h> long int fac(int n) { if (n==1) return 1L; else return n*fac(n-1); } int main() { int i,m; printf("Please input a number:"); [color=red] scanf("%d",&m); if (!scanf()){ perror("scanf()"); exit(ERROR); }[/color] for (i=1;i<=m;i=i+1) { printf("%d!=%ld\n",i,fac(i)); } return 0; }
编译不成功哇~
代码: 全选
if(!scanf("%d",&m))
{
printf("Error: -------");
exit(1);
}