栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言练习打卡---Day001】

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C语言练习打卡---Day001】


打卡博客仅作为记录,有误部分请在评论区指正,谢谢!!


  • 题目
    • 1、求n的阶乘
    • 2、求n个n的阶乘的和 [O(n2)和O(n)]
    • 3、一段文字从俩端依次向中间显示内容
代码部分

1、求n的阶乘


#pragma warning(disable:4996)//解决scanf在visual studio2019中报错
#include
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;
}



2、求n个n的阶乘的和

  • 方法一【时间复杂度为O(n2)】
  • 方法二 【时间复杂度为O(n)】

#pragma warning (disable:4996)
#include
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;
}

运行结果



#pragma warning (disable:4996)
#include
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;
}

运行结果



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);//清除屏幕时会将最终结果也清除掉,重新在屏幕上打印最终结果


}

运行结果(运行结果为动态,视频暂未审核,后期补上)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1009710.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号