当前位置 : 主页 > 编程语言 > c语言 >

C语言简单

来源:互联网 收集:自由互联 发布时间:2023-09-06
1. 数据类型 按照数据在内存中所占的大小(32位机) 一般有如下划分int 整型 4个字节 char 字符型 1个字节 float 单精度浮点型 4个字节 double 双精度浮点型 8个字节 long 长整型 4个字节 sh
1. 数据类型 

	按照数据在内存中所占的大小(32位机) 一般有如下划分
	
	int  	整型   			4个字节  
	char 	字符型          1个字节 
	float   单精度浮点型    4个字节 
	double  双精度浮点型    8个字节 
	long 	长整型    		4个字节 
	short   短整型			2个字节 
	...
	
	
	按照数据有无符号位的划分 有可以分为 : 
	
	signed int : 有符号整型 
	unsigned int : 无符号的整型 
	...
	
	
	进制之间的转换: 
	
	十进制数 15 -》 十六进制数 ? 
	
			1111       0xf
	
	十六进制的1位 对应二进制的4位 
	八进制的1位 对应二进制的3位 
	
	例: 
		10进制数 253 --》 16进制 ? 
		
		253 = 256 - 1 - 2 
		
		256:  1 0000 0000 
		
		255:    1111 1111 
		
		253:    1111 1101
		
		十六进制:0xfd
	
		//1 2 3 4 5 6 7 8 9 a b c d e f 
	
		
		十进制176换成 八进制 和 十六进制  ?
	
	
		176 = 128(2^7) + 32(2^5) + 16(2^4)
		
		176 :  10 110 000
		
		十六进制: 0xB0
	
		八进制: 260
		
		
	整数在计算机中存储形式? 
	
		整数在计算机中以补码的形式存放。 
		
		正数的补码是其原码本身    原码:二进制
		负数的补码是其绝对值的原码 取反 +1 
		
		
		例: 
			17的补码是多少? 
				
				17 = 16(2^4) + 1 
		
				00000000 00000000 00000000 00010001
		
			-17的补码是多少? 
				
			绝对值17的原码: 00000000 00000000 00000000 00010001 
			取反		  : 11111111 11111111 11111111 11101110
			+1			  : 11111111 11111111 11111111 11101111    --》 -17的补码
	
	
		
			11111111 11111111 11111111 11101111 ?
			
		-1:11111111 11111111 11111111 11101110 
		取反00000000 00000000 00000000 00010001    -17
			
 2. 运算符与表达式  

	= : 赋值 
	== : “等于” 
	+ - * / % : 
				5/3 = 1 
				6.0/3 = 2.0
	
	逻辑运算符: 
				&& :两者都为真 结果才为真 
				|| :只要有一个为真 结果就为真
				! : 结果取反
				在C语言中 什么代表真 什么代表假? 
							非0代表真  0代表假 
			
				printf("%d\n", 5&&-1); //1
				printf("%d\n", 5&&0);  //0
			
			
	位运算符: 他的操作的对象是bit位。

			& : 按位与 
			| :按位或 
			~ :按位取反 
			^ :异或  “求异”  不同为1  相同为0
			<< :按位左移 
			>> :按位右移
			
	  例: 
			5 & 6  ? 
			
			位运算符计算前 先把操作的数都化成二进制 
			然后对相对应的bit位进行操作 
			
			5:  00000101 
			6:  00000110 
			————————————————
			
			&	 00000100 	  == 4


	练习: 
			
			求: 5 | 6  		7
			     ~(5 | 17)    -22 
				 7 ^ 10         13
				 3 >> 1         1
				 1 << 4         16

	

				 ~(5 | 17)    -22 

				5:  00000000 00000000 00000000 00000101 
				17: 00000000 00000000 00000000 00010001 
				___________________________________________
				| : 00000000 00000000 00000000 00010101 
				
				
				
				~ : 11111111 11111111 11111111 11101010 
				
				-1: 11111111 11111111 11111111 11101001 
				取反00000000 00000000 00000000 00010110  	16 + 4 + 2 = 22 《==绝对值 


	 自增和自减运算符: 

		++ :  
				int a = 1; 
				a++;  先用 后加 
				
				++a;  先加 后用 
				
				例: 
					 int a = 1; 
					 printf("%d\n",a++); 1
					 printf("%d\n",++a); 3
				
				
		-- : 
			    例: 
					int a = 1; 
					printf("%d\n",a--); 1
					printf("%d\n",--a); -1

	 三目运算符: 
			
			格式:   a ? b : c   
			
			如果a表达式为真 那么整个表达式的值就是b的值 
			如果a表达式为假 那么整个表达式的值就是c的值 

					printf("%d\n",1>2?3:4);

	
	
	3. 假设现有有一个整型变量a 请你将a的第8个bit位取反 其他bit位不变 (位操作)

			xxxxxxxx xxxxxxxx xxxxxxx0 xxxxxxxx

		==>
			xxxxxxxx xxxxxxxx xxxxxxx1 xxxxxxxx
	
	
			任何数&上1 结果都是其本身
				
				x = 1   x&1 = 1   
				x = 0   x&1 = 0
				
			任何数|上0 结果都是其本身 
				
				x = 1   x|0 = 1 
				x = 0   x|0 = 0
			
			任何数^上1 结果都是其本身取反 
				
				x = 1   x^1 = 0 
				x = 0   x^1 = 1
			任何数^上0 结果都是其本身 
				 
				x = 1   x^0 = 1 
				x = 0   x^0 = 0
	
		   xxxxxxxxxxxxxyxxxxxxxx 			a
		   
		^  0000000000000100000000         2 ^ 8 (1<<8)
		———————————————————————————————————— 
		   xxxxxxxxxxxxxkxxxxxxxx
		   
	
	
 3.三大结构   

	1. 顺序结构 
			在代码块中的代码都是按照从上到下的顺序执行。 
			{
				xxx;
				yyy;
				zzz;
			}
	
	2. 选择/分支结构
			
			if   
			else if 
			else 
			
			switch  - case 
	
	3. 循环结构
			
	
			while 
			
			for 
	
	
	
	0. 求所有的水仙花数
	水仙花数: 他是一个三位数 满足个位的立方+十位的立方 +百位的立方 的和等于他本身的值的数
	
			int i = 0;
			for(i=100;i<1000;i++)
			{
				//个位
				int gewei = i%10;   // 123    123%10 = 3 
				//十位 
				int shiwei = i/10%10;		// 123    123/10%10 = 2
				//百位 
				int baiwei = i/100 ;
				if( gewei * gewei *gewei + shiwei *shiwei*shiwei +baiwei*baiwei*baiwei	== i)
				{
					printf("%d\n",i);
				}
			}
			
	
	2.求100-1000之间满足各位数字之和是5的所有数。
	
		int i=0;
		for(i=100;i<1000;i++)
		{
			//个位
			int gewei = i%10;   // 123    123%10 = 3 
			//十位 
			int shiwei = i/10%10;		// 123    123/10%10 = 2
			//百位 
			int baiwei = i/100 ;
			if(gewei + shiwei + baiwei == 5)
			{
				printf("%d\n",i);
			}
		}
	
	
	
	《算经》中提出一个著名的“百钱买百鸡问题”,鸡翁一,值钱5,鸡母一,值钱三,鸡雏三,值钱一,
	百元买百鸡,问翁,母,雏各几何?
	
	//	5x + 3y + z/3 = 100; 
	//	x + y + z = 100;

	int x ; //鸡翁
	int y ; //鸡母 
	int z ; //鸡雏
	
	for(x=0; x<21 ;x++)
	{
		for(y=0;y<34;y++)
		{
			for(z=0;z<100;z+=3)
			{
				if(x+z+y == 100 && (5*x + 3*y + z/3 == 100 )  )
				{
					printf("x=%d , y=%d , z=%d\n",x,y,z);
				}
			}
		}
	}
【转自:韩国服务器 http://www.yidunidc.com 欢迎留下您的宝贵建议】
上一篇:2023 年最佳 C++ IDE
下一篇:没有了
网友评论