C语言板块积累(一)

目录

板块一:判断是否为素数 

板块二:计算阶乘和

板块三: 找出消失的数

板块四:算数字的位数

板块五:逆转数组(对从最左和最右之间的数进行逆置)

板块六:逆转数组(先部分逆转,再整个逆转)

 板块七:判断质数(虽然前面有类似的,但这里有改进,更严谨一点)


板块一:判断是否为素数 

int flg(int x)//用函数来判断是否是素数
{
	int i;
	double k;
	int flag=0;
	k=sqrt(x);
	for(i=2 ; i<=k ; i++){
		if(x%i==0){
			break;
		}
	}
	if(i>k){
		flag=1;
	}
	return flag;
}

代码解释:此代码用于判断输入整型是否为素数,如果是素数则返回1,反之返回0

板块二:计算阶乘和

int chengji(int x)
{
	int chengji,sum=0;
	for(int i=1;i<=x;i++)
	{
		int chengji=1;
		for(int j=1;j<=i;j++)
		{
			chengji=chengji*j;
		}
		sum+=chengji;
	}
	return sum;
}

代码解释:此代码用于计算1到x的阶乘和,注意x为整型

板块三: 找出消失的数

int missingNumber(int*nums,int numsSize)
{
	int sum1=0,sum2=0;
	int miss;
	for(int i=1;i<=numsSize;i++)
	{
		sum1+=i;
	}
	for(int i=0;i<numsSize;i++)
	{
		sum2+=nums[i];
	}
	miss=sum1-sum2;
	return miss;
}

代码解释:本来是想要用异或来解,但想来想来还是直接用这个简单粗暴的做法,输入一个数组和数组的长度,就会返回数组中所缺的值,比如数组为1,3,4,就会返回2

板块四:算数字的位数

e = (int)log10(m)+1;

代码解释:此代码可以将m的位数赋值给e,记得m要为整型,e和m要先定义

板块五:逆转数组(对从最左和最右之间的数进行逆置)

void Reverse(int *nums,int left,int right)//对从left和right之间的数进行逆置
{
	while(left<right)
	{
		int tmp=nums[left];
		nums[left]=nums[right];
		nums[right]=tmp;
		++left;
		--right;
	}
}

代码解释:此代码用于对整个数组的逆转,实现过程类似于a、b互换

板块六:逆转数组(先部分逆转,再整个逆转)

void Reverse(int *nums,int left,int right)//对从left和right之间的数进行逆置
{
	while(left<right)
	{
		int tmp=nums[left];
		nums[left]=nums[right];
		nums[right]=tmp;
		++left;
		--right;
	}
}
void rotate(int*nums,int numsSize,int k)
{
	if(k>=numsSize)
	{
		k=k%numsSize;
	}
	Reverse(nums,0,numsSize-k-1);
	Reverse(nums,numsSize-k,numsSize-1);
	Reverse(nums,0,numsSize-1);
}

代码解释:此代码用于先以k为界,分为两个部分各自进行逆转,然后再对新数组进行整个的逆转

 板块七:判断质数(虽然前面有类似的,但这里有改进,更严谨一点)

bool zhishu(int num) 
{
	if (num <= 1) 
    {
		return false;
	}
	for (int i = 2; i*i<=num; ++i)
     {
		if (num % i == 0) 
        {
			return false;
		}
	}
	return true;
}

代码解释:此代码返回的是布尔值,请注意使用方式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值