c语言 电子狗输入两个整数,C语言

本文介绍了C语言中的字符串常量定义、输入下划线的方法、布尔类型的使用,以及逻辑运算和switch语句的注意事项。还详细讲解了位运算,包括与运算、或运算、异或运算、左移和右移操作,并通过实例展示了它们在编程中的应用。此外,还涉及了求余运算、求幂运算、组合数计算以及如何判断数字的奇偶性。最后,提到了程序设计中的一些小技巧,如利用位运算交换变量的值和在循环中的使用。
摘要由CSDN通过智能技术生成

1.定义字符串常量

const char a[长度]=“字符串";

这样就可以了 无法修改a的内容!

const char*是最好的

#define

2.英文状态下输入shift+_就可以了。。。必须在英文状态下!,即可输入下

划线

3.boolean p;

p=(3<5);

p=(x!=5)||(x!=3),此为永真式

4.或者是||,按住shift键,同时按住一个上面有'\'和'|'的键

5.bool和boolean区别

bool应该是C语言里定义的,返回值为true和false(事实上就上1和0)

而BOOL应该是MFC及SDK里定义返回值的.

它的定义应该是:typedef int BOOL;(WINDEF.H中定义)

也就是说它是int型的

返回值是大写的TRUE 和FALSE

定义如下:

#define FALSE 0

#define TRUE 1 (AFX.H中如此定义

boolean一般用于java ,vc中不可用

6.

6.switch中必须为整型值case空格1: 若每个case后都有break语句,则

不用管其顺序

bool取值false和true,是0和1的区别; false可以代表0,但true有很多种,

并非只有1。   如果数个bool对象列在一起,可能会各占一个bit,这取决

于编译器。   BOOL是微软定义的typedef int BOOL(在windef.h中)。与

bool不同,它是一个三值逻辑,

7.求余在vc和turbo中和被除数有关

double y=3.5;

int x=(int)y;在java中必须加上括号

8.#include

int main()

{

int i=1;

while(++i<=9)

printf("%d\n",i);

}

输出2到9

若while中为i++,输出2到10;可知while循环是立即执行i自增,不同于for循

while一般用于不确定次数迭代

9.黑白方格棋盘,世界坐标系中,双重for循环,横x=j*size;y=i*size;如

果x+y与二求余为零,或者不为零,分黑白快

10.有时编的程序可能少#,显示错误C:\Users\Administrator\Desktop

\Text1.txt.c(1) : error C2143: syntax error : missing '{' before

'

11. 求幂 可以用在math.h头文件中声明的pow()函数求,例如:

要求a的b次方,就用pow(a,b)即可。

^符号在C中是位异或操作符,不用于求乘方。

12.由于大一学习C语言的时候在位运算这块老师是简单提了下,所以当时一直

没在意这个东西,觉得没什么用处。今天在数据结构习题集上碰到一到题目,

设计到了异或运算,顺便把位运算整个整理一下。

c语言中给出的位运算有位与运算、位或运算、位异或运算、左移运算以

及右移运算。

1.与运算(&)

按照“如果同为1则结果为1否则为0”的原则逐位求与运算。(注意这里

是相对于二进制的每一位而言的)

例如:9&2=9(00001001)&5(00000101)=1(00000001)。

1)与运算可以用来实现特定位的清零工作(只需将清零位置置0,其余位置置

1)。

例如:10011010,需要将高4位清零,可以让此数字和00001111做与运算即可

2)可以取得特定的位(只需将待取位置1,其余位置0)。

例如:00011101,想要取到第5位,只需和00010000做与运算即可。

2.或运算(|)

按照“如果同为0则结果为0否则为1”的原则逐位求或运算。

例如:3|2=3(00000011)|2(00000010)=3(00000011)。

1)可以将操作数中的特定位置1。

3.异或运算(^)

按照“同0异1(即同为0或者同为1时为0否则为1)”的原则逐位求异或运

算。

例如:5^7=5(00000101)^7(00000111)=2(00000010)。

1)使特定位的值取反(只需将需取反的位置1,其余为0)。

例如:00101101后4位取反,只需跟00001111求异或运算即可

2)不引入第三变量交换两个变量的值。

a=a^b;b=a^b;a=a^b;(这里注意原因是这样的:a^(a^b)=(a^a)^b=b;b^(a^b)

=(b^b)^a=a;)

从整数的角度是很好理解的:a^a为0再^b结果肯定为b(0与任何位求异或,位

不变:0^1=1,0^0=0),而

a^(a^b)=b可以从一个表格理解:

a b 结果

0 0 0

0 1 1

1 1 0

1 0 1

从表格可以看出,单位求异或后用结果与操作数相异或即可得到另一操作数,

那么把单位推广到多位即可理解了。(这个我在今天的数据结构题集中遇到了

此问题,算是理解了)

4.左移运算(<

形如a<

补0。

例如:4<<2=8,00000100全部左移1位即00001000。

5.右移运算(>>)

形如a>>b的二目运算符,将a操作数的各位全部右移b位,低位丢弃,区别

于左移运算如果为负数则高位补1,如果为正数则补0.

例如:-3>>2=-96

10000011(-3)>>2=11100000(-96)

6.有时候判断偶数,可以写函数,return ((x%2)==0);若为偶数,置数组元素

为1,否则不变(事先全置为0,memset(str,0,sizeof(str)),用

string.h或者memory.h

7.是我疏忽了 it's my bad

8.#include

int main()

{

int a,b;

while(scanf("%d%d",&a,&b),a||b)//试验过,中间用换行或者空格

隔开均可

printf("%d\n",a+b);

return 0;

}

输入两个零才结束

9.求组合数 n k

法一:运用组合加和公式,采用递归

#include

#define ERROR 0

int fun(int n,int r)

{

if(n

return ERROR;//ERROR先要预先定义,不知为啥,分号为英文状态下,刚开

始没想起n

else

{if(1==n||0==r||n==r)

return 1;

else

return (fun(n-1,r-1)+fun(n-1,r));

}

}

int main()

{

int n,r;

scanf("%d%d",&n,&r);

printf("%d\n",fun(n,r));

return 0;

}

法二:c(9,4)9*8*7*6/1*2*3*4,从左到右逐次约分

double ans=1.0;

for(i=1;i<=k;)

{

ans=ans*n/i;//用double,减少溢出

--n;

++i;

}

输出(“%lf”);

10.

咸猪手:性骚扰

11.ABC三者每经23.28.33天到达顶峰;给出ABC在一年内达到顶峰的日期abc,

求出从指定日期d开始再过几天三者同时达到顶峰

for(i=1;(d+i-a)#||(d+i-b)(||(d+i-c)3;i++);//执行空语句

12.输出第n个菲薄罗娜数列的后四位

f(0)=0,f(1)=1;

for(i=2;i<=n;i++)

{

f(i)=f(i-1)+f(i-2);

f(i)/=10000;

}

输出f(i);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值