返回导页:导页
编程题小白选择用纯C语言编程,所以什么都得自己做,除了基础库,没有引用其它库,数值转换要注意边界问题,也就是最大最少值也要转换成功,链表题注意指针指向问题
不定项选择题,答案可能有多个,谨慎选择
1.一个32位数据类型的数0x1234567,以小端模式,存储到0x2001~0x2004地址中,在地址Ox2002上存储的数值是
2.使用GCC编评器,在32位平台中,有如下定义的结构体:
struct Astruct{
char a;
char b;
int c;
}attribute_((packed));
请问sizeof(struct Astruct)为多少
3.关键词virtual不能用干修饰
4.c++的虚函数表有多少个?
5.C语言中,malloc函数申请到的空间存储在哪个位置
6.预防死锁的编程原则正确的有
7.一个频率为2000Hz的方波,占空比为40%,一个周期内低电平的宽度为
8.声明一个指向含有10个元素的数组的指针,其中每个元素是一个函数指针,该函数的返回值是int,参数是int*,正确的是
9.指针和引用的说法,以下正确的是
10.下列哪些STL容器通常是由红黑树实现的?
11.使用gcc test.c -o test命令生成的文件是
12.在单循环的嵌入式系统中,使用一个全局恋量在中断函数和main函数之间传递数据,为了避免数据错误,可以采用如下做法()
13.关于单例模式和全局变量的描述,正确的是
14.以下嵌入式中断,描述正确的是
15.以下语句有赋值作用的是
16.哪个命令用来卸载一个内核模块?
17.若要使用进程名来结束进程,应使用()命令
18.char str[20]="0123456789”;
int a=strlen(str);
int b=sizeof(str);
a,b的值分别是
19.对所有用户的变量设置,应当放哪个文件下?
20.下面哪种写法表示如果cmd1成功执行,则执行cmd2命令?
编程题,纯编辑器,没有测试环境
21.要求实现下面的函数,自行实现字符串转整数,给定一个字符串表示的10进制整数(大小在int类型的范围内),转换成n进制的整数(2<=N<=36),如果转换失败,函数返回“Error"。
char* radixConvert(const char *num,const int n);
示例输入:“10”,2,调用radixConvert(“10”,2),返回:“1010"
char* radixConvert(const char*num, const int n)
{
//开辟
int flag = 1;
int data = 0;
int i = 0;
int t,k;
char c;
char *ret = (char*)malloc(sizeof(char)*33);
memset(ret,0,sizeof(char)*33);
strcpy(ret,"Error");
//入口判断
if(NULL == num || n<2 || n>36)
return ret;
//正负判断
if('-' == num[0])
{
flag = -1;
++i;
}
//转为整数
while(num[i])
{
//合法字符
if(num[i] >= '0' && num[i] <= '9')
{
data = data*10 + (num[i] - '0');
++i;
}
//非法字符
else
return ret;
}
//如果是0,特殊处理,直接返回
if(0 == data)
{
ret[0] = '0';
ret[1] = '\0';
return ret;
}
//如果不为0,计算进制
i = 0;
while(data)
{
t = data % n;
if(t < 10)
{
//正负判断,用于处理最小值
if(t >= 0)
ret[i++] = t + '0';
else
ret[i++] = -t + '0';
}
else
{
ret[i++] = t + 'A' - 10;
}
data /= n;
}
if(-1 == flag)
{
ret[i++] = '-';
}
//添加结束标志
ret[i] = '\0';
//反转
k = 0;
--i;
while(k<i)
{
c = ret[k];
ret[k] = ret[i];
ret[i] = c;
++k;
--i;
}
return ret;
}
22.电视机提供了喜爱节目功能用于收喜欢观看的节目。在喜爱节目功能中,为了更好的满足用户习惯,我们根据用户播放节目的次数,动态修改喜爱节目的排列顺序。
规则为:
(1)节目每被选播一次加1权重分;
(2)喜爱目列表按权重分由高到低排序;
(3)选播节目时,系统均会调用一次动态排序函数UpdateFavChannel,进行权重分更新和节目重新排序功能。
数据结构如下:
typedef struct_Favchannel
{
int ChannelNo;//节目编号
unsigned int FavPoints;//权重分
struct Favchannel *next;
}FavChannel;
函数名:void UpdateFavChannel(FavChannel*pFavHead,int ChannelNo);pFavHead为指向喜爱节目列表头指针(单向链表,里边的节目已经按从大到小排好序,表头无数据),ChannelNo表示选播的节目编号。
void UpdateFavChannel(FavChannel *pFavHead, int ChannelNo)
{
if(NULL == pFavHead)
return ;
FavChannel* prev = pFavHead;
FavChannel* curr = pFavHead->next;
FavChannel* target = pFavHead->next->next;
int t;
unsigned int k;
//寻找target
while((NULL != target) && (target->ChannelNo != ChannelNo))
target = target->next;
//没有则返回
if(NULL == target)
return;
else
{
//加权重
target->FavPoints += 1;
//如果本来就在列头,特殊处理,不需要排序
if(target == pFavHead->next)
return ;
else
{
//开始排序,寻找插入目标
while((NULL != curr) && (curr->FavPoints >= target->FavPoints))
{
prev = curr;
curr = curr->next;
}
//如果找到,而且不是target指针,就交换位置
//交换两个项的值,无需移动指针
if(NULL != curr && prev != target)
{
t = curr->ChannelNo;
curr->ChannelNo = target->ChannelNo;
target->ChannelNo = t;
k = curr->FavPoints;
curr->FavPoints = target->FavPoints;
target->FavPoints = k;
}
}
}
}
返回导页:导页