![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
c语言
菜鸟c语言理解
永恒sss
这个作者很懒,什么都没留下…
展开
-
指针函数.
打印不同个数字符串#include<assert.h>#include<stdlib.h>void* PrintInt(const void* p){ int* ip = (int*)p; printf("%d ", *ip); return (void*)(ip + 1);}void* PrintDouble(const void* p){ double* dp = (double*)p; printf("%f ", *dp); return (vo原创 2021-07-25 13:32:30 · 60 阅读 · 0 评论 -
联合体的巧妙实用
sprintf_s(),sscanf_f()的使用十进制数和IP地址的相互转化十进制数转化成IP地址字符串#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<string.h>union IPNode{ int addr; unsigned char s[4];};void Uint_To_Str2(char* buff, int len, unsigned int原创 2021-07-23 16:58:39 · 58 阅读 · 0 评论 -
位运算以及计算题
1.可以进行位运算的类型char int short long int long long 无论有符号还是无符号都可以不可以进行位运算的类型float double long double 指针2. & 位与 非零即为真 只有都为1才为| 位或 有一个1即为真^ 异或 相异为1~ 未返 c=0001 1000 ~c=1110 01113.有关于位运算的题只能针对于 un原创 2021-07-11 00:12:29 · 126 阅读 · 0 评论 -
中值法查找数
int Binafindval(const int* br, int n, int val){ assert(br != nullptr); int right = n - 1, left = 0; int pos = -1; while (left<=right) { int mid = (right - left) / 2 + left; if (br[mid] < val) { left = mid + 1; } else if (br[mid] &g原创 2021-06-14 19:33:26 · 231 阅读 · 0 评论 -
递归函数初识
斐波那契数列int fac(int n) //时间复杂度较高{ if (n <= 2) { return 1; } else { return fac(n - 1) + fac(n - 2); }}int main(){ int n; scanf_s("%d", &n); int sum = fac(n); return 0;}用递归找数组中的数int FindValue(int* br, int n, int val){ assert(br原创 2021-06-08 16:49:43 · 51 阅读 · 0 评论 -
拷贝,链接函数
拷贝#include<stdio.h>#include<assert.h>//数据不动下标动的左右移void my_memcpy(char* dest, const char* src){ assert(src != nullptr); while (*src != '\0') { *dest = *src; dest++; src++; } *dest = '\0';}int main(){ char ar[30] = { "bcusy" }原创 2021-06-07 23:10:56 · 51 阅读 · 0 评论 -
杨辉三角打印
#include<stdio.h>#define N 11void Yanghui(int n){ int ar[N][N] = {0};//多开一行使得其整体可以满足ar[i][j] = ar[i - 1][j] + ar[i - 1][j - 1] ar[0][0] = 1;//该数不打印 for (int i = 1; i <= n; ++i) { for (int j = 1; j <= i; ++j) { ar[i][j] = ar[i - 1]原创 2021-05-31 12:17:15 · 77 阅读 · 1 评论 -
数组中的数左右移动
第一种方法:先写出单个移动函数然后重复调用void Right_Move(int* br, int n)//右移函数{ assert(br != nullptr); int tmp = br[n - 1]; for (int i = 9; i > 0; --i) { br[i] = br[i - 1]; } br[0] = tmp;}void Left_Move(int* br, int n)//左移函数{ assert(br != nullptr); int tmp原创 2021-05-29 03:22:25 · 214 阅读 · 0 评论 -
产生随机值1-100并且不重复***(用了查表法)
void Init_ar(int* br, int n)//初始化函数{//srand(time(NULL));int cr[101] = {};int i = 0;while (i < n){br[i] = rand() % 100 + 1;if (cr[br[i]] == 0){cr[br[i]] = 1;++i;}}}void manpao_ar(int* br, int n)//冒泡排序方便检查{assert(br != nullptr);for (int原创 2021-05-27 00:20:12 · 74 阅读 · 0 评论 -
const和指针
int i=10;int x=10;int *p=&i;//普通指针int const *p=&i; //封锁指向概念 (*p=1000这样是不允许的)p=&x可以int const p=&i; //修饰指针自身p=1000这样是允许的)p=&x不可以const int * const p=&i;//全封锁...原创 2021-05-20 17:08:22 · 39 阅读 · 0 评论 -
越界检查
int FindValue(int* br, int n, int val){if (br == nullptr || n < 1) return -1;int i = 0;int pos = n-1;while (pos >= 0 && br[pos] != val)//pos>=0当这条件不符合时后面的条件将不会再执行while ( br[pos] != val&&pos >= 0){–pos;}return pos;for原创 2021-05-20 15:39:15 · 191 阅读 · 0 评论 -
输入年月日判断这是一年的第几天
bool Year_int(int year) //判断这一年是闰年或者不是闰年{return (year % 4 == 0 || year % 100!= 0 && year % 400 == 0);}int month_day(int year,int month,int day) //利用数组记录每个月相加的天数{int ar[] = { 0,31,59,90,120原创 2021-04-12 19:29:22 · 788 阅读 · 0 评论 -
冒泡排序
#include<stdio.h>#define N 10int main(){int ar[N] = {1,5,7,9,4,9,4,6,4,8};for (int i=0; i < N-1; ++i)//进行九次比较{for (int j = 0; j < N-i-1; ++j)//每次进行10-i-1次比较{if (ar[j] > ar[j + 1])//前面的数比后面的数大则两数交换{int tem = ar[j];ar[j] = ar[j + 1原创 2021-04-12 19:24:59 · 49 阅读 · 0 评论 -
c语言指针
//指针例题void fun(int* p){int a = 200;p = 100;p = &a;}int main(){int x = 0;int s = &x;fun(s);printf("%d,%d\n", x, *s);return 0;}原创 2021-04-11 16:48:43 · 53 阅读 · 0 评论 -
c语言 语句和循环
1.while(条件){}2.for( ; ; )3.do{}while(条件)4.switch选择语句for循环 e.g打印0-100int main(){for (int i=0; i < 100; ++i){printf("%-5d", i);if ((i+1)% 10 == 0){printf("\n");}}return 0;}do while循环解决小应用菜单问题#include<stdio.h>int main(){i原创 2021-04-11 16:37:57 · 60 阅读 · 0 评论 -
c语言函数
函数可分为自定义函数和库函数自定义函数格式 函数返回类型 函数名 (传递的值)示例求函数面积#include<stdio.h>#include<math.h>double triangleArea(double a, double b, double c){double p = (a + b + c) / 2;return sqrt(p * (p - a) * (p - b) * (p - c));}int main(){double a=0.0,原创 2021-04-11 16:20:20 · 108 阅读 · 0 评论 -
输入三个整数,排序然后输出中间的数
使用vs2019编写代码#include<stdio.h>void swap_int(int *x, int *y) //交换函数 通过交换两个数的指针指向的地址从而达到交换两个数的值{int m = *x;*x = *y;*y = m;}int min_int(int a, int b, int c)//排序函数 通过三次比较进行排序{if (a > b){swap_int(&a, &b);}if (b > c){swap_int(&原创 2021-04-06 20:20:46 · 1933 阅读 · 0 评论