打卡博客仅作为记录,有误部分请在评论区指正,谢谢!!
代码部分
/*
* 【变量名及函数名说明】
* Factorical(阶乘)
* ret --result(结果)
* facRet --factorical result(阶乘结果)
*/
#pragma warning(disable:4996)//解决scanf在visual studio2019中报错
#include<stdio.h>
int 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;
}
- 方法一【时间复杂度为O(n2)】
- 方法二 【时间复杂度为O(n)】
/* 【方法一】
* 【变量名及函数名说明】
* fac -- factorical(阶乘)
* facSum -- factorical sum(阶乘的和)
* ret --result(结果)
*/
#pragma warning (disable:4996)
#include<stdio.h>
int 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;
}
运行结果
/* 【方法二】
* 【变量名及函数名说明】
* fac -- factorical(阶乘)
* facSum -- factorical sum(阶乘的和)
* ret --result(结果)
*/
#pragma warning (disable:4996)
#include<stdio.h>
int 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;
}
运行结果
#include <stdio.h>
#include <string.h> //引入strlen的头文件
#include <windows.h>//引入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("%s\n",arr2);
Sleep(1000);//程序睡眠1000ms
system("cls");//清空屏幕(清除之前打印的内容,最终结果也会被清除)
}
printf("%s\n", arr2);//清除屏幕时会将最终结果也清除掉,重新在屏幕上打印最终结果
}
运行结果(运行结果为动态,视频暂未审核,后期补上)