软考 程序员 下午考题 c语言 笔记
2015-04-13 13:27
288 查看
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.二分搜索
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.理解 递归 逆置
9.读取文件 必须通过定义FIFE类型的指针变量和文件操作函数来访问外存文件。
ru : FIFE *fp;
10.函数参数传递 值传递 2010下半年 试题三 说明2
11.结构体
若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。 口诀:前真后假。
如 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
相关文章推荐
- 软考指南:程序员数据结构笔记
- 软考助手新增加了程序员下午试题
- 2011年上半年软考程序员下午试题-试题一答题解析
- 2014年软考程序员-常考知识点复习笔记【汇总篇】
- 【好程序员笔记分享】—— C语言指针的理解
- 好程序员训练营——C语言笔记1-基础知识
- 2014年软考程序员-常考知识点复习笔记【第一章】
- 2014年软考程序员-常考知识点复习笔记【第六章】
- 2014年软考程序员-常考知识点复习笔记【第七章】
- 2014年软考程序员-常考知识点复习笔记【第八章】
- 软考程序员新手易错笔记
- 2014年软考程序员-常考知识点复习笔记【第二章】
- c语言学习笔记6.18下午
- 【好程序员笔记分享】—— C语言中的宏定义
- 2014年软考程序员-常考知识点复习笔记【第三章】
- 2014年软考程序员-常考知识点复习笔记【第九章】
- 2014年软考程序员-常考知识点复习笔记【第四章】
- 2014年软考程序员-常考知识点复习笔记【第五章】
- 【好程序员笔记分享】—— C语言中的extern关键字
- 【好程序员训练营学习笔记分享1】--c语言指针(一)