最初10天是自己在牛客网做题自学的,后来在B站发现了很多0基础课程,所以就跟着学了起来,进步是很大的,因为老师讲的非常仔细,我记录了一些笔记,收藏在这里。
一、类型+符号+定义
常量定义
- #define NUMBER 10
- const int PI = 3;
符号
- A?B:C A真执行B,A假执行C;
- a&b 按位与:同为1则为1,否则为0;
a|b 按位或:有1则为1,同0为0;
a^b 按位异或:相同为0,不同为1;
类型重定义:typeof
typeof unsigned int u_int 将unsigned int类型名定义为u_int;
unsigned int == size_t;
库函数
- <stdlib.h>
system(“cls”) 清空屏幕;
2.<windows.h>
Sleep(1000) 休息1000ms;
3.<time.h>+<stdlib.h>
srand( (unsigned int) time (NULL) );
int x = rand();生成随机整数;
4 .<string.h>
memset( arr , ‘x’ , 5) 把字符串arr的前五个字符改为x;
strcat(arr1,arr2) 把arr2追加在arr1后面,不能自己追加自己;
strncat(arr1, arr2 ,6) 把arr2前六个字符追加在arr1后面,可以自己给自己追加;
strstr(arr1,arr2) 在arr1中找字符串arr2;
返回值:找到了返回地址,没找到返回空指针NULL;
int main()
{
const char haystack[20] = "RUNOOBR";
const char needle[10] = "NOOB";
char* ret;
ret = strstr(haystack, needle);
printf("子字符串在: %s\n", ret);
return 0;
}
输出:NOOBR
strncpy(arr1,arr2,k) 拷贝k个字节;
输出类型
- %2d 两位数右对齐;%-2d两位数左对齐;%.2d和%0d两位数补零对齐;
- printf返回值为打印字符的数量;
指针
指针+1表示下一个位置;指针-指针得到元素个数;
二、语句
1.Switch语句
swich(age){
case 10 : 语句
break;
case 20 : 语句
break;
default :
break;
}
2.结构体语句
//stuct Stu 为结构体类型
struct Stu{
char name[10];
int age;
char ID[10];
};
int main(){
stuct Stu s1={“wuyuanzhou”,25,”2016302606”};
printf(“%d\n”,s1.name};
printf(“%d\n,s1->name};
return 0;
}
//或:
typedef struct Stu{
char name[10];
int age;
char ID[10];
}sstu;
//将类型struct Stu重新命名为sstu;
3.结构体排序
int cmp(const void* a,const void* b){
sstu* list1=(sstu*)a;
sstu* list2=(sstu*)b;
return list1->age-list2->age;
}
qsort(list,N,sizeof(sstu),cmp);
三、经典题型
1.求数字n二进制中有多少个1
int count=0;
while(n){
n=n&(n-1);//每次得到新的n比原n少了最后一个1;
count++;
}
2.交换整型变量a和b(不创建中间变量)
a=a^b;
b=a^b;
c=a^b;
例如a=3=011,b=5=101;
a=a^b=110;(110可以当做中间值)
b=a^b=011;
a=a^b=101;
3.递归实现字符串逆序
#include<stdio.h>
int my_strlen(char str[]) {
int count = 0;
int i = 0;
while (str[i] != '\0') {
count++;
i++;
}
return count;
}
void change(char str[]) {
int tmp = str[0]; //首元素存储
int len = my_strlen(str); //计算字符个数
str[0] = str[len - 1]; //首元素换为末元素
str[len - 1] = '\0'; //将末元素变成\0
if (len>=2)
change(str + 1); //交换中间字符串
str[len - 1] = tmp; //末元素换回来
}
int main() {
char arr[100];
scanf("%s", arr);
change(arr);
printf("%s\n", arr);
}
四、学习内容截图
qsort排序
原码反码补码
字符转换函数