c语言试题整理(如有错误还望指正)
2016-12-19 23:20
141 查看
一、填空选择题
1、请写出输出结果 ~A = 4294967285
c=-128
unsigned short A = 10;
printf("~A = %u\n", ~A);
char c=128;
printf("c=%d\n",c);
2、写出输出结果____>6_______
void foo(void)
{
unsigned int a = 6;
int b = -20;
(a+b > 6) ? puts("> 6") :puts("<= 6");
}
解析:当一个运算中一个运算数为有符号,一个运算数为无符号数,C语言会隐式地将有符号数强制类型转换为无符号数,然后执行两个无符号数之间的运算。
3、 已知一个数组table,用一个宏定义,求出数据的元素个数__________________________ ___#define_Elem_Num()_sizeof(table)/sizeof(table[0])___________________________
4、进程在系统中是否存在的唯一标识是(D)
A、数据集合 B、目标程序
C、源程序 D、进程控制块
5、32位机器上定义以下结构体:
struct x
{
long long _x1;
char _x2;
int _x3;
char _x4[2];
static int _x5;
};
请问sizeof(x)的大小是多少______24__________
解析:
32位机器:
longlong _x1; 8字节 8
char_x2; 1字节 1+3(考虑内存对齐,下一个占4字节,此处应加3,保证下一个从4的倍数内存开始)
int_x3; 4字节 4
char_x4[2]; 2*1字节 2 + 2 (保证内存总数是8的倍数,加6)
staticint _x5; 在静态区,不在栈中,不考虑
总共8+8+4+4=24
二、简答题
1、给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。
答:
(1)int set_bit3(int a
{
int mask = 0xfff4;
a = a || mask;
return a;
}
(2)int clear_bit3(int a)
{
int mask = 0xfffb
a = a && mask;
return a;
}
2、什么是进程死锁?造成进程死锁的原因?
(1)进程死锁
两个或两个以上进程在执行过程中,由于竞争资源或通信造成的一种阻塞现象,若无外力作用,它们都将无法推进下去。
(2)原因
a.系统资源不足
b.进程运行推进的顺序不合适
c.资源分配不当
(解析:如果系统资源充足,进程资源请求能够得到满足,死锁的可能性就会降低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序速度不同,也可能产生死锁)
(3)解决方法
a.互斥条件:一个资源每次只能被一个进程使用;
b.请求与保持条件:一个进程因请求资源而阻塞是,对已获得的资源保持不放;
c.不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺;
d.循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
(解析:这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,只要上述条件之一不成立,就不会发生死锁。)
三、程序题
1、用递归算法判断数组是否为一个递增数组
void Is_Increase(int *arr, int len)
{
static int i = 0;
if((*(arr + 1) > *arr) && (i < len)) //数组后一个元素大于前一个成立
{
i++;
Is_Increase(++arr, len);
return;
}
if((len - 1) == i)
{
printf("Is increase array\n");
}
else
{
printf("Not increase array\n");
}
}
1、请写出输出结果 ~A = 4294967285
c=-128
unsigned short A = 10;
printf("~A = %u\n", ~A);
char c=128;
printf("c=%d\n",c);
2、写出输出结果____>6_______
void foo(void)
{
unsigned int a = 6;
int b = -20;
(a+b > 6) ? puts("> 6") :puts("<= 6");
}
解析:当一个运算中一个运算数为有符号,一个运算数为无符号数,C语言会隐式地将有符号数强制类型转换为无符号数,然后执行两个无符号数之间的运算。
3、 已知一个数组table,用一个宏定义,求出数据的元素个数__________________________ ___#define_Elem_Num()_sizeof(table)/sizeof(table[0])___________________________
4、进程在系统中是否存在的唯一标识是(D)
A、数据集合 B、目标程序
C、源程序 D、进程控制块
5、32位机器上定义以下结构体:
struct x
{
long long _x1;
char _x2;
int _x3;
char _x4[2];
static int _x5;
};
请问sizeof(x)的大小是多少______24__________
解析:
32位机器:
longlong _x1; 8字节 8
char_x2; 1字节 1+3(考虑内存对齐,下一个占4字节,此处应加3,保证下一个从4的倍数内存开始)
int_x3; 4字节 4
char_x4[2]; 2*1字节 2 + 2 (保证内存总数是8的倍数,加6)
staticint _x5; 在静态区,不在栈中,不考虑
总共8+8+4+4=24
二、简答题
1、给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。
答:
(1)int set_bit3(int a
{
int mask = 0xfff4;
a = a || mask;
return a;
}
(2)int clear_bit3(int a)
{
int mask = 0xfffb
a = a && mask;
return a;
}
2、什么是进程死锁?造成进程死锁的原因?
(1)进程死锁
两个或两个以上进程在执行过程中,由于竞争资源或通信造成的一种阻塞现象,若无外力作用,它们都将无法推进下去。
(2)原因
a.系统资源不足
b.进程运行推进的顺序不合适
c.资源分配不当
(解析:如果系统资源充足,进程资源请求能够得到满足,死锁的可能性就会降低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序速度不同,也可能产生死锁)
(3)解决方法
a.互斥条件:一个资源每次只能被一个进程使用;
b.请求与保持条件:一个进程因请求资源而阻塞是,对已获得的资源保持不放;
c.不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺;
d.循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
(解析:这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,只要上述条件之一不成立,就不会发生死锁。)
三、程序题
1、用递归算法判断数组是否为一个递增数组
void Is_Increase(int *arr, int len)
{
static int i = 0;
if((*(arr + 1) > *arr) && (i < len)) //数组后一个元素大于前一个成立
{
i++;
Is_Increase(++arr, len);
return;
}
if((len - 1) == i)
{
printf("Is increase array\n");
}
else
{
printf("Not increase array\n");
}
}
相关文章推荐
- 关于性能测试RBI方法(翻译水平有限,如有错误麻烦能够指正)
- hibernate学习(word文档备注不能正常显示,如有错误,忘不吝指正)
- 对于开发者来说,不得不需要知道的东西(持续更新,如有错误欢迎指正)
- 【整理】C语言上机程序调试功能键及常见错误提示
- 牛客网linux试题-错误整理-20171013
- 牛客网linux试题-错误整理-20170914
- spring学习(word文档备注不能正常显示,如有错误,忘不吝指正)
- 【学习ios之路:C语言】C语言中容易出错的试题整理.
- 从本人做的安卓项目浅谈蓝牙(如有缺漏错误,还请指正) 推荐
- 微信小程序细节坑(自己刚开始做小程序中遇到的一些细节,如有错误,还请大佬指正,看心情更新。。。。)
- C语言算法—比赛试题(x星球的人员安排)【有错误代码,望大神们指点】(类似建立树的回溯法)
- java学习笔记(word文档备注不能正常显示,如有错误,忘不吝指正)
- oracle学习(word文档备注不能正常显示,如有错误,忘不吝指正)
- 将本地项目放到Github上(应该可以这么说)[如有错误欢迎大家批评指正]
- 自加自减运算符的错误使用和理解【个人学习笔记,如有错误欢迎指正】
- 对于指针(一级指针)的理解(文中如有理解错误,欢迎指正,大家互相学习)
- servlet和jsp学习(word文档备注不能正常显示,如有错误,忘不吝指正)
- 剑指Offer22题栈的压入、弹出序列 java解答(如有错误欢迎批评指正)
- C++ 沉思录第八章 代码整理,修改(好像书上的代码根本没法用,这只是按他那个思想写的,若发现错误请指正.)
- struts2学习(word文档备注不能正常显示,如有错误,忘不吝指正)