自学C语言一个月的笔记

最初10天是自己在牛客网做题自学的,后来在B站发现了很多0基础课程,所以就跟着学了起来,进步是很大的,因为老师讲的非常仔细,我记录了一些笔记,收藏在这里。

一、类型+符号+定义

常量定义

  1. #define NUMBER 10
  2. const int PI = 3;

符号

  1. A?B:C A真执行B,A假执行C;
  2. 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;

库函数

  1. <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个字节;

输出类型

  1. %2d 两位数右对齐;%-2d两位数左对齐;%.2d和%0d两位数补零对齐;
  2. 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排序

 原码反码补码

字符转换函数 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值