• 软考 程序员 下午考题 c语言 笔记


    1. 数组名 是表示数组空间首地址的指针常量,程序中不允许对常量赋值

    如 int  a[];   a就是数组名,表示数组控件首地址的指针常量

           a = 0;是错误的,不允许对指针常量赋值

          &a[0]  =  a;

            &a[1]  = a+1;

    2.可以通过指针指向一个常量,但是不能通过指针修改常量的内容

    如:char *p; 

      p = "testing"

      *p = '0';

    3.数组的 输入 int a[100];

      scanf("%d",&a[k]) 或 scanf("%d",a+k)

      &a[k]  = a+k

    4.填空题  a.注意数组下标以及长度  b.读请题意 c.所有变量是否都用上  d.用 a[k++]可以移动赋值

    5.二分搜索 

    int binSearch(constint*Array,intstart,intend,intkey){
    int left,right;
    int mid;
     left=start;
     right=end; 
    //注释中为递归算法,执行效率低,不推荐
    /*
    if(key<Array[mid]){
    return(binSearch(Array,left,mid,key));
    }else if(key>Array[mid]){
    return(binSearch(Array,mid+1,right,key));
    }else
    return mid;
    */
     
    while(left<=right) //循环截止条件
    {   mid
    =(left+right)/2;   if(key==Array[mid])
      {     
    return mid;   }   else if(key<Array[mid])
      {     right
    =mid-1;   }   else if(key>Array[mid])
      {     left
    =mid+1;   } } return -1; }

     6.

    char *p = (char *) malloc(1000);       malloc(括号里放入长度)

    在堆上分配了1000个字节的内存,返回这块内存的首地址,把地址强制转换成 char *类型后赋给char *类型的指针变量p;这块地址是用来保存char类型的数据。

    1)内存是否申请成功? if( NULL !=p )

    2)使用结束后,一定要释放,要求malloc和free符合一夫一妻制;

    3)内存释放后(使用free函数之后指针变量p本身保存的地址并没有改变),需要将p的值赋值为NULL(拴住野指针)。

    char *p = (char *) malloc(1000);

    if (NULL != p)

    {

    ......

            free(p);

            p = NULL;

    }

    else

    {

    }

    7 字符串 最后一位 有没有 包括''    申请空间的时候注意要加1  strlen(s)   +  1 

    8.理解 递归  逆置

    void reverse(char *s ,int len)
    {
      char ch;
      if(len>1)//len>=1
     {
       ch = *s;
       *s = *(s+len-1);
       *(s+len-1) = ch;
       reverse(s+1;len-2);     
     }        
    }

    9.读取文件 必须通过定义FIFE类型的指针变量和文件操作函数来访问外存文件。

    ru : FIFE *fp;

    10.函数参数传递  值传递 2010下半年 试题三 说明2 

    11.结构体 

    typedef struct Node
    {
     int data;
     struct Node *next;
    }Node,*LinkList;

     若struct node{ }这样来定义结构体的话。在定义 node 的结构体变量时,需要这样写:struct node n;
     若typedef struct node{}NODE; 。在申请变量时就可以这样写:NODE n;其实就相当于 NODE 是node 的别名。区别就在于使用时,是否可以省去struct这个关键字。

    在C中定义一个结构体类型时如果要用typedef:
    typedef struct Student
    {
       int no;
       char name[12];
    }Stu,student;
    于是在声明变量的时候就可:Stu stu1;或者:student stu2;(Stu 和student 同时为Student的别名)
    如果没有typedef即:
    struct Student
    {
       int no;
       char name[12];
    }Stu;
    就必须用struct Student stu1;或者struct Stu stu1;来声明
    另外这里也可以不写Student(于是也不能struct Student stu1;了)
    typedef struct
    {
       int no;
       char name[12];
    }Stu;

    在c++中如果用typedef的话,又会造成区别:
    struct Student
    {
       int no;
       char name[12];
    }stu1;//stu1是一个变量

    typedef struct Student2
    {
       int no;
       char name[12];
    }stu2;//stu2是一个结构体类型,即stu2是Student2的别名
    使用时可以直接访问stu1.no
    但是stu2则必须先定义 stu2 s2;
    然后 s2.no=10;

     12.条件表达式

    x=<表达式1>?<表达式2>:<表达式3>
    其意义是:先求解表达式1,若为非0(真),则求解表达式2,将表达式2的值赋给x。若为0(假),则求解表达式3,将表达式3的值赋给x。 口诀:前真后假。
    z =x>y?x:y;    若x>y 则  给z赋值x. 否则给z赋值y

  • 相关阅读:
    SpringBoot之集成Socket
    SpringBoot之集成WebSocket
    SpringBoot之统一异常处理
    请求的转发和重定向
    5+App使用定位
    将Tomcat注册为Windows服务
    Tomcat环境变量设置
    CentOS7搭建Gitlab详细过程
    Python 12 内置函数
    Python 11 生成器
  • 原文地址:https://www.cnblogs.com/loveincode/p/4421781.html
Copyright © 2020-2023  润新知