打卡博客仅作为记录,有误部分请在评论区指正,谢谢!!
- 题目
- 1、求n的阶乘
- 2、求n个n的阶乘的和 [O(n2)和O(n)]
- 3、一段文字从俩端依次向中间显示内容
1、求n的阶乘
#pragma warning(disable:4996)//解决scanf在visual studio2019中报错 #includeint Factorial(int);//阶乘函数声明(原因:如果想把自定义函数写在main函数后,就必须在main函数前,将自定义函数进行声明) //C语言默认情况下,只有后面定义的函数才可以调用前面定义过的函数 int main() { int n; printf("请输入一个整数:"); scanf("%d", &n); int facRet = Factorial(n);//阶乘函数调用 printf("%d!=%d", n, facRet); } int Factorial(int n)//阶乘函数定义 { int i, ret = 1; for (i = 1;i <= n;i++)//此处i不能为0(原因:当i=0时,ret*=i恒为0) { ret *= i;//累乘 } return ret; }
2、求n个n的阶乘的和
- 方法一【时间复杂度为O(n2)】
- 方法二 【时间复杂度为O(n)】
#pragma warning (disable:4996) #includeint facSum(int n); int main() { int n; printf("请输入一个整数:"); scanf("%d", &n); int ret = facSum(n); printf("1!到%d!的和为:%d",n,ret); } int facSum(int n) { int a, b, fac = 1, sum = 0; for (a = 1;a <= n;a++) { int fac = 1;//fac置空(否则会保留之前的计算结果)-- 具体例子--2!计算完后,fac的值为2,此时再计算3!此时会多乘2,为了避免多乘,需要将fac置空,不置空输入3,fac最终结果为12=1!*2!*3! for (b = 1;b <= a;b++) { fac *= b;//分别计算每个数的阶乘(1到a的阶乘) } sum += fac;//将所求每个数的阶乘进行累加(1到n的阶乘的和) } return sum; }
运行结果
#pragma warning (disable:4996) #includeint facSum(int n); int main() { int n; printf("请输入一个整数:"); scanf("%d", &n); int ret = facSum(n); printf("1!到%d!的和为:%d", n, ret); } int facSum(int n) { int a, fac = 1, sum = 0; for (a = 1;a <= n;a++) { fac *= a;//依次计算[1,n]的阶乘 sum += fac;//依次累加上[1,n]的阶乘 } return sum; }
运行结果
3、一段文字从俩端依次向中间显示
#include#include //引入strlen的头文件 #include //引入Sleep的头文件 int main() { char arr1[] = "Welcom to AnHui!"; char arr2[] = "****************"; int left = 0; int right = strlen(arr1)-1;//right为arr1数组最右边数的数组下标 while (left<=right) { arr2[left] = arr1[left]; arr2[right] = arr1[right]; left++; right--; printf("%sn",arr2); Sleep(1000);//程序睡眠1000ms system("cls");//清空屏幕(清除之前打印的内容,最终结果也会被清除) } printf("%sn", arr2);//清除屏幕时会将最终结果也清除掉,重新在屏幕上打印最终结果 }
运行结果(运行结果为动态,视频暂未审核,后期补上)



