c语言enum用法定义HINT32_T,C语言基础_上课代码

2010年

=================================================================================

0325

1、类和函数名以大写字母开头,按照匈牙利命名法命名

2、变量名以小写字母开头,按照匈牙利命名法命名

3、有从属关系的语句,遵守缩进规则,即一个tab,占用4格空格位

4、花括号本身不要缩进

5、左花括号右边置空,不要再跟语句

6、右花括号单独列在一行

Ctrl+Tab 子窗口之间进行切换

Alt+Tab 在应用程序之间进行切换

Ctrl+Home 定位到文档头

Ctrl+End 定位到文档尾

Home 定位到行首

End 定位到行尾

PageUp 向上翻页

PageDown 向下翻页

Ctrl+g num 定位到第num行

Ctrl+箭头 单词间跳动

Ctrl+Shift+箭头 选中一个单词

Shift+Home 选中到行首

Shift+End 选中到行尾

??????????????? 存盘

Ctrl+f 查找

Ctrl+h 替换

Tab 缩进

Shift+Tab 向左缩进

=================================================================================

0326

a

//理解编译链接原理

#include "stdafx.h"

void MyPrintf(char *a);

int main(int argc, char* argv[])

{

MyPrintf("zhang");

return 0;

}

b

// 03026b.cpp : Defines the entry point for the console application.

//编译调试与重复包涵

#include "stdafx.h"

#include "0306b.h"

#include "0306b.h"

#include "0306b.h"

int main(int argc, char* argv[])

{

//printf("Hello World!\n");

int num,x,y;

int i=0;

scanf("%d",&i);

printf("%d",i);

printf("输入两个数:");

scanf("%d,%d",&x,&y);

num=add(x,y);

printf("%d",num);

return 0;

}

int add(int x,int y)

{

return x+y;

}

// 03026b.h

int add(int x,int y);

c

#include

//格式化输出

#define HH 111

int main(int argv,char *args[])

{

int i=123;

float f=4.123f;

double d=3.14;

char c='a';

printf("%d\t",i);

printf("%f\t",f);

printf("%d",d);

printf("%0.2f\t",f);

printf("%8f\t",f);

printf("%x\t",c);

printf("%u\n",c);

#ifdef __DEBUG__

printf("DEBUG is on\t");

#else

printf("DEBUG is off\t");

#endif

printf("%d\t",HH);

printf("%s\t",__FILE__);

// printf("%s\t",__cplusplus);

return 0;

}

d

// 03026d.cpp : Defines the entry point for the console application.

//查看内存存储原理

#include "stdafx.h"

int main(int argc, char* argv[])

{

int i;

char c;

/* i=0x80;

c=i;

printf("%x\n",c);

*/

c=0x40;

i=c;

i=0x40;

printf("%x\n",i);

return 0;

}

//fun.c

#include "stdio.h"

int fun()

{

return 0;

}

//fun.h

#ifndef _XX_

#define _XX_

int fun();

#endif

=================================================================================

0330

a

// 0330a.cpp : Defines the entry point for the console application.

//查看内存和彷汇编代码

#include "stdafx.h"

int main(int argc, char* argv[])

{

int i;

int *pi;

pi=&i;

i=1;

*pi=2;

return 0;

}

b

// 0330b.cpp : Defines the entry point for the console application.

//指针变量强制存放整行变量

#include "stdafx.h"

int main(int argc, char* argv[])

{

int i=0xaabbccdd;

int j;

char *pch;

pch=(char*)i;

j=(int)pch;

printf("j:%x",j);

return 0;

}

c

// 0330c.cpp : Defines the entry point for the console application.

//整形指针变量指向字符变量

#include "stdafx.h"

int main(int argc, char* argv[])

{

char ch;

int *pi;

char*pch;

pi=(int*)&ch;

pch=(char*)pi;

*pch='a';

return 0;

}

d

// 0330d.cpp : Defines the entry point for the console application.

//内存访问越界问题(整形指针变量访问字符变量)

//系统不报错并不代表没有错误

#include "stdafx.h"

int main(int argc, char* argv[])

{

char ch;

int *pi;

pi=(int*)&ch;

*pi='a';//整形变量的其它位被0填充 61 00 00 00 C0 a....

return 0;

}

f

// 0330f.cpp : Defines the entry point for the console application.

//void指针与特定内存指针的区别

// 可以指向任意类型变量

#include "stdafx.h"

int main(int argc, char* argv[])

{

char ch='a';

void *p=&ch;

//*p='b';//不能表示内存单元,作用于中间结果

char *pch;

pch=(char*)p;

*pch='b';

return 0;

}

g

// 0330g.cpp : Defines the entry point for the console application.

//空指针NULL

#include "stdafx.h"

int main(int argc, char* argv[])

{

int *pi;

//*pi=3;//未初始化指针报错

int *pj=NULL;

//*pj=5;//空指针不允许访问

int *pk=NULL;

pk=(int*)0x23435588; //危险指定内存地址

*pk=123;

return 0;

}

h

// 0330h.cpp : Defines the entry point for the console application.

//指针的传递

#include "stdafx.h"

void Func(int *pi)

{

//pi=NULL;

int j=7;

pi=&j;

}

int main(int argc, char* argv[])

{

int i;

int *pi=&i;

/*printf("%p\n",pi);

Func(pi);

printf("%p\n",pi);*/

printf("%p\n",pi);

Func(pi);

printf("%p\n",pi);

return 0;

}

i

// 0330i.cpp : Defines the entry point for the console application.

//指针的移动

#include "stdafx.h"

int main(int argc, char* argv[])

{

int n;

/* int *pi1=(int*)0x0012ff60;

int *pi2=(int*)0x0012ff70;

n=pi2-pi1;

printf("%d",n);

*/

char *pi1=(char*)0x0012ff60;

char*pi2=(char*)0x0012ff70;

n=pi2-pi1;

printf("%d",n);

char *p1=(char*)32;

char*p2=(char*)23;

n=p2-p1;

printf("%d",n);

/*

void*pi1=(void*)0x0012ff60;

void *pi2=(void*)0x0012ff70;

n=pi2-pi1;

printf("%d",n);

*/

return 0;

}

o

// 0330o.cpp : Defines the entry point for the console application.

//数组编译时确定大小

#include "stdafx.h"

int main(int argc, char* argv[])

{

//int array[];不允许

const int iCount = 4;

int *pi =(int*)&iCount;

*pi=5;

printf("%d",*pi);

int array[iCount]={0};//编译时已经确定为4 array数组

return 0;

}

p

// p.cpp : Defines the entry point for the console application.

//数组转换和使用

#include "stdafx.h"

void Func(int array[])

{

//数组作为型参实际是当指针使用

int i=sizeof(array);//4

*array++=60;

}

int main(int argc, char* argv[])

{

int array[4] = {0};//数组初始化为0

/*

int *pi;

pi = array;

*(pi+2) = 2;

pi[3] = 3;//指针当数组使用

*array = 9;//数组当指针使用

*(array+2) = 10;//移动

sizeof(array);//???

sizeof(pi);//??

*pi++=50;

//*array++=60; 错误

*/

Func(array);

return 0;

}

x

// 0330x.cpp : Defines the entry point for the console application.

//实现aabbccdd--ddccbbaa倒序

#include "stdafx.h"

/*

int ByteReverse(int num)//自己倒序

{

char *res=(char*)#

char temp;

temp=*res;

*res=*(res+3);

*(res+3)=temp;

temp=*(res+1);

*(res+1)=*(res+2);

*(res+2)=temp;

return num;

}

*/

//借助中间变量

int ByteReverse(int num)

{

int ret;

char *rsu=(char*)#

char *set=(char*)&ret;

for(int i=0;i<4;i++)

//*(set+i)=*(rsu+3-i);

set[i] = rsu[3-i];//字符数组当指针

return ret;

}

int main(int argc, char* argv[])

{

int j,k;

scanf("%x",&j);

k=ByteReverse(j);

printf("%x\n",k);

return 0;

}

=================================================================================

0329

a

// 0329a.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

int main(int argc, char* argv[])

{

/*unsigned int i=1;

int j=-5;

//if(i&&j)

if(i+j>0)

printf("ok");//is ok

else

printf("no");*/

/*int i=0;

if(i=1)

printf("ok");

else

printf("no");*/

/*int i=5;

i|=1<<15;//32位第15位置位1

i&=~(1<<19);//32位19位置为0

printf("%x",i);*/

return 0;

}

b

// 0329b.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

int main(int argc, char* argv[])

{

int sum=0;

int i=2;

for(;i<=100;i+=2)

{

sum+=i;

}

printf("%d\n",sum);

while(i<=100)

{

sum+=i;

i+=2;

}

printf("%d\n",sum);

do{

sum+=i;

i+=2;

}while(i<=100);

printf("%d\n",sum);

return 0;

}

c

// 03029c.cpp : Defines the entry point for the console application.

//递归函数

#include "stdafx.h"

int add(int i)

{

if(i<100)

return i+add(i+2);

else

return i;

}

int add2(int i)

{

if(i>2)

return i+add2(i-2);

else

return i;

}

int main(int argc, char* argv[])

{

int sum=0;

sum=add(2);

printf("%d\n",sum);

int sum2=0;

sum2=add2(100);

printf("%d\n",sum2);

return 0;

}

d

// 03029d.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

int func(int i)

{

if(i<100)

return i*i+func(i+2);

else

return i*i;

}

int func2(int i)

{

if(i>2)

return i*i+func2(i-2);

else

return i*i;

}

int main(int argc, char* argv[])

{

int sum=0;

sum=func(2);

printf("%d\n",sum);

int sum2=0;

sum2=func2(100);

printf("%d\n",sum2);

return 0;

}

e

// 03029e.cpp : Defines the entry point for the console application.

//可变参数传值

#include "stdafx.h"

#include

void Myprint(int i,...)

{

int j;

char *str=NULL;

va_list ls;//定义

va_start(ls,i);//初始化

j=va_arg(ls,int);//取值

j=va_arg(ls,int);

j=va_arg(ls,int);

str=va_arg(ls,char*);

str=va_arg(ls,char*);

va_end(ls);//结束

printf("%d",j);

}

/*

void Myprint(char fmt,...)

{

int j;

char *str=NULL;

va_list ls;

va_start(ls,fmt);

while(fmt里面还有格式化字符)

{

if(格式化字符是%d)

j=va_arg(ls,int);

else if(格式化字符是%c)

j=va_arg(ls,int);

else if(格式化是%s)

{

str=va_arg(ls,char*);

}

}

va_end(ls);

}*/

int main(int argc, char* argv[])

{

Myprint(1,2,3,"abc","hello");

return 0;

}

f

// 0329f.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include

int Min(int i,...)

{

int j,arg,min;

va_list ls;//定义

va_start(ls,i);//初始化

min=va_arg(ls,int);

//printf("%d\n",min);

for(j=1;j

{

arg=va_arg(ls,int);

if(arg

min=arg;

}

va_end(ls);

return min;

}

int main(int argc, char* argv[])

{

int iMin;

iMin=Min(5,33,45,16,60,9);

printf("%d\n",iMin);

return 0;

}

=================================================================================

0331

a

// 0331a.cpp : Defines the entry point for the console application.

//4p

#include "stdafx.h"

#include

void Func()

{

/*

char *pch=(char *)malloc(1);

int *pi= (int *)malloc(4);

int *pj= (int *)malloc(40*1024*1024);

*/

char *pch1=NULL;

free(pch1);

//free(pch1);//不能重复释放

char *pch2;

free(pch2);//不能释放站空间 call tack 查看

/*char ch;

char *pch3=&ch;

free(pch3);

*/

char *pch4=(char*)malloc(0);

//char *pch4=(char*)malloc(size);

free(pch4);

char *pch=(char *)malloc(1);

*pch='a';

*pch=0xa;

printf("%x/n",*pch);

free(pch);

if(pch==NULL){

puts("free success");

}else{

puts("free error");

}

}

int main(int argc, char* argv[])

{

Func();

return 0;

}

b

// 0331b.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include

void Func()

{

int i,iSize=3;

char *pch=(char*)malloc(iSize);

for(i=0;i

pch[i]='a'+i;

//*pch++'a'+i;//不能释放

*(pch+0)='a';

*(pch+1)='b';

*(pch+2)='c';

pch[0]='a';

pch[1]='b';

pch[2]='c';

free(pch);

}

int main(int argc, char* argv[])

{

Func();

return 0;

}

c

// 0331c.cpp : Defines the entry point for the console application.

//a7

#include "stdafx.h"

#include

#include

void Func()

{

const int COUNT=8;

int i;

char *pch=(char*)malloc(COUNT);//int...COUNT*4

char *pch2=(char*)malloc(COUNT);

for(i=0;i

pch[i]='a'+i;

memset(pch,0,COUNT);//...COUNT*4 初始化元素位0

memcpy(pch2,pch,COUNT);//把pch里的值拷贝到pch2

free(pch2);

free(pch);

}

int main(int argc, char* argv[])

{

Func();

return 0;

}

d

// 0331d.cpp : Defines the entry point for the console application.

//扩充分配大小

//pch,8查看全部数组(pch[0,pch[1]...])

#include "stdafx.h"

#include

void Func()

{

int i;

char *pch=(char*)malloc(3);

for(i=0;i<3;i++)

pch[i]='a'+i;

pch=(char*)realloc(pch,8);//扩充函数

for(i=3;i<8;i++)

pch[i]='a'+i;

free(pch);

}

int main(int argc, char* argv[])

{

Func();

return 0;

}

e

// 0331e.cpp : Defines the entry point for the console application.

//函数外部分配,内部使用

#include "stdafx.h"

#include

void Func(char *pch,int iCount)

{

int i;

for(i=0;i

pch[i]='a'+i;

}

int main(int argc, char* argv[])

{

char *pch=(char*)malloc(8);

Func(pch,8);

free(pch);

return 0;

}

f

// 0331f.cpp : Defines the entry point for the console application.

//函数内部分配,外部使用

#include "stdafx.h"

#include

void Func(char *pch)

{

pch=(char*)malloc(8);//内存泄露

}

int main(int argc, char* argv[])

{

char *pch=NULL;

int i;

Func(pch);

for(i=0;i<8;i++)

pch[i]='a'+i;// 报错

free(pch);

return 0;

}

g

// 0331g.cpp : Defines the entry point for the console application.

//函数分配空间,返回指针

#include "stdafx.h"

#include

char *Func()

{

char *pch=(char*)malloc(8);

return pch;

}

int main(int argc, char* argv[])

{

char *pch=NULL;

int i;

pch=Func();

for(i=0;i<8;i++)

pch[i]='a'+i;

free(pch);

return 0;

}

j

// 0331j.cpp : Defines the entry point for the console application.

//二级指针

#include "stdafx.h"

#include

int main(int argc, char* argv[])

{

/*

char **ppch;

ppch=(char**)malloc(4);

*ppch=(char*)malloc(1);

**ppch='a';

free(*ppch);

free(ppch);

*/

char **ppch;

char *array[4];//数组指针

ppch=array;

//array[1]=(char*)malloc(1);

//*array[1]='a';

//*(ppch+1)=(char*)malloc(1);

ppch[1]=(char*)malloc(1);

*ppch[1]='b';

free(*(ppch+1));

//free(ppch[1]);

//free(ppch);

//free(ppch+1);

//free(*ppch[1]);

return 0;

}

k

#include "stdafx.h"

#include

int main(int argc, char* argv[])

{

return 0;

}

l

// 0331l.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

void Func(char **ppch)

{

//@ *ppch=NULL;//错误试图访问不存在的值

// ppch=NULL;

//ppch=NULL;

*ppch=NULL;

}

int main(int argc, char* argv[])

{

//@char **ch;

// Func(ch);

char *pch;

Func(&pch);

return 0;

}

m

// 0331m.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include

#include

void Func(char **ppch)

{

*ppch=(char*)malloc(1);//pch=(char*)malloc(1);

**ppch='a';

}

int main(int argc, char* argv[])

{

char *pch;

Func(&pch);

printf("%c\n",*pch);

free(pch);

return 0;

}

x

// 0331X.cpp : Defines the entry point for the console application.

//从键盘输入整数存放在字符数组里,打印出来(个数,数值)

#include "stdafx.h"

#include

int main(int argc, char* argv[])

{

int i,n;

printf("输入整数个数: ");

scanf("%d",&n);

int *pi=(int*)malloc(4*n);

printf("输入数值: ");

for(i=0;i

scanf("%d",&pi[i]);

printf("打印输入的数值: ");

for(i=0;i

printf("%d ",pi[i]);

return 0;

}

y

// 0331y.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include

int main(int argc, char* argv[])

{

int **pi;

int *ary[2];

pi=ary;

int array1[]={1,2};

int array2[]={3,4};

*pi=(int*)malloc(8);

*pi=array1;

*(pi+1)=array2;

return 0;

}

=================================================================================

0401

a

b

c

// 0401c.cpp : Defines the entry point for the console application.

//函数指针

#include "stdafx.h"

typedef void *(*FN)(int);//定义数据类型

void Func1()

{

puts("Func1");

}

void *Func2(int i)

{

puts("Func2");

return NULL;

}

void *Func3(int i)

{

puts("Func3");

return NULL;

}

int main(int argc, char* argv[])

{

void *p=Func1;//void *p=Func1; 函数指针取地址

Func1();

//不带参函数指针

void (*pfn)()=Func1;//返回void 无参数

Func1();

pfn();//直接跳转到pfn指向的地址

//带参函数指针

void *(*pfn2)(int)=Func2;//返回为void* 带参数 的函数指针

Func2(2);

pfn2(4);

//定义数据类型,实例化指针

FN pfn3=Func2;//实例化指针

Func2(2);

pfn3(5);

//函数指针的数组

FN pfn4[2];

pfn4[0]=Func2;

pfn4[1]=Func3;

pfn4[0](5);

pfn4[1](6);

return 0;

}

d

e

// 0401e.cpp : Defines the entry point for the console application.

//字符串:以0结尾的字符数组 (0 是必须的,但数组大小可以为0)

#include "stdafx.h"

int main(int argc, char* argv[])

{

char szBuf1[]="he\nllo"; //不可打印字符的字符串 \n

char *pszBuf2="hello"; //指向字符串数组地址

char *pszBuf3=szBuf1;

char szBuf4[8]={0};

char szBuf5[8]="";

char *pszBuf6="";

char szBuf7[8]={'a','b','c',0};

char szBuf8[8]={'a','b','c',0,'d','e','f',0};

int i=0x636261;

char *pszBuf9=(char*)&i;

char *pszBuf10=szBuf1+2;

puts(pszBuf9);

char *psaBuf11=(char *)malloc(4);

psaBuf11="abc";//不会释放

puts(pszBuf11);

// char szBuf11[8];

// char szBuf12[5]="hello";

return 0;

}

f

// 0401f.cpp : Defines the entry point for the console application.

//strlen

#include "stdafx.h"

#include

#include

int main(int argc, char* argv[])

{

int size;

char str1[] = "hello world";

char str2[] = "";

size = strlen(str1);

printf("%d\n",size);

strcpy(str2,str1);

puts(str2);

int i = strcmp(str1,str2);//比较字符串大小

printf("\n%d\n",i);

/* char *ch = strchr(str1,'e');

int result = ch - str1 + 1;

if(ch!=NULL)

printf("%d\n",result);

else

puts("no");

char *pch = strstr(str1,"world");

int ret = ch - str1 + 1;

if(ch!=NULL)

printf("%d\n",ret);

else

puts("no");

*/

strcat( str1, " haha " );

printf( "%s\n", str1 );

char *s = "9885 aa";

int k;

k = atoi(s);

printf( "string: %s\t\tinteger: %d\n", s, k );

char buffer[] = "buffer";

char *newstring;

printf( "%s\n", buffer );

newstring = _strdup( buffer );

printf( "%s\n", newstring );

free( newstring );

return 0;

}

x

// testX.cpp : Defines the entry point for the console application.

//模仿strlen strcmp

#include "stdafx.h"

size_t Mystrlen(char *pzBuf)

{

size_t len=0;

while(*pzBuf++)

len++;

return len;

}

char* Mystrcpy(char *strDst,const char* strRes)

{

char *pszRet=strDst;

while(*strDst++=*strRes++)

;

return pszRet;

}

int main(int argc, char* argv[])

{

char str1[]="hello";

int num=Mystrlen(str1);

printf("%d\n",num);

char str[]="";

Mystrcpy(str,str1);

puts(str);

return 0;

}

=================================================================================

0402

a

// 0402a.cpp : Defines the entry point for the console application.

//strcmp 按英文字典,逐个字母比较,区分大小写

// strchr atoi

#include "stdafx.h"

#include

int main(int argc, char* argv[])

{

char szBuf1[]="hello";

char szBuf2[]="Hello";

int n=strcmp(szBuf1,szBuf2);

printf("%d\n",n);

char *pszBuf;

pszBuf=strchr(szBuf1,'e');

if(pszBuf!=NULL)

printf("e是hello里的第%d个字符\n",pszBuf-szBuf1);

else

printf("is no char 1");

int i=1234;

char szNum[32];

sprintf(szNum,"%d",i);//数字转换为字符串

return 0;

}

b

// 0402b.cpp : Defines the entry point for the console application.

//字符串返回

#include "stdafx.h"

#include

void Func(char *pszBuf)

{

pszBuf="hello";//1 只是拷贝一份地址

/*

pszBuf=(char*)malloc(8);

strcpy(pszBuf,"hello");

*/

}

int main(int argc, char* argv[])

{

char *pszBuf;

Func(pszBuf);

puts(pszBuf);

return 0;

}

c

// 0402c.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include

#include

void Func(char **pszBuf)

{

*pszBuf=(char*)malloc(8);

strcpy(*pszBuf,"hello");

}

int main(int argc, char* argv[])

{

char *pszBuf;

Func(&pszBuf);

puts(pszBuf);

free(pszBuf);

return 0;

}

d

// 0403d.cpp : Defines the entry point for the console application.

//p05字符串作为返回值

#include "stdafx.h"

char *Func()

{

// char szBuf[]="hello";//返回时局部变量释放

static char szBuf[8];

scanf("%7s",szBuf);//建议键盘输入字符限制个数

return szBuf;

}

int main(int argc, char* argv[])

{

char *pszBuf=Func();

printf("%s\n",pszBuf);

return 0;

}

e

// 0402e.cpp : Defines the entry point for the console application.

//字符串作为返回值

#include "stdafx.h"

#include

#include

char *Func()

{

/*char szBuf[8];

char *pszBuf;

scanf("%7s",szBuf);

pszBuf=(char*)malloc(8);

return strcpy(pszBuf,szBuf);

*/

char szBuf[8];

scanf("%7s",szBuf);

return strdup(szBuf);//...

}

int main(int argc, char* argv[])

{

char *pszBuf=Func();

printf("%s\n",pszBuf);

free(pszBuf);

return 0;

}

f

// 0402f.cpp : Defines the entry point for the console application.

//strtokj分隔符取字符串

#include "stdafx.h"

#include

int main(int argc, char* argv[])

{

char szBuf[128];

char *pszWord;

fgets(szBuf,sizeof(szBuf),stdin);

pszWord=strtok(szBuf," ,\n");//可以是分隔符集合

while(pszWord){

puts(pszWord);

pszWord=strtok(NULL," ");

}

return 0;

}

x

// 0401c.cpp : Defines the entry point for the console application.

//从键盘上输入字符串,创建一个数组指针

//指向单个字符串,用函数获取输出

#include "stdafx.h"

#include

#include

void Func(int iWordCount,char *pszWords[])

{

int i;

for(i=0; i

printf("word %d:%s\n",i,pszWords[i]);

}

int main()

{

char szBuf[128];

char *pszWord;

char **szWords =NULL;

int i=0;

fgets(szBuf,sizeof(szBuf),stdin);

pszWord=strtok(szBuf," \n,");

while(pszWord){

szWords=(char**)realloc(szWords,(i+1)*4);

szWords[i++]=pszWord;

pszWord=strtok(NULL," \n,");

}

Func(i,szWords);

free(szWords);

return 0;

}

y

// 0401c.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include

#include

char *GetWord(char **ppszSrc,const char *pszDelim)

{

char *pszRet;

char *pszHead,*pszTail;

pszHead=*ppszSrc;

while(*pszHead && strchr(pszDelim,*pszHead))

pszHead++;

if(*pszHead == '\0')

return NULL;

pszTail=pszHead+1;

while(*pszTail && !strchr(pszDelim,*pszTail))

pszTail++;

*ppszSrc=pszTail;

pszRet=(char *)malloc(pszTail-pszHead+1);

memcpy(pszRet,pszHead,pszTail-pszHead);

pszRet[pszTail-pszHead]='\0';

return pszRet;

}

char **Split(const char *pszSrc,const char *pszDelim)

{

char **ppszWords=NULL;

char *pszWord;

int i=1;

pszWord=GetWord((char **)&pszSrc,pszDelim);

ppszWords=(char **)malloc(4);

while(pszWord){

ppszWords=(char **)realloc(ppszWords,++i*4);

ppszWords[i-2]=pszWord;

pszWord=GetWord((char **)&pszSrc,pszDelim);

}

ppszWords[i-1]=NULL;

return ppszWords;

}

void PrintWords(char *pszWords[])

{

int i=0;

while(pszWords[i]){

printf("word %d:%s\n",i,pszWords[i]);

i++;

}

}

void FreeWords(char *pszWords[])

{

int i=0;

while(pszWords[i]){

free(pszWords[i]);

i++;

}

free(pszWords);

}

int main()

{

char szBuf[128];

char **ppszWords;

fgets(szBuf,sizeof(szBuf),stdin);

ppszWords=Split(szBuf," \n,");

PrintWords(ppszWords);

FreeWords(ppszWords);

return 0;

}

=================================================================================

0406

a

//a.c

#include

typedef struct tagINFO

{

/*1 int i;//内存依次存放

char c;

int j;

*/

char c1:2;//使用2个比特位

char c2:3;

char c3:3;

/* unsigned char c1:2;

unsigned char c2:3;

unsigned char c3:3;

*/

}INFO,*pINFO;

int main(int argc, char* argv[])

{

/*1 INFO info={1,'a',2};//结构体赋值

info.i=1;

info.c='b';

info.j=2;

*/

INFO info;

info.c1=2;//-2

info.c2=3;//3

info.c3=4;//-4

return 0;

}

b

// 求结构体的大小 输出

#include

#pragma pack(8) //#pragma pack() 设置缺省对齐方式

typedef struct tagINFO

{

int i;

char c;

}INFO,*PINFO;

int main(int argc, char* argv[])

{

INFO info={1,'a'};

PINFO pInfo=&info;

printf("sizeof(struct):%d",sizeof(info));

//printf("i:%d,c:%d\n",(*pInfo).c,(*pInfo).c);

printf("i:%d,c:%c\n",pInfo->i,pInfo->c);

return 0;

}

c

//结构体之间赋值

#include

#include

#include

#pragma pack()

typedef struct tagINFO

{

int i;

char szName[8];

}INFO,*PINFO;

int main(int argc, char* argv[])

{

INFO info={1,"zhang"};

// INFO info2;

// info2=info;

PINFO pInfo=(PINFO)malloc(sizeof(INFO));

pInfo->i=2;

strcpy(pInfo->szName,"zhang");

*pInfo=info;

// memcpy(pInfo,&info,sizeof(info));

free(pInfo);

printf("sizeof(info):%d",sizeof(info));

return 0;

}

d

//内存布局查看 结构体与函数

#include

#include

#include

typedef struct tagINFO

{

int i;

char szName[8];

char *pazBuf;

}INFO,*PINFO;

void Func(PINFO pInfo)

{

strcpy(pInfo->szName,"sum");

pInfo->pazBuf="zhang";

}

int main(int argc, char* argv[])

{

//INFO info={1,"zhang","abc"};

INFO info;

Func(&info);//指针传递‘

printf("%s,%s\n",info.szName,info.pazBuf);

return 0;

}

e

// 0406a.cpp : Defines the entry point for the console application.

//结构体与函数

#include

#include

#include

typedef struct tagINFO

{

int i;

char szName[8];

char *pszBuf;

}INFO,*PINFO;

void Func(INFO info)

{

strcpy(info.szName,"sun");

strcpy(info.pszBuf,"zhao");

}

int main()

{

char chBuf[8];

INFO info;

info.pszBuf=chBuf;

Func(info);

printf("%s,%s\n",info.szName,info.pszBuf);//???

return 0;

}

x

// 0406c.cpp : Defines the entry point for the console application.

//

#include

typedef struct tagPerson

{

int iId;

char szName[16];

char szMajor[16];

}Person,*PPerson;

void WritePerson(const char *pszFileName)

{

Person person;

FILE *fp=fopen(pszFileName,"wb");

if(fp==NULL){

printf("open file %s failed\n",pszFileName);

return;

}

while(1){

scanf("%d %s %s",&person.iId,

person.szName,person.szMajor);

if(person.iId<1)//控制台输入无效的ID,就表示结束输入

break;

fwrite(&person,1,sizeof(person),fp);

}

fclose(fp);

}

void ReadPerson(const char *pszFileName)

{

Person person;

FILE *fp=fopen(pszFileName,"rb");

if(fp==NULL){

printf("open file %s failed\n",pszFileName);

return;

}

while(1){

if(fread(&person,sizeof(person),1,fp)!=1)

break;

printf("id:%d,name:%s,major:%s\n",

person.iId,person.szName,person.szMajor);

}

fclose(fp);

}

int main()

{

//WritePerson("./student.dat");

ReadPerson("./student.dat");

return 0;

}

=================================================================================

0407

a

// 0407a.cpp : Defines the entry point for the console application.

//结构体包涵结构体

#include "stdafx.h"

#include "b.h"//使用者置声明使用相关的头文件

#include "c.h"

int main(int argc, char* argv[])

{

struct B b;

struct C c;

b.j=1;

b.a.i=2;

c.k=3;

// c.pa->i=4;//没有实例化的指针

return 0;

}

//a.h

#ifndef __HA__

#define __HA__

struct A

{

int i;

};

#endif

//b.h

#ifndef __HB__

#define __HB__

#include "a.h"//包涵结构体对象使用头文件

struct B

{

int j;

struct A a;

};

#endif

//c.h

#ifndef __HC__

#define __HC__

struct A;//包涵结构体指针声明结构体

struct C

{

int k;

struct A *pa;

};

#endif

b

// 0407b.cpp : Defines the entry point for the console application.

//单向链表 赋值和动态分配内存

#include "stdafx.h"

#include

struct Node

{

int iData;

struct Node *pNext;

};

void Func(struct Node * pHead)

{

int i=1;

while(pHead)

{

pHead->iData=i++;

pHead=pHead->pNext;

}

}

void Free(struct Node * pHead)

{

struct Node * pDelete;

while(pHead)

{

pDelete=pHead;

pHead=pHead->pNext;

free(pDelete);

}

}

int main(int argc, char* argv[])

{

/* struct Node *pHead,node,node2,node3;

pHead=&node;

node.pNext=&node2;

node2.pNext=&node3;

node3.pNext=NULL;

Func(pHead);

*/

Node *pHead;

pHead=(struct Node *)malloc(sizeof(struct Node));

pHead->pNext=(struct Node *)malloc(sizeof(struct Node));

pHead->pNext->pNext=(struct Node *)malloc(sizeof(struct Node));

pHead->pNext->pNext->pNext=(struct Node *)malloc(sizeof(struct Node));

pHead->pNext->pNext->pNext=NULL;

Free(pHead);

return 0;

}

x

// 0407b.cpp : Defines the entry point for the console application.

//链表实现学生信息储存

#include

#include

#include

typedef struct tagPerson

{

int iId;

char szName[16];

char szMajor[16];

struct *pNext;

}Person,*PPerson;

PPerson GetPerson()

{

PPerson pPerson=(PPerson)malloc(sizeof(Person));

scanf("%d %s %s",&pPerson->iId,

pPerson->szName,pPerson->szMajor);

if(pPerson->iId<1){

free(pPerson);

return NULL;

}

return pPerson;

}

PPerson GetPersonList()

{

PPerson pNode,pHead=NULL;

while(pNode=GetPerson()){

pNode->pNext=pHead;

pHead=pNode;

}

return pHead;

}

void FreePersonList(PPerson pNode)

{

PPerson pDelete;

while(pNode != NULL){

pDelete=pNode;

pNode=pNode->pNext;

free(pDelete);

}

}

int main()

{

PPerson pHead=GetPersonList();

FreePersonList(pHead);

return 0;

}

y

// 0407YYY.cpp : Defines the entry point for the console application.

//单向链表插入和弹出数据,实现调用和功能实现分开

#include "stdafx.h"

void BuildData()//输入数据

{

Person data;

while(1){

scanf("%d %s %s",&data.iId,

data.szName,data.szMajor);

if(data.iId<1)

break;

Push(&data);

}

}

void PrintData()//读取数据

{

Person data;

while(Pop(&data)){

printf("id:%d,name:%s,major:%s\n",

data.iId,data.szName,data.szMajor);

}

}

int main()

{

BuildData();

PrintData();

return 0;

}

//stack.cpp

#include "stdafx.h"

static Node *g_pHead=NULL;

void Push(const Person *pDate)//插入数据

{

Node *pNode=(Node*)malloc(sizeof(Node));//分配空间

pNode->date=*pDate;//赋值

pNode->pNext=g_pHead;

g_pHead=pNode;

}

bool Pop(Person *pDate)//弹出数据

{

Node *pDelete=g_pHead;

if(g_pHead==NULL)

return false;

*pDate=g_pHead->date;

g_pHead=g_pHead->pNext;

free(pDelete);

return true;

}

//stack.h

#if !defined __STACK_H__

#define __STACK_H__

#include "stdafx.h"

struct Person

{

int iId;

char szName[16];

char szMajor[16];

};

struct Node

{

Person date;

Node *pNext;

};

void Push(const Person *pDate);//插入数据

bool Pop(Person *pDate);//弹出数据

#endif

//stdafx.h

#include

#include

#include

#include "stack.h"

=================================================================================

0408

a

// 0408a.cpp : Defines the entry point for the console application.

//双链表

#include "stdafx.h"

int main(int argc, char* argv[])

{

Person data1={1,"li","shuxue"};

Person data2={2,"wang","hanyu"};

Person data3={3,"zheng","computer"};

void *pPos1,*pPos2;

pPos1=AddTail(&data1);

pPos2=AddTail(&data2);

InsertBefore(pPos2,&data3);

Delete(pPos1);

return 0;

}

//stack.cpp

#include "stdafx.h"

static Node *g_pHead = NULL;

static Node *g_pTail = NULL;

void *AddTail(const Person *pData)//从尾部增加节点

{

Node *pNode=(Node *)malloc(sizeof(Node));

pNode->data=*pData;

if(g_pHead)

g_pTail->pNext=pNode;

else

g_pHead=pNode;

pNode->pPrev=g_pTail;

pNode->pNext=NULL;

g_pTail=pNode;

return pNode;

}

void *InsertBefore(void *pPos,const Person *pData)//指定节点前插入节点

{

Node *pCurNode=(Node *)pPos;

Node *pNewNode=(Node *)malloc(sizeof(Node));

pNewNode->data=*pData;

if(g_pHead==pCurNode){ //说明当前节点是头节点

pNewNode->pNext=pCurNode;

pNewNode->pPrev=NULL;//pCurNode->pPrev

pCurNode->pPrev=pNewNode;

g_pHead=pNewNode;

}else{

pNewNode->pNext=pCurNode;

pNewNode->pPrev=pCurNode->pPrev;

pCurNode->pPrev->pNext=pNewNode;

pCurNode->pPrev=pNewNode;

}

return pCurNode;

}

void Delete(void *pPos)//删除节点

{

Node *pDel=(Node*)pPos;

if(g_pHead==pDel)

g_pHead=pDel->pNext;

else

pDel->pPrev->pNext=pDel->pNext;

if(pDel == g_pTail)

g_pTail = pDel->pPrev;

else

pDel->pNext->pPrev = pDel->pPrev;

}

//stack.h

#include "stdafx.h"

struct Person

{

int iId;

char namme[20];

char Major[20];

}*pPerson;

struct Node

{

Person data;

struct Node *pNext;

struct Node *pPrev;;

};

void *AddTail(const Person *pDate);

void *InsertBefore(void *pPos,const Person *pData);

void Delete(void *pPos);

//stdafx.h

#include

#include

#include

#include "stack.h"

b

// 0408b.cpp : Defines the entry point for the console application.

//环链表

#include "stdafx.h"

struct Node

{

int data;

Node *pNext;

};

bool IsRing(Node *pHead)//判断是否是环链表

{

Node *pFlow,*pFast;

pFlow=pFast=pHead;

while(pFast&&pFast->pNext)

{

pFlow = pFlow->pNext;

pFast = pFast->pNext->pNext;

if(pFlow==pFast)

return true;

}

return false;

}

int main(int argc, char* argv[])

{

Node n1,n2,n3,n4;

n1.data=1;

n1.pNext=&n2;

n2.data=2;

n2.pNext=&n3;

n3.data=3;

n3.pNext=&n4;

n4.data=4;

n4.pNext=&n1;

bool n=IsRing(&n1);

return 0;

}

=================================================================================

0409

a

// 0409a.cpp : Defines the entry point for the console application.

//引用

#include "stdafx.h"

#include

int main(int argc, char* argv[])

{

/* int i;

int &iRef=i;//常量引用

iRef=1;

*/

/* int array[5]={0,1,2,3,4};

int &iRefar=array[1];//数组引用

iRefar=20;

*/

/* int *p;

int *&piRef=p;//指针引用

piRef=NULL;

*/

int *pi=(int*)malloc(4);

int &iRef=*pi;//引用指向内存

iRef=0xab;

free(pi);

return 0;

}

b

// 0409b.cpp : Defines the entry point for the console application.

//引用函数参数传递与返回值的传递

#include "stdafx.h"

#include

/*

void Func(int &iRef)

{

iRef=1;

}

int main(int argc, char* argv[])

{

int i;

Func(i);//引用函数参数传递

return 0;

}

*/

int &Func() //引用返回值的传递

{

// static int i=123;

// return i;

int *pi=(int*)malloc(4);

*pi=234;

return *pi;

}

int main(int argc, char* argv[])

{

// int &iRef=Func();

int &iRef=Func();

free(&iRef);

return 0;

}

c

// 0409c.cpp : Defines the entry point for the console application.

//引用函数的传递

#include "stdafx.h"

#include

void Func(int *&pi)

{

pi=(int *)malloc(4);

*pi=456;

}

int main(int argc, char* argv[])

{

int *pi;

Func(pi);

free(pi);

return 0;

}

x

// 0409X.cpp : Defines the entry point for the console application.

// 使用递归遍历、释放、插入二叉数

#include "stdafx.h"

#include

struct Node

{

int iDate;

Node *pLeft;

Node *pRight;

};

void PrintTree(const Node *pBoot)

{

if(pBoot==NULL)

return;

printf("node:%d\n",pBoot->iDate);

PrintTree(pBoot->pLeft);

PrintTree(pBoot->pRight);

}

void FreeTree(Node *pBoot)

{

if(pBoot==NULL)

return;

FreeTree(pBoot->pLeft);

FreeTree(pBoot->pRight);

printf("free:%d\n",pBoot->iDate);//34251

free(pBoot);

}

void InsertTree(Node *&pRoot,int data)

{

if(pRoot == NULL)

{

pRoot=(Node*)malloc(sizeof(Node));

pRoot->iDate=data;

pRoot->pLeft=pRoot->pRight=NULL;

return;

}

if(pRoot->iDate

InsertTree(pRoot->pRight,data);

else

InsertTree(pRoot->pLeft,data);

}

int main(int argc, char* argv[])

{

/* Node *pn1=(Node*)malloc(sizeof(Node));

Node *pn2=(Node*)malloc(sizeof(Node));

Node *pn3=(Node*)malloc(sizeof(Node));

Node *pn4=(Node*)malloc(sizeof(Node));

Node *pn5=(Node*)malloc(sizeof(Node));

pn1->iDate=1;

pn2->iDate=2;

pn3->iDate=3;

pn4->iDate=4;

pn5->iDate=5;

pn1->pLeft=pn2;

pn1->pRight=pn5;

pn2->pLeft=pn3;

pn2->pRight=pn4;

pn3->pLeft=NULL;

pn3->pRight=NULL;

pn4->pLeft=NULL;

pn4->pRight=NULL;

pn5->pLeft=NULL;

pn5->pRight=NULL;

PrintTree(pn1);

FreeTree(pn1);

*/

Node *pRoot=NULL;

InsertTree(pRoot,5);

InsertTree(pRoot,8);

InsertTree(pRoot,3);

InsertTree(pRoot,4);

InsertTree(pRoot,2);

PrintTree(pRoot);

FreeTree(pRoot);

return 0;

}

y

// order.cpp : Defines the entry point for the console application.

//排序

#include

#include

void Swap(int &num1,int &num2)

{

int temp=num1;

num1=num2;

num2=temp;

}

//选择排序法

void SelectSort(int nums[],int count)

{

int i,j,k;

for(i=0; i

k=i;//初始最小数的索引值

for(j=i+1; j

if(nums[j]

k=j;

}

if(k!=i)

Swap(nums[i],nums[k]);

}

}

//选择排序

void SelectSort2(int array[],int n)

{

int i,j,temp;

for(i=1;i

{

temp = array[i];

for(j=i ; j>0 && temp < array[j-1] ; j--)

{

array[j]=array[j-1];

}

array[j]=temp;

}

}

//选择排序法

void Order(int order[],int count)

{

static int icount=0;

int i,j,temp;

for (i=0;i

for (j=i;j

if(order[i]>order[j+1]){

temp=order[i];

order[i]=order[j+1];

order[j+1]=temp;

icount++;

}

}

}

//冒牌排序

void Bubble (int order[],int count)

{

int i,j,temp;

for(i=0;j

for(j=count-1;j>i;j--)

if (order[j]

{

temp=order[j];

order[j]=order[j-1];

order[j-1]=temp;

}

/* for (j=0;j

if (order[j]>order[j+1]){

temp=order[j+1];

order[j+1] = order[j];

order[j]=temp;

}*/

for(i=0;i

printf("%d ",order[i]);

}

//插入排序

void InsertSort(int nums[],int count)

{

int i,j,k;

int temp;

for(i=0; i

for(j=i; j>=0; j--){

if(nums[j]

break;

}

}

temp=nums[i+1];

for(k=i; k>j; k--){

nums[k+1]=nums[k];

}

nums[j+1]=temp;

}

}

int main(int argc, char* argv[])

{

int nums[]={5,4,1,3,9,6};

//SelectSort(nums,sizeof(nums)/sizeof(nums[0]));

//SelectSort2(nums,sizeof(nums)/sizeof(nums[0]));

//Order(nums,sizeof(nums)/sizeof(nums[0]));

Bubble (nums,sizeof(nums)/sizeof(nums[0]));

return 0;

}

=================================================================================

a

// 0412a.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

//连接符

#define MY_TYPE(x,y) x##y

//把一个字符转发为字符串

#define MY_DATA(z) #z

#define Min(x,y) ((x)

int main(int argc, char* argv[])

{

//续行符号

char ch[]="the entry point for \

the console application" ;

char ch2[]="the entry point for"

"the console application" ;

MY_TYPE(ch,ar) info[8]=MY_DATA(hello); // 相当于char info[8]="hello"

Min(2,5);

return 0;

}

b

// 0412b.cpp : Defines the entry point for the console application.

//共同体(联合体) 枚举类型

#include "stdafx.h"

//共同占用一块内存

union IP

{

unsigned char bIP[4];

int iIP;

};

enum ERRNO //类型

{

ERRNO1, //常量 从0开始

ERRNO2, //可以赋初始值,依次递增

ERRNO3,

};

ERRNO MyLogin()

{

// if()

return ERRNO1;

// if()

return (ERRNO)1;//整形变量赋给枚举类型要强制转换

}

int main()

{

IP ip;

ip.bIP[0]=0xc0;

ip.bIP[1]=0xa8;

ip.bIP[2]=0x00;

ip.bIP[3]=0x01;

// ip.iIP=0x010008c0; //查看内存分布情况

int ret=MyLogin(); //枚举类型可以赋给整形变量

return 0;

}

c

// 0412c.cpp : Defines the entry point for the console application.

//new Delete 的使用

#include "stdafx.h"

struct INFO

{

char c;

int i;

};

int main(int argc, char* argv[])

{

char *pc = new char('a');

int *pi = new int(4);

int *pi2 = new int[4];

INFO *pInfo= new INFO();

delete pc;

delete pi;

delete []pi2;//数组释放

delete pInfo;

return 0;

}

=================================================================================

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值