一些杂题
【填空题】
sizeof(sizeof(strlen(“Hello”)))=__。
struct ABC
{
char x1;
double x2;
int x3;
short x4;
};
sizeof(ABC)=__。
设置随机数种子的函数名为__,产生随机数的函数名为__。
执行控制台命令的函数名为__。
打开一个文件的函数名为__,关闭一个文件的函数名为__。
移动文件读写指针的函数名为__。
断言函数assert起作用的项目必须是__版本。
字符串字面常量所在的内存区称之为__。
C语言中的复合数据类型分别是__、、、__
所有成员共用一段内存的复合数据类型是__。
枚举类型变量在内存中占__字节
typedef关键字的作用是为__起别名
【简答题】
请简述以下函数的作用
int strlen(const char* s);
char* strcpy(char* s1, const char* s2);
char* strcat(char* s1, const char* s2);
int strcmp(const char* s1, const char* s2);
请简述以下函数的作用
void* memset(void* dest, int c, size_t count);
void* memcpy(void* dest, const void* src, size_t count);
请简述以下函数的作用
void* malloc(size_t size);
void free(void* memblock);
请简述以下函数的作用
size_t fread(void* buffer, size_t size, size_t count, FILE* stream);
size_t fwrite(const void buffer, size_t size, size_t count, FILE stream);
struct STUDENT
{
int id; //学号
char name[32]; //姓名
int age; //年龄
};
void main()
{
STUDENT s[10];
for (int i = 0; i < 10; ++i)
{ std::cin>>s[i].name;
std::cin>>s[i].id;
std::cin>>s[i].age;
}
sort(fName,10); //该代码会按照学生姓名排序
sort(fID,10); //该代码会按照学生id排序
sort(fAge,10); //该代码会按照学生年龄排序
}
完成sort函数,fName函数,fID函数,fAge函数
请简述下面程序执行的打印结果及其原因
void f(char* p)
{
p = (char*)malloc(10);
}
void main()
{
char* q = 0;
f(q);
strcpy_s(q, 10, “abc”);
std::cout<<q<<std::endl;
}
请简述下面程序执行的打印结果及其原因
char* f()
{
char p[] = “abc”;
return p;
}
void main()
{
char* q = f();
std::cout<<q<<std::endl;
}
请简述下面程序执行的打印结果及其原因
char* p = (char*)malloc(10);
strcpy_s(p, 10, “abc”);
std::cout<<p<<std::endl;
free§;
if §
std::cout<<“没有释放p”<<std::endl;
else
std::cout<<“已经释放p”<<std::endl;
请简述C程序中内存的类型,以及这些内存的分配方法、分配时刻、释放时刻
请简述#ifndef、#define、#endif在头文件中的作用
请简述结构体内存对齐的原则
【程序题】
完成函数float get_rand_float(float min, float max),该函数得到一个min到max之间的随机数
完成函数void delete_star(char* s),该函数将传入的字符串中出现的’'字符删除,如果没有就不删除,比如传入ABCDEF*G*,执行之后的结果为ABCDEFG
struct STUDENT
{
int id; //学号
char name[32]; //姓名
int age; //年龄
};
完成函数void save_students(STUDENT* s, int n, const char* filename),该函数将传入的长度为n的学员信息数组s存储到名字为filename的文件中
完成函数STUDENT* load_students(const char* filename, int* n),该函数将save_students函数存储的文件中的学员信息读取到堆内存中的STUDENT数组中并返回首地址,n学员的数量
顺序表
SXB* CreateSXB();//创建
void DestroySXB(SXB* sxb);//销毁
bool InsertSXB(SXB* sxb,int xb,DATA data);//插入
bool EraseSXB(SXB* sxb,int xb);//删除
链表
NODE* CreateLink();//创建
void DestroyLink(NODE* head);//销毁
bool InsertLink(NODE* head,int xb,DATA data);//插入
bool EraseLink(NODE* head,int xb);//删除
int LenLink(NODE* head);//长度