C
文章平均质量分 69
灲咲
这个作者很懒,什么都没留下…
展开
-
数组元素移动中内存重叠
一.将整形数组arr中,后面m个数移动到前面,前面n-m个数移动到后面假设arr数组长度为10,其中元素为{1,2,3,4,5,6,7,8,9,10},m=3;先将后面这m个元素保存起来,int *p=(int *)malloc(m*sizeof(int));for(int i=0;i<m;i++){p[i]=arr[n-m+i];}然后从右边往左依次将这n-m个元素向右移动m个格子,(不能...原创 2018-05-14 23:24:03 · 342 阅读 · 0 评论 -
指针运算
#include<stdio.h>int main(){ int a[4]={2,3,2,3}; int *p1=(int *)&a+1; int *p2=(int *)((int)a+1); printf("%x,%x\n",*(p1-1),*p2); return 0;}解析:p1:(int *)&a=a;(int *)&...原创 2018-09-10 15:42:11 · 116 阅读 · 0 评论 -
for,while,do while三种循环比较
一.for循环for(表达式1;表达式2;表达式3){ 语句块1;}表达式1:初始化循环因子,最早被执行,只执行一次表达式2:判断,每次进入循环前都要进行判断,每次都执行表达式3:步进,修改循环因子的值(在执行完语句块1后才执行),每次都执行语句块1:执行0次或以上例如:#include<stdio.h>int main(){ int i; for(i=0,p...原创 2018-03-23 19:00:46 · 14702 阅读 · 2 评论 -
求两个正整数的最大公约数
辗转相除法#include<stdio.h>int GreatestComDiv(int m,int n){ int r; while((r=m%n)!=0) { m=n; n=r; r=m%n; } return n;}int main(){ printf("%d\n",GreatestComDiv(12,15)); printf("%d\n",...原创 2018-03-26 22:20:33 · 248 阅读 · 0 评论 -
斐波那契数列第N项
#include<stdio.h>int FibonacciSequence(int n){ int f1=1; int f2=1; int f3=1; for(int i=3;i<=n;i++) { f3=f1+f2; f1=f2; f2=f3; } return f3;}int main(){ for(int i=1;i<7;i+...原创 2018-03-26 23:55:08 · 250 阅读 · 0 评论 -
推算整数问题
给一个整数,要求:① 求出他是几位数② 分别输出每一位数字③ 按逆序输出各位数字① 解析:假设整数为n,第一步:/10 将最低位丢弃;第二步:重复第一步,直到为0为止,统计总共可以丢弃的次数.例如:1234第一次 1234/10------12第二次 123/10------12第三次 12/10------1第四次 1/10------0#include<stdio.h>int...原创 2018-03-27 11:45:09 · 167 阅读 · 0 评论 -
指针简单用法
指针的大小因操作系统而定,但在同一操作系统下所有指针长度一致32位操作系统指针长度为4个字节64位操作系统指针长度为8个字节1.指针在函数内部使用时①.指针==地址②.获取任何变量的地址都是:&变量名③.*指针变量名,则间接访问到指针所指的变量例如:#include<stdio.h>int main(){ int a=10; int *p=&a; int *...原创 2018-04-07 16:32:48 · 444 阅读 · 0 评论 -
指针的简单运算
一.指针加(减)数字指针+(-) 1,指针向前(向后)移动一个单元格指针加(减)数字,指针需要调整,而调整的权重为:数字*sizeof(指针去掉一个*) int arr[10]; 假设arr首地址为xint *p=&arr; //p==&arr[0] p==x;p++; //p==&a[1] ...原创 2018-04-09 23:42:24 · 213 阅读 · 0 评论 -
const基本用法
const定义常变量后,该变量没有写权限,只有读权限①const用于定义常变量时,要进行初始化例如:const int a=10; //合法而const int a; //非法②数据类型对于const而言是透明的例如:const int a=10; 等价于 int const a=10;const int *p1=&a;等价于int const *p1=&a; 但不等价于...原创 2018-04-09 23:43:38 · 29697 阅读 · 14 评论 -
已知两数和两数之积,推断这几个数为几进制?
例:假设在n进制下,下面的等式成立,567*456=150216,n的值为?A:9B:10C:12D:18解析:由题意得:(5n^2+6n+7)*(4n^2+5n+6)=n^5+5n^4+2n^2+n+6 展开,得 20n^4+49n^3+88n^2+71n+42=n^5+5n^4+2n^2+n+6 ...原创 2018-04-09 23:44:07 · 373 阅读 · 0 评论 -
char * 与char []区别
char *str1="abcde"; //字符串常量char str2[]="abcde"; //字符数组也是字符串执行str1[0]='X'; (1)str2[0]='X'; (2)当执行(1)时程序崩溃,执行(2)时正常主要因为:char *str1="abcde" str1在栈区,"abcde"在常量区cha...原创 2018-04-13 13:31:37 · 283 阅读 · 0 评论 -
二维数组与一维数组在应用中的区别
我们在将一个整型的一维数组名作为函数形参时常常使用 int arr[]或int *arr[],但在将一个整型的二维数组名作为函数形参时使用int brr[][]却错误,这是为什么呢?下面我们将一维和二维数组将以区分:由此我们知道一维数组中arr它是一个指向整型元素的指针,而brr它是一个指向整型的一维数组的指针(数组指针),而不是指向整型元素元素地址的指针,因此我们在使用二维数组作为函数形参时应注...原创 2018-04-19 20:36:24 · 4995 阅读 · 1 评论 -
动态内存创建与释放
使用时应加上头文件 #include<stdlib.h>一.申请动态内存申请动态内存:malloc/calloc/realloc,申请的动态内存分为多少份此函数无法明确,所以应在malloc/calloc/realloc前面加上类型1.mallocmalloc函数的形参为所要申请的动态内存字节数(动态数组总共所占字节数),若申请成功,此函数会将申请的动态连续内存(动态数组)的首地址返回...原创 2018-04-22 15:52:19 · 711 阅读 · 0 评论 -
变量的属性(生命周期、作用域、默认值、内存区域、链接属性)
一.全局变量:定义在函数外部生命周期:从程序运行开始创建,程序退出销毁作用域:从定义该变量开始一直到文件的结束默认值:0内存区域:全局(静态)变量区链接属性:外部(可以在其他文件中引用)例:在max.cpp中定义全局变量int a=10; 若在min.cpp中调用a,使用extern int a就能声明全局变量a,然后就可以使用a二.静态全局变量:定义在函数外部 与全局变量区别:定义时...原创 2018-04-26 22:34:09 · 593 阅读 · 1 评论 -
struct,typedef struct结构体
一.struct 结构体框架 : struct 类型名{ };例:struct Student{char name[20];int age;};结构体自定义数据类型,定义完成后等同于内置类型。1.结构体不能定义一个自身的普通成员,但可以定义一个指向自身的指针。例:struct Student{char name[20];int age;};struct A{struct Stu...原创 2018-05-05 18:38:39 · 677 阅读 · 0 评论 -
已知对齐系数和未知对齐系数结构体如何内存对齐
一.内存对齐:许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址是某个数k(通常要求为4或8的倍数),这就是所谓的内存对齐。二.内存对齐优点:1.平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2.性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了...原创 2018-05-06 16:59:53 · 400 阅读 · 0 评论 -
魔方阵
1、奇数阶幻方 n为奇数 (n=3,5,7,9,11……) (n=2*k+1,k=1,2,3,4,5……) 奇数阶幻方最经典的填法是罗伯特法(也有人称之为楼梯方)。填写方法是这样: 把1放在第一行正中; 按以下规律排列剩下的n*n-1个数: (1)、每一个数放在前一个数的右上一格; (2)、如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列; (3)、如果这个数所要放的格已经超...原创 2018-05-14 23:19:38 · 125 阅读 · 0 评论 -
字符串常量与字符数组在赋值交换中的区别
char str1[]="abcdef";char str2[]="qstr1 和str2 的地址都在栈里,如果要交换str1和str2的值只需char *p=(char *)malloc(siz)原创 2018-05-14 23:22:30 · 1394 阅读 · 1 评论 -
2048小程序
#include<stdio.h>#include<stdlib.h>#include <conio.h>#include<assert.h>#define N 4void Print(int (*arr)[N],int n)//输出{ system("cls"); for(int i=0;i<n;i++) { f...原创 2018-09-10 15:44:42 · 585 阅读 · 0 评论