C
西西^^
这个作者很懒,什么都没留下…
展开
-
C----整数的位数及打印
(1)求一个整数的位数 //计数器例如: 12345思路如下:12345——>1234——>123——>12——>1每次丢弃个位;直到 n 等于0重点: 十进制数,要丢弃个位就是整除10,那么如果要将一个十进制数转为十六进制有多少位???由此发现, 十六 进制数整除16; n 进制数整除 n代码如下: int Count( int ...原创 2018-10-15 23:33:15 · 527 阅读 · 0 评论 -
C----浮点数的精度问题
在生活中解决实际问题时,存在误差是在所难免的,当然,浮点类型的数也存在误差,当 遇到float,double和整型数比较大小时,并不仅仅时简单的将两个数放在一起比较了。要考虑到误差。例如 : 求 ax^2+bx+c=0 的实根代码:#include <stdio.h>#include <math.h>#define EPS 0.00000001 ...原创 2018-10-16 13:38:55 · 549 阅读 · 0 评论 -
C----数组越界问题、指针入门
**一、数组的越界问题**阅读下面的程序,你觉得结果会是怎样的呢???int main(){ int i; int arr[10]; for( int i = 0; i&lt;=10; i++) { arr[i] = 0; printf("%d\n",i); } return 0;}运行发现会发生死循环,到底...原创 2018-10-18 13:28:59 · 1059 阅读 · 0 评论 -
C----判断两个整数乘积几进制
对于一般的选择题,我们可以先将两个数的个位相乘,用乘积对每个选项取余;看哪个的余数与给出乘积的个位相等,如果多个选项都与之相等,那么就需要再借助一位例如: 假设在n进制下,下面的等式成立,567*456=150216,n的值是()A 9 B 10 C 12 D18因为是n进制数,所以两个数可以写成(5n^ 2+6n+7)(4n^ 2+5n+6)=2...原创 2018-10-21 21:13:46 · 372 阅读 · 0 评论 -
C----递归简单分析
递归定义:自己调用自己递归就是缩小问题规模,也要考虑到边界条件,还有返回段。分析下面程序递归的过程:int Age(int n)//O(n),O(n){ int tmp; if(n == 1) tmp = 10; else tmp = Age(n-1) + 2; return tmp;}递归过程中入栈过程如下:出栈过程如下所示:这样,递归的整个过程就很清晰了...原创 2018-11-02 19:19:52 · 204 阅读 · 0 评论 -
C----内存区域的分类及对各变量
一、内存区域的分类:栈、堆、全局(静态)变量区、代码段栈:局部变量、函数调用,系统自行管理,不大堆、动态内存,需要程序员自行管理,很大全局(静态)变量区:全局变量、静态变量代码段:函数的代码二、变量的总结...原创 2018-11-17 10:46:49 · 171 阅读 · 0 评论 -
C----位运算
1、C中位运算符有:&、|、^、~<< (标准规定在右边补0)>> ( 正数则左边补0,负数标准没有规定在左边补充 的数字,分为逻辑右移和算术右移,具体由编译器决定,windows平台和gcc采取算术右移即负数补1)2、常见的二进制位的变换操作(1)通过位运算将一个32位二进制数字num逆序思路如下:用M保存逆序后的数字每次都判断最右边(最...原创 2018-11-26 14:55:12 · 117 阅读 · 0 评论 -
C----指针运算
int a[]={1,2,3,4,5};int *p[]={a,a+1,a+2,a+3};int **q=p;*(p[0]+1)+**(q+2)表达式*(p[0]+1)+(q+2)的值?分析:如图所示:int *p[]是一个指针数组,int *p[]={100,104,108,112,116}*(p[0]+1) ——&gt;p[0]是指针,值为100,加一就是104,再进行解引...原创 2018-11-29 11:33:53 · 319 阅读 · 0 评论 -
C----交换两个变量的值
下面是几个交换两个数字的函数,分析以下程序,看结果是否正确???**一、**error#include <stdio.h>void Swap_err1(int a,int b)//error1{int tmp = a; a = b; b = tmp; printf("%d,%d\n",a,b);}int main()//父函数{int a = 10; int ...原创 2018-11-29 11:54:50 · 226 阅读 · 0 评论