二進制,ASCll碼,控制符,跳脫字元, 求各個位數的數位,逆置數

2020-08-08 21:32:52

二進制

#include<stdio.h>

void  main()

{
	
	unsigned  char  c=250;                    //二進制是1111 1010 
	
	char  cx=c;                              //二進制也是1111 1010,最高位是1,認爲是負數 
	
	printf("c=%u,xc=%d\n",c,cx);             //xc是cx的二補數 cx=1111 1010 , xc=1000 0110 
	
	int  x=-1;                      //二補數是1111 1111 1111 1111 1111 1111 1111 1111 1111 
	
	printf("%u\n",x);/*輸出控制符%u是指按無符號整數輸出變數x。而x的二進制值所以位都是1,
	按無符號數處理,得到的是最大無符號整數 */
	
	int y=1;
	
	printf("%d\n",(y<<sizeof(int)*8-1)-1);//得到的是 最大帶符號整數 
	/*<< 是向左按二進制進行移位運算,在sizeof(int)個位元組中,除了最高位的
	符號位爲0,其餘位均爲1,即是最大帶符號整數(即可表示的最大正整數)*/ 
	
	int  i=12345;
	
	printf("%d\n",i);

	printf("%c\n",i);       //將i按字元輸出,則只取最低位元組的值 
	
	printf("%f\n",i);       //格式控制符與i的型別不一致,結果? 
	
}

<< 是向左按二進制進行移位運算,在sizeof(int)個位元組中,除了最高位的
符號位爲0,其餘位均爲1,即是最大帶符號整數(即可表示的最大正整數)

執行結果
在这里插入图片描述

ASCll碼

#include<stdio.h> 

void main()

{
	char  c='A';                  //字元A的ASCll碼是65 
	
	int ix=101,iy=130;            //字元e的ASCll碼是101 
	
	float  fx=49.5;
	
	double  dx=98.8;
	
	fx=c; printf(".....%f\n",fx); //自動型別轉換 
	
	c=ix; printf("...%c\n",c);    //直接賦值,無警告,會發生擷取 
	
	c=iy; printf(".%c\n",c);      //直接賦值,無警告,會發生擷取 
	
	c=fx; printf("---%c\n",c);     //直接賦值,有警告,會發生擷取 
	
	ix=fx; printf("---%d\n",ix);   //直接賦值,有警告,會發生擷取 
	
	iy=(int)dx; printf("iy=%d\n",iy);//強制型別轉換 
	
	iy=(int)(fx+dx);                 //強制型別轉換,需要在適當位置加括號 
	
	printf("iy=%d\n",iy);    
	
	printf("%d\n",c);               //正確,字元自動轉換成整數輸出 
	
	printf("%c\n",ix);              //正確,字元自動轉換成整數輸出 
	
	printf("%c\n",iy);              //正確,但結果發生擷取 
	
	printf("%d\n",fx);              //正確,但結果非法,發生擷取 
	
}

執行結果
在这里插入图片描述

控制符,跳脫字元

#include<stdio.h>

void main()

{
	
	char c='A';
	
	int ix=12;
	
	long lix=123456;
	
	float fx=-12.345618f;
	
	double   dx=168;
	
	printf("c=c%,to int:%d\n",c,c);/*ACSll碼實質是一個整數*/ 
	
	printf("ix=%d;\n",ix);   /*輸出,變數的型別必須與控制符號相對應*/ 
	
	/*printf("--------------\n00012345678901234567890\n");*/
	
	printf("ix=%5d;%-5d;按對齊方式,按指定寬度輸出\n",ix,ix);
	
	printf("lix=%ld\n",lix);
	
	printf("fx=%f;預設格式輸出\n",fx);
	
	printf("fx=%9.4f,%-9.4f;按對齊方式,按指定寬度輸出\n",fx,fx);
	/*3表示總寬度是9,包括負數的符號位,整數部分,小數點,小數部分*/
	/*預設的是右對齊;負號表示左對齊;.4表示小數部分的寬度是4 
	
	printf("---------------------\n");
	
	printf("fx=%e\n",fx);       /*指數形式輸出*/ 
	
	printf("dx=%f\n",dx);
	
	printf("dx=%e\n",dx);
	
	printf("The percentage of the girls is 48%%.\n");//輸出% 
	
	printf("\"This\'s a joke.\"\n");//輸出單,雙引號 
}

執行結果
在这里插入图片描述

求各個位數的數位,逆置數

#include<stdio.h>

int main()

{
	
	int x,y ,z;
	
	int a,b,c,d,e;
	
	printf("please input   x=");
	
	scanf("%d",&x);    //務必輸入一個5位得正整數 
	
	a=x%10;            //得到個位上的數位
	
	b=x/10%10;         //十位
	
	c=x/100%10;        //百位 
	
	d=x/1000%10;       //千位 
	
	e=x/10000%10;      //萬位 
	
	y=(((a*10+b)*10+c)*10+d)*10+e;
	
	z=((int)(x/10.0+0.5))*10;
	//採取除以10.0,加0.5,取整,再乘以10的方式,實現對個位的四捨五入 
	
	printf("各位置上的數位依次是  %d,%d,%d,%d,%d\n",e,d,c,b,a);
	
	printf("x=%d,它的逆置數  y=%d\n",x,y);
	
	printf("對x=%d的個位進行四捨五入後,得到的數z=%d\n",x,
	return 1;
	
}

C語言中%d,%nd,%f,%lf,%c,%o,%x %e這個幾個符號的bai表示意思如下:du
1、%a(%A) 表示浮點zhi數、十六進制數位和p-(P-)記數法(C99)。
2、%c 表示字元dao。
3、%d表示有符號十進制整數。
4、%f 表示浮點數(包括float和doulbe)。
5、%e(%E)表示 浮點數指數輸出[e-(E-)記數法]。
6、%g(%G) 表示浮點數不顯無意義的零"0"。
7、%i表示有符號十進制整數(與%d相同)。
8、%u表示無符號十進制整數。
9、%o表示八進制整數 e.g. 0123。
10、%x(%X)還是十六進制整數 e.g. 0x1234。
11、%p 表示指針。
12、%s表示字串。

執行結果

在这里插入图片描述