今天写了几道C语言和数据库的题目。
笔试题(A卷)
一.填空题(20’)
1.sql中,用__drop ___关键字删除表。(4分)
2.sql中,用_ORDER BY _关键字进行排序。(4分)
3.表明一个对象或变量在初始化后不能被修改的关键字是__const__。(4分)
4.对于byte型变量,内存分配_____2____个字节。(4分)
5.在循环体中,如果想结束本次循环可以用__break__语句。(4分)
二.简答题(30’)
6.#include <> 和 #include "" 有什么区别?(5分)
#include<> 引用的是编译器的类库路径里面的文件
#include"" 引用的是当前目录下的头文件
7.Sizeof()与Strlen()的区别?(5分)
sizeof()获得类型、静态分配的对象、结构或数组所占的空间
strlen()测字符串长度
8.char *const p; char const *p; const char *p 三者的区别。(5分)
char *const p p中存放的地址不能被修改
char const *p *p代表的值不能被修改
const char *p *p代表的值不能被修改
9.Static全局变量与普通变量的区别?Static局部变量与普通局部变量的区别?static函数与普通函数的区别?(5分)
Static全局变量 作用范围局限于源文件,不可被源文件的其他文件使用
Static局部变量 局限于特定函数,出作用域不释放,函数结束后依然存在
static函数 作用范围局限于源文件,不可被源文件的其他文件使用 函数名在其它文件不可见
10.假设现在有表system.table1,表中有三个字段:id(数值型)、name(字符型)、age(数值型)写出SQL语句,完成以下操作:在表中查出年龄大于20,且名字以“王”开头的记录,并且按照 年龄的倒叙排列出来(年龄大的在前面)。(5分)
Select * from system.table1 where age>20 and name like ‘王%’ order by age DESC
11.写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。另外,当你写下面代码时会发生什么事? least = MIN(*p++,b);(5分)
#define MIN(A,B) ((A) <= (B)? (A) : (B))
((*p++) <= (b) ? (*p++) : (b)) 这个表达式会产生副作用,指针p会作两次++自增操作。
三.找错题(30’)
12.找出题中错误,并解释(10分)
void test1()
{
char string[10];
char* str1 = "0123456789"
strcpy(string, str1);
}
忽略了字符串是以'\0'结尾的
13.找出题中错误,并解释(10分)
void test2(char *str1)
{
char string[10];
if(strlen(str1) <= 10)
{
strcpy(string, str1);
}
}
该函数没有返回值,string[10]是在函数内部定义的,出了函数就不存在了
14.找出题中错误,并解释(10分)
void GetMemory( char *p ) --------------------void GetMemory( char **p )
{
p = (char *) malloc( 100 ); ----------------*p = (char *) malloc( 100 );
}
void Test( void )
{
char *str = NULL;
GetMemory( str ); ------------------------GetMemory( &str );
strcpy( str, "hello world" );
printf( str );
}
GetMemory是为了给str分配内存,所以应该传递str的地址
四.编程题(20’)
15.已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc)其中strDest 是目的字符串,strSrc 是源字符串,不调用 C++/C 的字符串库函数,请编写函数strcpy。
char* str_cpy(char* strDest,const char* strSrc)
{
int i = 0;
char *p = strDest;
while(*(strSrc+i) != '\0')
{
*(p+i) = *(strSrc+i);
i++;
}
*(p+i) = '\0';
return strDest;
}