C语言
wanghao_9625
这个作者很懒,什么都没留下…
展开
-
经典数字问题
题目:给出一个整数,要求;1 求他是几位数;2 分别输出每一位数字;3按逆序输出每一位数字。代码如下:#include <stdio.h>//1 求他是几位数;int Count(int n){int tmp=0;if(n==0){tmp=1;}else{for( ;n!=0;tmp++){n /= 10;}}return tmp;}//2...原创 2018-10-14 23:43:31 · 188 阅读 · 0 评论 -
数组越界
数组越界是一个非常麻烦的问题,所以一定要注意,千万不要越界。先介绍一下栈:对于普通变量:例如 int i;栈是:先放的东西放在下面,后放的东西放在上面。先定义的变量地址反而大。对于特殊的:例如:数组 int arr[10];数组为一个整体,为40个字节,自上而下。如图所示;举个例子:函数如下:#include<stdio.h>int main(){int ...原创 2018-10-18 23:30:28 · 992 阅读 · 2 评论 -
父函数调用子函数
先了解一下几个相关概念:野指针:没有访问权限的指针(地址)父函数调用子函数,子函数如果想修改父函数变量的值,则必须传变量的指针并在子函数中解引用 ; 换而言之,子函数的改变要想影响父函数,则父函数需要传指针,子函数需要解引用。几种错误代码如下·:err1:#include <stdio.h>void Swap_err1(int a,int b){int tmp ;t...原创 2018-10-25 21:31:00 · 964 阅读 · 0 评论 -
求进制问题
题目:假设在n进制下,下面的等式成立,567*456=150216,则n的值是()A:9 B:10 C:12 D:18通用的解法:567456=150216可以化为:20nnnn+49nnn+88nn+71n+42=nnnnn+5nnnn+2n*n+6 (1)(1)两边同时%n42%n=6 (2)(1)两边同时除以n,然后在%n(71+42/n)%n=...原创 2018-10-25 21:58:53 · 267 阅读 · 0 评论 -
指针p++的可能性
例如对如下函数:#include<stdio.h>int main (){int arr[10]={1,2,3};int *p=arr;p++;*p=10;printf("%d,%d",arr[0],arr[1]);}指针p++的可能性:(1)加一个字节(2)加一个元格(4个字节)(3)加一个数组首先排除(3),加一个数组,没啥意义。对于(1)如图所示:...原创 2018-10-25 23:13:38 · 199 阅读 · 0 评论 -
一维数组与二维数组的若干比较
首先要理解:在形参中数组已退化成指针;所以对于一维数组来说,数组名==首元素地址;一维数组int*p=arr例如:int arr[5]参数类型arrint*p;(整形指针)arr+1int*p;(整形指针)arr[0]intarr[0]+1int如图所示:二维数组例如:int*p=brr;int brr[3][5];...原创 2018-11-01 22:49:04 · 403 阅读 · 0 评论 -
函数递归的过程
递归:前进(规模缩小),边界条件,返回段递归本质: 自己调用自己例如函数:#include <stdio.h>int Age (int n){int tmp;if(n==1)tmp= 10;elsetmp= Age(n-1)+2;return tmp;}int main(){printf("%d\n", Age(5));return 0;}函数递归过...原创 2018-11-01 23:29:08 · 193 阅读 · 0 评论 -
位运算总结
1、 位运算符号&(按位与,二进制相同的位都为1才为1,否则为0);|(按位或,二进制相同的位上只要有一个为1就为1);^(按位异或,二进制相同的位上不一样为1,一样为0);~(按位取反,不分正负数);<<(按位左移,标准规定在右边补0);>>(按位右移,正数则左边补0,负数算术右移即负数补1)2、 二进制位的变换操作步骤1 确定符号想得到1——&g...原创 2018-11-21 14:04:35 · 118 阅读 · 0 评论