![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
xiaopang_yan
我是一名小学生
展开
-
地址的偏移量
#include #include #include int main(){ int a[5] = {1,2,3,4,5}; int *ptr = (int *)(&a+1); printf("%d\n%d\n",*(a+1),*(ptr-1)); printf("%x\n%x\n", a, ptr); getchar(); return 0;}运行结果25原创 2015-08-22 17:10:54 · 4045 阅读 · 0 评论 -
链表的插入排序
/*========================== 功能:直接插入排序(由小到大) 返回:指向链表表 头的指针==========================*//* 直接插入排序的基本思想就是假设链表的前面n-1个节点是已经按键值 (就是用它排序的字段,我们取学号num为键值)排好序的,对于节点n在 这个序列中找插入位置,使得n插入后新序列仍然有序。按照这种思想,依次转载 2015-09-04 16:47:53 · 384 阅读 · 0 评论 -
指针与数组
1、指针数组访问int main(){ int str[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int *p; for(p = str; p < str + 10; p++) { printf("%d\n",*p); } return 0;}#include #include int main(){ char *st原创 2015-09-05 11:42:18 · 365 阅读 · 0 评论 -
二维数组的访问方法
int main(){ int a[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; int (*p)[4] = a; int i, j; for(i = 0; i < 3; i++) { for(j = 0; j < 4; j++) { //printf("%d\t",a[i][j]);//方式一 //printf(原创 2015-09-06 09:07:52 · 857 阅读 · 0 评论 -
数组的初始化和元素的删除
以前只是知道,数组元素删除与链表中元素删除相比很麻烦,知道其中的原理,没有真正做过,为了避免眼高手低,特来练练#include #include #define length 10int main(){ int a[length]; int i, j, num, n; n = length; for(i = 0; i < length; i++) { printf("%5原创 2015-09-06 11:14:33 · 305 阅读 · 0 评论 -
c实现面向对象
c语言的结构体里面没有函数,但是c++里面有函数,所以今天实现一个c语言面向对象的程序#include #include #include typedef struct cmd{ char *p; void (*prun)(struct cmd *pcmd);//函数指针 void (*pprint)(struct cmd *pcmd);}newcmd;void run(new原创 2015-09-10 18:03:16 · 229 阅读 · 0 评论 -
从整数数组中选出第二大值
#include #include //找第二大的数void change(int *a, int *b)//交换{ int temp; temp = *a; *a = *b; *b = temp;}int sort(int *a, int n)//选出最大值{ int i; int max = a[0]; for(i = 1; i < n; i++) { if(原创 2015-08-21 16:09:49 · 345 阅读 · 0 评论 -
简单的打印图形
#include #include int main(){ int i, j, k, n; printf("input the n:\n"); scanf("%d", &n); for(i = 0; i < n; i++)//控制行数 { for(j = 0; j <= i; j++)//控制*数 { printf("*"); for(k = 0; k < i原创 2015-09-11 18:24:09 · 359 阅读 · 0 评论 -
实现排序后寻找出现次数最多的数
#include #include using namespace std;#define N 10void generate(int *a, int n){ for(int i = 0; i < n; i++) { a[i] = rand()%3; }}void print(int *a, int n){ for(int i = 0; i < n; i++) {原创 2015-09-28 20:52:42 · 462 阅读 · 0 评论 -
优先级与结合性
优先级:同一个操作数,优先执行。例如:1+2-3+8*9,先执行8*9结合性:优先级相等的情况下,计算的方向,例如:int a, b, c; a=b=c=10;从右向左#include int main(){ int a[5] = {1, 3, 5, 7, 9}; int *p = a; printf("%d\n", *p++);//1, ++的优先级大于* return原创 2015-09-13 18:20:35 · 892 阅读 · 0 评论 -
可变参数
#include #include int add(int n,...){ va_list v;//保存可以边长的参数列表 va_start(v, n);//从n之后的所有参数保存之 int i; int sum = 0; for(i = 0; i < n; i++) { int data = va_arg(v, int); printf("%d\n",data);原创 2015-09-14 20:10:08 · 223 阅读 · 0 评论 -
sizeof与strlen
1、sizeof用来返回类型以及静态分配的对象、结构或数组所占的空间,其值在编译时即计算好了。strlen返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL2、sizeof是运算符,strlen是函数。sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧3、原创 2015-09-15 08:35:59 · 196 阅读 · 0 评论 -
关于字符串常考函数
1、strcpy原型声明:char *strcpy(char* dest, const char *src);头文件:#include string.h> 和 #include 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回原创 2015-09-14 21:41:48 · 346 阅读 · 0 评论 -
new 和 delete
1、delete p 用于删除数组利用的空间#include #include using namespace std;int main(){ int *p = new int[10]; for(int i = 0; i < 10; i++) { p[i] = i; cout<<p[i]<<" "; } delete p;//删除数组利用的空间 //也可用d原创 2015-09-17 19:27:13 · 265 阅读 · 0 评论 -
关于sizeof
请写出下列程序的运行结果 int main(int argc, char* argv[]) { char string[]=" 1235678"; char *p = string; void *p1; int n=318; int size; size = sizeof(string); printf( "%d\n", size); size = size原创 2015-08-13 11:16:05 · 341 阅读 · 0 评论 -
vs2008调试遇到的问题
很长时间没有调程序,今天遇到几个问题,顺便记下来,以便以后查找问题1:调试开始后,发现没有watch窗口办法:调试开始后,在调试-》窗口上查找。问题2:用F10可以单步调试,怎样跳出循环办法:在循环外边再另外设置一个断点,执行ctrl+F10可跳到该断点处,则就跳出了循环。问题3:到某一函数时,想看看函数内部怎样执行,用F10实现不了办法:调试到该函数时,执行F11可以进入原创 2016-04-17 14:34:03 · 357 阅读 · 0 评论 -
条件运算符的使用
条件运算符用法:条件?候选1:候选2例如//输入一个字符,如果是大写,变为小写输出,否则直接输出#include #include int main(){ char ch; puts("intput a character:"); scanf("%c", &ch); /*if(ch >= 'A' && ch <='Z') { ch = ch - 'A' + '原创 2016-04-17 15:27:05 · 643 阅读 · 0 评论 -
格式控制字符串
输入与输出共有的:%d 用来输入、出十进制数据。%ld 用来输入长整型数据。%hd 用来输入短整型整数。%c用来输入单个字符。%s 用来输入字符串。%f用来输入实数%lf 用来输入double 型实数。输出增加项:%u 用来输出unsigned 型数据%m.nf 用来指定输出实数数据的形式,m表示列数,n表示小数点位数%m.ne 用来输原创 2016-04-17 19:26:12 · 1087 阅读 · 0 评论 -
const
1、const 定义常量,只能在初始化时赋值#include #include int main(){ int num = 10;//变量 num = 3; printf("%d\n",num); return 0;}输出3 ,num是变量,可以赋值const int data = 10;//常量 printf("%d\n",data); retu原创 2015-09-09 11:02:44 · 229 阅读 · 0 评论 -
文件读取
1、获得文件大小int getfilesize(char *path){ FILE *pf;//文件指针 pf = fopen(path, "r"); if(pf == NULL) { return -1; } else { fseek(pf, 0, SEEK_END);//文件指针移动到末尾 int num = ftell(pf);//用于得到文件位置指针当前位置原创 2015-09-08 20:59:13 · 258 阅读 · 0 评论 -
链表的增删改查
1、增加(尾插)void backnode(node** ppnode, int num, typedata data )//尾插{ node *pnewnode = (node *)malloc(sizeof(node)); pnewnode->num = num;//赋值 pnewnode->data = data; pnewnode->next = NULL; if(*ppnod原创 2015-09-04 08:57:53 · 311 阅读 · 0 评论 -
关于内存的面试题
1、#include #include #include void get(char *s){ s = (char *)malloc(100);}int main(){ char *ptr = NULL; get(ptr); strcpy(ptr, "hello"); printf("%s", ptr); getchar(); return 0;}系统崩溃,原创 2015-08-23 17:07:15 · 244 阅读 · 0 评论 -
c语言的内存分配
BSS段:(bss segment)通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。数据段:数据段(data segment)通常是指用来存放程序中已初始化的全区变量和静态变量的一块内存区域。数据段属于静态内存分配。代码段:代码段(code segment/text segment原创 2015-08-23 17:52:54 · 202 阅读 · 0 评论 -
字符串常量与变量
检查下列程序是否有错误#include #include int main(){ char *s = "AAAA"; printf("%s\n", s); s[0] = 'B'; printf("%s\n", s); getchar(); return 0;}运行后 sort.exe 中的 0x012235e3 处未处理的异常: 0xC0000005: 写入位置原创 2015-08-22 16:03:27 · 565 阅读 · 0 评论 -
关于sizeof 2
#include #include int main(){ printf("%d\n",sizeof(4));//整型 4 printf("%d\n",sizeof(4.0));//double型 8 printf("%d\n",sizeof(4.0f));//浮点型 4 printf("%d\n",sizeof(4u));//无符号整型 4 getchar(); return原创 2015-08-17 11:17:32 · 230 阅读 · 0 评论 -
随机发生器
#include #include #include //随机数发生器int main(){ time_t time1; srand((unsigned int )time(&time1)); int num = rand()%100; printf("%d\n",num); getchar(); getchar(); return 0;}一次产生一个0到100的整数原创 2015-08-17 10:48:03 · 408 阅读 · 0 评论 -
判断数组是否递增
中软面试题:判断数组是否递增。1、 用循环#include #include int main(){ int a[10] = {0,1,2,3,4,5,6,7,8,9}; int i; int flag = 1;//假设递增 for(i = 0; i < 9; i++) { if(a[i] > a[i+1])//递减 { flag = 0; b原创 2015-09-01 17:23:57 · 4614 阅读 · 0 评论 -
printf() 不能进行数据类型转换
#include #include int main(){ int num1 = 1/2;// 0 float num2 = 1/2.0;//0.5整数与实数的结果是实数 float num3 = 3/2.0;//1.5 float num4 = 3/2;//1 整数与整数的结果是整数 printf("%d, %f\n",num1,num1); printf("%f, %d\n"原创 2015-08-17 15:21:17 · 2149 阅读 · 1 评论 -
打印乘法表
#include #include //打印乘法表int main(){ int i,j; int k = 0; printf("\t"); for(i = 1; i <= 9; i++) { printf("%d\t",i); } printf("\n------------------------------------------------------------原创 2015-08-18 10:11:47 · 354 阅读 · 0 评论 -
316分为两个数,一个能被13整除,一个能被11整除
#include #include //316分为两个数,一个能被13整除,一个能被11整除int main(){ int i=0; for(; ; i++) { if((316 - 13*i)%11==0) break; } printf("%d,%d",13*i,(316-13*i)); getchar(); getchar(); return 0;}原创 2015-08-18 10:17:00 · 1275 阅读 · 0 评论 -
continue & break
#include #include //continue & breakint main(){ int i = 0; for(; i < 100; i++) { if(i%3==0) { printf("%d\t",i); break; } } getchar(); getchar(); return 0;}输出:0break 结束循环原创 2015-08-18 10:29:43 · 188 阅读 · 0 评论 -
多进制打印
#include #include int main(){ int a; scanf("%d",&a); printf("%d,%u,%o,%x\n",a,a,a,a); char str[32]; _itoa(a,str,2); printf("%s\n",str); getchar(); getchar(); return 0;}原创 2015-08-17 16:10:50 · 250 阅读 · 0 评论 -
printf 打印全局和局部变量
include #include int a = 10;int main(){ printf("%d\n",a);// 10 程序从上往下执行,打印全局变量 int a = 9; printf("%d\n",a);//9 同一区域的变量覆盖全局变量 { printf("%d\n",a);//9 同一小区域没有,在main区域中寻找 int a = 8; printf("原创 2015-08-17 20:51:29 · 748 阅读 · 0 评论 -
for到底运行了多少次
#include #include int main(){ int i,j,k=0; for(i = 0,j = 0; j <150 ||i <100 ; i++, j+=2) { ++k; } printf("%d",k); getchar(); getchar(); return 0;}输出:100#include #include int main(){原创 2015-08-18 08:55:42 · 268 阅读 · 0 评论 -
把整数逆序
题目:把整数逆序,例如12345 转54321#include #include //把整数逆序 例如把12345 变成54321int main(){ int num; printf("intput:\n"); scanf("%d",&num); int lastres = 0; int wei; while(num) { lastres *= 10;原创 2015-09-01 19:38:30 · 579 阅读 · 0 评论 -
排序
1、冒泡排序#include #include #include #include #define N 10void generate(int *a,int n){ int i; for(i = 0; i < n; i++) { a[i] = rand()%100+100; }}void print(int *a, int n){原创 2015-08-18 16:35:17 · 146 阅读 · 0 评论 -
腾讯面试题:走台阶
题目:有50个台阶,一次只能走一步或是两步,问走完这五十个台阶,有多少种可能的走法?#include #include double go(int n){ if(n == 1) { return 1.0; } else if(n == 2) { return 2.0; } else { return go(n-1)+go(n-2); }}int main()原创 2015-09-01 16:25:03 · 344 阅读 · 0 评论 -
递归的顺序和逆序
实现十进制到二进制转化#include #include void int2two(int n){ if(n) { int l; l = n % 2; n = n/2; int2two(n); printf("%d",l); }}int main(){ int n = 10; int2two(n); return 0;}输出:1010print原创 2015-09-01 20:19:00 · 518 阅读 · 0 评论 -
c语言实现读取txt文件内容到结构体数组中
#include #include #define N 10typedef struct { char work_ID[5]; char name[20]; char phone_nu[12];}student;int main(int argc, char *argv[]){ student st[N];原创 2016-07-19 15:40:38 · 27412 阅读 · 3 评论