c语言深度剖析测试题答案,[ 1011] <<C语言深度剖析>> 测试 TEST

/********************************

**  wzsts《C语言深度剖析》2016 **

**                    **

**     fun1~fun6代表6章节内容 **

**fun10~fun19代表fun1所调用函数 **

**                    **

**     世界因规则而美好     **

** #if(1)可运行,#if(0)不运行。 **

** Data  Author   PC       **

**16.1.1  wz  VM.CentOS6.5   **

*********************************/

//第一章  以前打过,然后换系统丢失文件。想想,有些东西,失去了,可以换更好的!*/

#include 

#include

#define N  10    /* 定义分配空间,而extern和define声明,宏替换没有分配空间 */

#define EPSINON  0.0001

fun0()     /* 函数没有类型,而返回值有类型 */

{

int fx=10;

return fx;

}

void static fun()/* 即便类型不同,也不能重名 */

{

/*  int fun =10     函数名,变量名不要重复   */

}

void fun10()

{

int i=4;

int *p=NULL;

int a[10]={1,2,3,4,5};

char b[ ]="abcde";

char *c="abcde";

/*  char *c[10]="abcde";    error*/

char d[ ]={"abcde"};

char e[]={'w','z','z','x'};

if(b!=NULL)

if(NULL==c)  ;

else        printf(" c isn't NULL\n");

else

{

NULL;         /* 细节风格,防止误认 */

}

printf("*********************\n");

printf("%d\n",sizeof(  p) ) ;         /* 4 */

printf("%d\n",sizeof( *p) ) ;         /* 4 */

printf("%d\n",sizeof( int)*i ) ;/* 4 i=0,is 0 i=4,is 16*/

printf("*********************\n");

printf("%d\n",sizeof(  a) ) ;         /* 40 */

printf("%d\n",sizeof(  a[10] ) ) ;    /* 4 */

printf("%d\n",sizeof(  &a) ) ;        /* 4 */

printf("%d\n",sizeof(  &a[0]) ) ;     /* 4 */

printf("%d,%d\n",sizeof(  b),strlen(b) ) ;         /* 6,5*/

printf("%d,%d\n",sizeof(  c),strlen(c) ) ;         /* 4,5*/

printf("%d,%d\n",sizeof( &c),strlen(e) ) ;         /* 4,9*/

printf("%d,%d\n",sizeof(  d),strlen(d) ) ;         /* 6,5*/

printf("*********************\n");

}

void fun11()

{

int i=-20;

unsigned j=10;

float ftestval=0.0,ff=0;

if(ftestval==0.0) printf("test 1 \n");

if((ftestval>=-EPSINON)&&(ftestval<=EPSINON)) printf("test 2 \n");

ff=10000000.00+0.00000001;

printf("test 2 is better \n f=%f d=%d\n",ff,ff);    /* 不能如此转化   */

i=(int)ff;   printf( "f=%f d=%d\n",ff,i);        /*   强制转化   */

//bool b;  C++

//if(b==FALSE) ;  VC++ 中TRUE是1VB中TRUE是-1

//printf("d=%d,u=%u\n",i+j,i+j);            /*d=-10,u=4294967286*/

//for(j=9;j>=0;j--)  {printf("%u\n",j);}    /*死循环 一直打印      */

//for(j=9;j>=1;j--)    {printf("%u\n",j);}  /* 修改为打印9到1      */

scanf("%d\n",&i);

switch(i)

{/******       right        ********/

case 1:printf("case 1\n");

case 2:printf("case 2\n");

/*******      error        *******/

// case A:printf("case A\n");      /*  case语句 后应少于20行   */

//      scanf("%d\n",&i);

switch(i)

{

case 1:printf("case 2.1\n");break;

case 2:printf("case 2.2\n");break;

}

default:printf(" error\n");   /*  可无,有则放默认错误程序 break有妙用  case 后是整型和字符型表达式  */

/*********  error  end  **********/

}

}

void fun12()

{

/*

for(初值循环条件;循环语句)

for(i=0,j=1;i<10,j<3;i++,j++)

while(循环条件){}

do{}  程序至少执行一次

while(循环条件)

*/

static int i=0;

//for(;i<10;i++)

for(i=0;i<=10;i++)          /* 半开半闭写法 */

{

;

}

printf("***************\n");

while(i)

{

i--;printf("%d",i);

}

printf("%c\n",13);      /* 需要记忆一些特别的ASCII码值13 CR回车 */

printf("***************\n");

do

{printf("%d\n",i);}     /*  括号外不可放其他代码 */

while(i);

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

printf("***************\n");

/*

**长循环在内效率高,程序不要修改循环变量的值

**循环要短,代码清晰,3层以内

**死循环不一定死,也不一定没有用;(测试机子可以开多少空间,跑认为终止的程序)

*/

printf("c\n");

do

{

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

{

printf("*");

//  if(i==1) goto wz;

if(i==2)

continue;  /*continue终止 本次(本轮)循环*/

if(i==4)    /*if(i=4)结果不一样*/

break;     /*break 终止 本层循环*/

}

printf("%2d",i);

wz:                /*goto 建议少用跳出本层循环,也跳不出函数*/

printf("%d",i);

printf("\n");

i-=4;             /*轻易改的动数字则死循环打印*/

printf("%2d",i);

}

while(i>0);

printf("\n");

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

}

void fun13()

{

// extern    int i;

// static    int i;

// unsigned  int i;

//   auto    int i;

// const     int i;

//  long     int i;

// short     int i;

//volatile   int i;

struct{}su;

printf("%d",sizeof(su));/* VC IS 1 ,VM IS 0;*/

typedef struct{int l;int a[0];}type;

//typedef struct{int l;int a[ ];}type;/*可变长结构体 可变长数组,柔性数组,不同编译器不同写法*/

//typedef struct{int l;int a[10];}type;  /*  不同的意思*/

enum EN{A=0,B,C=100,d,e}EN;

union check{int i;char c;}un;

un.i=1;

printf("%d\n",un.c);                      /*01 0001->1000 小端存储    */

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

printf("%d\n", sizeof(EN));               /* 是一个指针,32位机上为4  */

/*

区别          枚举      宏

——————————————————————————————————————

|编译时     |确定值    |替换,未确定值|

|定义常量   |一次多个  | 一次一个    |

|编辑器调试  |  可以   |  不可以     |

|定义函数    | 不可以   |   可以     |

*/

}

void fun14()

{

auto  int a=0;

const int b=1;

register  c=2;

int DataGotFromfun0=fun0();

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

// printf("%d\n",&a);   //测试正确则如此注释

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

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

/* 0

** 0 2

** 0

** 3

*/

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

/* printf("%d\n",&c);  测试错误则如此注释*/

/*

** static 修饰变量,函数,C++中

*/

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

/*

**  变量,函数 命名所涉及英语语法

*/

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

/*  b++;       const==readonly  */

printf("%d\n",sizeof(int) ) ;/* 4 */

printf("%d\n",sizeof( a ) ) ;/* 4 */

printf("%d\n",sizeof  a   ) ;/* 4 */

/* printf("%d\n",sizeof int  ) ;  */

/*     同return(a);括号可去         */

}

void  main()

{

//fun10();

//fun11();

//fun12();

//fun13();

//fun14();

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值