11.30~12.5学习笔记

本文探讨了C语言中的循环、函数、关键字const的使用,以及编程实践中的技巧。通过实例解析了如何利用无明显循环次数的迭代、异或运算进行两数交换,以及如何判断数的阶乘尾部零的个数。同时,文章提醒注意溢出问题,并分享了简洁高效的代码实现方式。
摘要由CSDN通过智能技术生成

知识

循环(C)

上篇
3.无明显循环次数——拆分迭代循环

可利用拆分判断整数位数(数字反转)
以十进制整数(x)为例:
int k,a=0;
count(计数器)=0;
   while(x){
		k=x%10;
	    a=a*10+k;
	    x=x/10;
	    count++;
  }
函数(C)
	输出值类型   函数名(参数声明表)
	{
			函数体;
			return  输出变量;
	}
	(省略返回值类型,默认int型)
	(可执行分离式开发)

scanf()带返回值,成功读入多少个数据,返回多少,可以用while(scanf(“% ”,& ))检测是否读入。
拆分字符串函数:gets();strcat(变量,“ ”);

关键字(C)

const(constant)
可修饰变量,数组,指针,函数参数等。

  1. 变量
    对变量声明为只读特性,保护变量值以防被修改。

    节约空间,编译器不给普通const只读变量分配空间,将其保存到符号表中,无需读取内存操作。
    
  2. 数组
    同变量,只具只读特性,更改报错。

  3. 指针

  • 限定指向空间的值不能修改。
  • 限定指针不能修改。
int i=5,j=6,k=7;
const int *p1=&i;

*p1=19 //错误
p1=&k  //正确
int i=5,j=6,k=7;
int *const p2=&j;

*p2=19 //正确
p2=&k  //错误
  1. 函数参数
    对参数起限定作用,防止其在函数内部被修改
  • 普通变量
  • 指针变量

刷题感悟(C)

1.两数交换(续)( int x=3,y=5)

  1. 利用运算(上篇提到)
#include<stdio.h>
int main(void)
{
	int x=3,y=5;
	x=x+y;
	y=x-y;
	x=x-y;
	printf("%d%d",x,y);
	return 0;
}

这周突然发现了这个方法的大问题,,,因为定义了int型,所以累加计算是有可能导致溢出的,,大意了

  1. 利用异或运算
    所以又发现了这个方法,异或处理的是数据的二进制码,对计算机来说直接在电路上操作,高效。
#include<stdio.h>
int main(void)
{
	int x=3,y=5;
	x=x^y;
	y=x^y;
	x=x^y;
	printf("%d%d",x,y);
	return 0;
}

2.左移&右移 运算符

对正整数而言,对其进行左移n位操作等于乘以2的n次方倍
						 对其进行右移n位操作等于除以2的n次方

3.判断100的阶乘尾部有多少个0

分析:出现10就加一个0,10=2*5,2的倍数的个数多于5的倍数的 个数,所以5的个数可以决定100的阶乘内会有多少个‘10’.

#include<stdio.h>
int main(void)
{
	int cnt=0,x=1;
	while(x<101){
		if(!(x%5)){
			cnt++;
		}
		if(!(x%25)){
			cnt++;
		}
		x++;
	}
	printf("%d",cnt);
	return 0;
}

以下是一种精简的写法

#include<stdio.h>
int main(void)
{
	int x=100;
	printf("%d",x/5+x/25);
	return 0;
}

总结

敲代码好快乐,我爱敲代码
以后要把代码写的高效又好看!!
恳请各位斧正错误,提出不足
谢谢各位看官!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值