programming templets—预备知识

预备知识

1、标准输入/输出

(1) 输入格式说明

格式说明     表示内容
%d             int
%ld            long
%lld           long long
%f             float
%lf            double
%%             输出一个百分号
%c             char
%s             字符串
%o             八进制
%#o            带前导的八进制
%x             十六进制
%#x            带前导的十六进制

scanf("%d%d%*d%d", &a, &b, &c); //跳过输入的第三个数据
int x = 017;
printf("%d", x);  //输出15
printf("%o", x);  //输出17
printf("%#o", x); //输出017
printf("%x", x);  //输出11
printf("%#x", x); //输出0x11
int x = 12, y = 34;
char z = 'a';
printf("%d ", x, y); //一个格式说明,两个输出变量,后面的y不输出
printf("%c", z);# 全排列

(2)数据类型范围

有符号整数类型

类型名称	          字节数	  	        取值范围
signed char	        1	       -2^7(-128) ~ 2^7-1(127)
short  				2	     -2^15(-32 768) ~ 2^15-1(32 767)
int	                4 -2^31(-2 147 483 648) ~ 2^31-1(2 147 483 647)
long				4 -2^31(-2 147 483 648) ~ 2^31-1(2 147 483 647)
long long			8 -2^63(-9.2233720368548e+18) ~ 2^63-1		(9.2233720368548e+18)

无符号整数类型

类型名称			   字节数	           取值范围
unsigned char	     1	             0 ~ 2^8(256)
unsigned short	     2				0 ~ 2^16(65 536)
unsigned int	     4			0 ~ 2^32(4 294 967 296)
unsigned long	     4			0 ~ 2^32(4 294 967 296)
unsigned long long	 8			0 ~ 2^64(1.844674407371e+19)

浮点类型

类型名称			   字节数			   取值范围
float				 4			-/+3.4e38(精确到6位小数)
double				 8			-/+1.7e308(精确到15位小数)
long double			 12			-/+1.19e4932(精确到18位小数)

2、文件操作

(1) 重定向

#include<stdio.h>
int main()
{
	int n,i=1,a,m,k;
	scanf("%d",&n);
	freopen("in.txt","r",stdin);     //从in.txt 中读入数据
    freopen("out.txt","w",stdout);  // 将最后数据写入out.txt中
	......
	fclose(stdin);
    fclose(stdout)
	return 0;
}

3、数组

(1) 二维数组的初始化

int a[2][3]={1,2,3,4,5,6};
int a[2][3]={1,2,3,4,5,};  //合法,后面一个默认为0
int a[2][3]={{1,2,3},{4,5,6}}; //合法,每行三个
int a[2][3]={{1,2,},{4,5,6}};  //合法,第一行最后一个默认为0
int a[2][3]={1,2,3,4,5,6,7};  //不合法,赋值个数多于数组的个数了
int a[][3]={1,2,3,4,5,6};     //合法,可以缺省行的个数
int a[2][]={1,2,3,4,5,6};     //不合法,不可以缺省列的个数

4、位运算

(1) 位运算符

  • 按位与 & :参加运算的两个运算量,如果两个相应的位都为 1,则该位的结果值为 1,否则为 0
  • 按位或 | :参加运算的两个运算量,两个相应的位中有一个为 1,则该位的结果值为 1,否则为 0
  • 异或 ^ : 参加运算的两个运算量,两个相应的位相同,则结果为 0,相异则为 1
  • 取反 ~ : 单目运算符,对一个二进制按位取反,即将 0 变为 1,1 变为 0
  • 左移 << : 将一个数的各二进位全部左移若干位,左边溢出的位舍弃,右补 0
  • 右移 >> : 将一个数的各二进位全部右移若干位,移到右边的低位被舍弃。 对无符号数,左补 0(称为逻辑位移);对负数,左补符号位,即补1(称为算术位移)。

(2) 原码、反码、补码

原码

  • 最高位作为符号位(以0代表正,1代表负)
  • 其余各位代表数值本身的绝对值
  • 表示范围:-127~127 (+0和-0占用两个)

反码

  • 正数反码与原码相同
  • 负数为其绝对值的原码取反
  • 表示范围:-127~127 (+0和-0占用两个)

补码

  • 正数补码与原码相同
  • 负数:对其绝对值的原码取反,然后对整个数加1(若有进位,则被丢弃)(反码 +1 )
  • 表示范围:-128~127(0的表示方法唯一)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值