1求1!+2!+……+20!
#include <stdio.h>
int main(void) {
long int i,j,sum2 = 0;
for(i=1;i<=20;i++){
int sum1 = 1;
for(j=1;j<=i;j++){
sum1 = sum1*j;
}
sum2 = sum2 +sum1;
printf("%ld\t",sum2);
}
printf("%ld\n",sum2);
return 0;
}//对于太大的数,用long int会比较好
2递归处理阶乘很需要创造性思维
#include <stdio.h>
int Factorial(int i){
if(i==1){
return 1;
}
else{
return i*Factorial(i-1);
}
}
int main(void) {
int n;
scanf("%d\n",&n);
n = Factorial(n);
printf("%d\n",n);
}
#include<stdio.h>
int fact(int); //声明阶乘fact函数
int main(){
int x;
scanf("%d",&x);
x = fact(x);//调用函数返回int值
printf("%d\n",x);
}
int fact(int n){//定义阶乘函数
if(n==1) return 1;//输入的参数是1,直接返回1
else return n*fact(n-1);//递归算法
}
我不知道为什么我的代码不行
3如果main函数在前的话那就需要先声明,如果min函数在后的话那就可以直接定义
原来\40是空格的意思,应该所有的ascii码都可以这样。
以往我处理输入的字符或者说数字都是采用创建数组然后for的方法,但最近我知道了getchar和putchar函数,用它可以轻松实现顺序的逆转。它的缺点是只能按顺序对首尾进行处理。
#include <stdio.h>
void palin(int n){
char next;
if(n<=1) {
next=getchar();
printf("相反顺序输出结果 : ");
putchar(next);
} else {
next=getchar();//因为它是递归函数,因此它相当于执行了五次getchar,它很像一个栈。abcde
palin(n-1);//我犯错了,虽然它是递归函数,但5-1=4,4-1=3,3-1=2,2-1=1,n等于1的时候它就去执行if了,因此只执行了4次gethar
putchar(next);
}
}
int main()
{
int i=5;
printf("请输入5个字符 : ");
palin(i);//一个函数,两种功能,妙啊!
printf("\n");
}
next = getchar();//如果将palin的内层代码替换成这个,那么就失去了终止条件
palin(n-1);
putchar(next);
根据我自己的尝试,getchar和putchar必须放在一块才能实现从同一个栈中存取数据的目的。