变量
变量类型决定着占用内存区的长度,变量名与该起始地址对应。
变量类型所占内存空间大小
char :1个字节
short int :2个字节
int :4个字节
unsigned int :4个字节
float :4个字节
double: 8个字节
long :4
long long :8个字节
unsigned long :4个字节
char * :4个字节
32位系统下所有类型的指针变量都是4个字节
64位系统下所有类型的指针变量都是8个字节
关于bool型:
C++中才有,使用时要引用头文件《stdbool.h》
printf()格式化参数
%d 按十进制整型数据的实际长度输出
%ld 输出长整型数据
%md m为指定的输出字段宽度。如果数据的位数小于m,则左端补上空格,若大于m,则以实际位数输出
%u 输出无符号整型。
%c 输出一个字符
%f 输出实数,包括单精度和双精度,以小数形式输出。不指定字段宽度,由系统自行指定,整数部分全部输出,小数部分输出6位,超过6位四舍五入
%.mf 输出实数时小数点后保留M位,注意m前面有“.”
%o 以八进制输出,
%s 输出字符串
%x 以十六进制输出整数,如果是小写x,输出字母就是小写的,如果是大写的X,输出字母就是大写的。加上#,九一标准的十六进制形式输出。
sizeof()
测量类型所占长度!注意区分和strlen()的区别
static
修饰局部变量:局部变量一般存在与栈中,函数运行结束,栈内存回收释放。如果用static修饰的话,该变量便存放于静态数据区,其生命周期一直保持到程序结束。
extern
表示当前的变量或函数不是在本源文件中定义的,它是外部变量或外部函数‘
常量
#define PI 3.14
const int MAX_SIZE = 5;
运算符优先级
百度
位运算符
C中6种运算符: &与 ,|或, ^ 异或 ,~取反,<<左移 , >>右移
!!!!
If语句—while—do-while—for—switch
基础语法 省略
short的问题
scanf中应该用%hd接受。
异或运算
给出一个非空整数数组除某一个元素之出现一次以外,其余元素均出现两次 找出只出现一次的元素
int singleNumber(int* nums,int size){
int result =0 ;
for(int i=0;i<size;i++){
result ^=nums[i];
}
return result;
}
日历
#include <stdio.h>
#include <stdlib.h>
//判断是否为润年
int isRn(int year){
return (year%4==0&&year%100!=0)||year%400==0;
}
//得到某年某月多少天
int getMouthDay(int year,int mouth){
int MouthDay = 31;
if(mouth==2){
MouthDay=(isRn(year)? 29:28);
}else if(mouth==4||mouth==6||mouth==9||mouth==11){
MouthDay=30;
}
return MouthDay;
}
//得到距离1900年1月1日中间有几天
int getYearDay(int year,int mouth){
int Day = 0;
for(int i=1900;i<year;i++){
Day += (isRn(i) ? 366:365);
}
for(int j=1;j< mouth;j++){
Day += getMouthDay(year,j);
}
return Day;
}
//显示日历
void show(int year,int mouth){
int mouthDay=getMouthDay(year,mouth);
int space = (getYearDay(year,mouth))%7;
printf("------%d--%d-------\n",year,mouth);
printf("mon\ttue\twed\tthu\tfri\tsat\tsun\n");
for(int i=0;i<space;i++){
printf("\t");
}
for(int i=1;i<=mouthDay;i++){
printf("%d\t",i);
if((i+space)%7==0){
printf("\n");
}
}
}
int main(void) {
show(2020,2);
return EXIT_SUCCESS;
}