软考 程序员 下午考题 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 字符串 最后一位 有没有 包括'\0'    申请空间的时候注意要加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
目录
相关文章
|
2月前
|
存储 人工智能 算法
【C语言】自学终极笔记
【C语言】自学终极笔记
83 0
|
6月前
|
搜索推荐 程序员 编译器
神奇的库函数qsort【详解指向函数指针数组的指针、回调函数、模拟实现qsort函数】【C语言/指针/进阶/程序员内功修炼】【下】
神奇的库函数qsort【详解指向函数指针数组的指针、回调函数、模拟实现qsort函数】【C语言/指针/进阶/程序员内功修炼】【下】
40 0
|
1月前
|
算法 程序员 C语言
普通程序员也能秒查数组中特定元素,C语言的神秘技巧揭秘!
普通程序员也能秒查数组中特定元素,C语言的神秘技巧揭秘!
|
1月前
|
存储 算法 程序员
普通程序员,掌握这个技能,C语言反转数组只需1秒,效率翻倍无敌了!
普通程序员,掌握这个技能,C语言反转数组只需1秒,效率翻倍无敌了!
|
6月前
|
程序员 编译器 C语言
指针太乱傻傻分不清?教你如何正确快速理解/函数指针/数组参数、指针参数/函数指针数组【C语言/指针/进阶/程序员内功修炼】【中】
指针太乱傻傻分不清?教你如何正确快速理解/函数指针/数组参数、指针参数/函数指针数组【C语言/指针/进阶/程序员内功修炼】【中】
31 0
|
3月前
|
NoSQL Redis C语言
|
4月前
|
前端开发 C语言
前端知识笔记(四十)———用C语言实现计算器功能
前端知识笔记(四十)———用C语言实现计算器功能
38 0
|
5月前
|
C语言
C语言初阶 牛客网刷题笔记(将持续更新..)
C语言初阶 牛客网刷题笔记(将持续更新..)
C语言初阶 牛客网刷题笔记(将持续更新..)
|
6月前
|
程序员 编译器 C语言
还在因为指针头大吗,6000字的白话让你掌握字符指针/指针数组/数组指针的用法【C语言/指针/进阶/程序员内功修炼】【上】
还在因为指针头大吗,6000字的白话让你掌握字符指针/指针数组/数组指针的用法【C语言/指针/进阶/程序员内功修炼】【上】
38 0
|
6月前
|
存储 小程序 程序员
8k字详解整型(int)/字符型(char)/浮点型(float)/有符号(signed)/无符号(unsigned)数据在内存中的存储【程序员内功修炼/C语言】
8k字详解整型(int)/字符型(char)/浮点型(float)/有符号(signed)/无符号(unsigned)数据在内存中的存储【程序员内功修炼/C语言】
63 0