- 博客(23)
- 收藏
- 关注
原创 冒泡排序适用于各种类型
#include<stdio.h>int com_int(const void*e1,const void*e2)//运算必须知道,元素的类型{ return *((int*)e1)-*((int*)e2);//对int类型进行比较}int com_f(const void*e1,const void*e2){ if(*((float*)e1)-*((float*)e2)>0) return 1; else if(*((float*)e1)-*((float*)e2).
2021-07-05 17:02:56
488
原创 回调函数(举例)
#include <stdio.h>int add(int x,int y){ return x+y;}int sub(int x,int y){ return x-y;}int mul(int x,int y){ return x*y;}int div(int x,int y){ return x/y;}void menu(){ printf("0.推出\n"); printf("1.加\n"); printf("2.减\n"); printf(.
2021-07-04 13:49:48
1063
原创 数组参数传递
一维数组#include <stdio.h>void test(int a[]){}//不指定数组大小void test(int a[10]){}//指定数组大小void test(int* a){}//a中传过来的是首元素的地址,既然是地址就可以用指针来接受int main(){ int a[10]={0}; test(a); return 0;}指针数组#include <stdio.h>void test(int* a[]){
2021-07-03 14:59:13
139
原创 指针数组和数组指针
指针数组本质上是数组,让我们来看一下它是如何定义的int a,b;int* p[2]={&a,&b};如图定义了一个名为p的数组,有两个指针类型的元素,每个指针是int*类型的,也可以放入数组名,因为数组名本质上就是一个指针变量,*是解引用操作,*p可以通过p内存储的地址,找到这个地址对应的值,大概可以看成 int* arr=arr[0] ,所以*arr得到的值就是arr[0]里的值数组指针本质上是指针int arr[]={1,2,3}int (*p)[10.
2021-07-02 14:41:19
82
原创 浮点数类型
每一个小数都可以用科学计数法,3个参数来表示。比如-12.5,就可以表示为(-1)^1x1.23x10^1,当然在计算机中我们可以用二进制来表示,可以表示为-1100.1,关于小数部分的十进制转二进制,可以用乘二取余法,那么这个二进制数可以表示为(-1)^1x1.100x2^3,三个参数分别为s--->(-1)的指数用来表示浮点数的正负,M是1.1范围在1~2之间,2的指数E这三个参数在32位电脑的存储方式,s占第一位1为正2为负,2~10位存放E,由于这8位表示的是无符号数,表示范围是0~.
2021-07-01 15:09:37
415
原创 char类型讲解
首先从无符号开始讲的话,也就是unsigned char,范围是0~255,由于在内存中都是以正数形式存储的,所以原反补码都相同。char类型默认为有符号,即最高的一位为符号位,范围是-128~127,若最高位为1,则其为负数,以补码形式存储,一个负数的真实值由原码来表示,最高位为符号位,而在计算机的存储值可以用补码来表示,补码可以由原码除符号位以外按位取反,再加一得到。char类型在计算的时候范围在-128~127,char的值形成一个闭环,若将127+1,得到的值是-128...
2021-06-29 14:49:31
4451
原创 整型提升。
由于32位计算机是以,4字节为单位进行计算的,如果在编程的时候,使用char类型的变量进行计算,那么这个变量的值就会被整型提升,具体方法为,1字节的二进制数,会被补充到4字节,补充内容为,符号位数的值,最后计算得到的值截取原来的一字节,得到的数都是以补码形式存在...
2021-06-28 14:20:06
102
原创 数组和冒泡排序
给数组char类型赋值char a[]="abc"char a[]={'a','b','c','\0'}两者等价,把一个字符串付给数组时,会自动添加一个'\0',两个声明方式都包含四个元素。strlen可以读取一个数组的长度,前提是该数组必须以'\0'结尾,strlen不会把'\0'包括在数组长度中。而sizeof 可以读出数组的长度*类型字节长度,包括'\0'。'\0'的ascll码是0。冒泡排序详解。#include <stdio.h>void f(int* a,
2021-06-25 18:42:07
159
原创 递归的思想
#include<stdio.h>int f(int i){ if(1==i) { return 1; } return i*f(i-1);}int main(){ int n=6; int z=f(n); printf("%d",z);}尾递归void p(int n){ if(n>=2) { p(n/2); } printf("%d",n%2); }int main(){ int n=254; p(n); ret.
2021-06-21 17:55:34
80
原创 6.20注意常见错误
你在输入缓冲区输入时(以回车为结束标志),scanf函数会读取回车前的内容,而回车是也是一个字符'\n',它的存在会影响之后getchar();函数的读取。fo
2021-06-20 16:58:26
72
原创 6.19关于分支结构的进阶
else会和最近的一个if匹配switch函数的使用int a;switch(a) { case 1: case 2: case 3: case 4: case 5: printf("weekday\n"); break; case 6: case 7: printf("weekend\n"); break; }switch
2021-06-19 14:00:35
69
原创 2021-06-18
#include <stdio.h>struct book//对结构体进行定义,相当于定义了一个大变量,{ char name[20];//结构体由若干个变量构成 int price; int quantity;};//结尾记得加分号表示定义完成int main(){ struct book b={"c plan",20,10};//声明变量:struct book(变量类型),b(变量名)={(对结构体里每一个变量进行赋值)} struct book*p=&b;.
2021-06-18 14:42:46
46
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人