C语言基本语法

本文介绍了C/C++中的输入处理,如while(~scanf(%d&n))的含义,涉及位操作符~和&&的用法。此外,还探讨了递推与递归的概念,以及在编程中如何寻找递推关系式。同时,讲解了memset和sort函数的使用,并展示了C++中容器如queue的基本操作。内容涵盖了编程基础与算法理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

while(~scanf("%d", &n)&&n)的含义

  • scanf的返回值是输入值的个数,如果没有输入值则返回-1

  • ~是按位取反

~scanf("%d", &n) 如果没有返回值,对于-1按位求反得到0

所以如果没有输入则退出循环

  • && 相当于and

即,当输入不为空,而且不为0,进入循环

  • while(1)无限循环,python 和c在布尔类型上相通

*https://github.com/liuchuo*

^运算符

  • ^运算

位异或运算符 ^

1^1=0 0^0=0

0^1=1 1^0=1

所以,a=a^b

^运算性质:

n ^ m ^ m = n

找一个 数字—出现奇数次 ,(异或运算入门) ,如果a、b两个值不相同,则异或结果为1

递推与递归的区别

递归:一种通过重复将问题分解为同类的子问题而解决问题的方法。(函数自己调用自己)
从未知到已知

递推:用若干步可重复运算来描述复杂问题的方法。通常是通过计算前面的一些项来得出序列中的指定项的值。(重复进行一个过程)
从已知到未知

求解递推思路

往往递推是需要求出一个关系式,一个数列的下一项是由它前面几项运算得到的( 如F(n)=F(n-1)+F(n-2) )

思考方式:求第n个方案的时候,0~n-1的方案都是已知的
1、将第n个元素加进去,看对整个方案的影响,推出关系式
2、当然,也可以通过数学归纳法(即找规律)推出关系式

memset 和sizeof用法

常见用法 memset(a,0,sizeof(a))

原型:extern void *memset(void *buffer, int c, int count);

头文件:#include <string.h>

功能:把buffer所指内存区域的前count个字节设置成字符c

c++中sort函数

头文件:#include

格式:sort( first , last ,comp );

(1)第一个参数first:是要排序的数组的起始地址。

(2)第二个参数last:是结束的地址(最后一个数据的后一个数据的地址)

(3)第三个参数comp是排序的方法:可以是从升序也可是降序。如果第三个参数不写,则默认的排序方法是从小到大排序。

//如果要从大到小,自定义函数cmp
bool cmp(int a, int b)
{
    return a>b;
}

对于容器,容器中的数据类型可以多样化 :

转载:https://www.cnblogs.com/junbaobei/p/10776066.html

queue

/*
back()返回最后一个元素
empty()如果队列空返回true
front()返回队首元素
pop()删除队首元素
push()在末尾加入一个元素
size()返回队列中元素的个数
*/
//插入元素
q1.push(1);
//返回队列大小,即队列中元素的个数
int len=q1.size();
cout<<len<<endl;
//返回队首元素(第一个插入的元素(不删除,只访问))
int a=q1.front();
cout<<q1.front()<<endl;
//返回队尾元素(最后一个插入的元素(不删除,只访问))
int b=q1.back();
cout<<b<<endl;
//遍历队列,不能用for循环,没有对应的迭代器,只能边删除边访问
while(!q1.empty())//判断队列是否为空
q1.pop();//只删除队首元素,没有返回值
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值