搜集的几道C语言和数据库题目

  今天写了几道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;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值