龙旗控股笔试题和面试题答案
龙旗控股笔试题分享,欢迎大家阅读和练习!
一、选择题
1. 下列程序的运行结果是
# define A 5
# define B A+1
main( )
{
int a;
a=B;
printf(″%d\n″a--);
}
A.6
B.5
C.4
D.出错
2. 设int i,x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句
for(i=0;i<3;i++)
printf(″%d″,x[i][2-i]);
的输出结果是
A.147
B.159
C.357
D.369
3. 设有以下程序段:int a=1, b=10, c=1, x;x=a&&b||++c;printf(″%d, %d\n″,x,c);执行后输出的结果是
A.0,0
B.0,1
C.1,0
D.1,1
4. 假定a和b为int型变量,则执行下述语句组后,b的值为
a=1;
b=10;
do
{
b-=a;
a++;
} while (b--<0);
A.9
B.-2
C.-1
D.8
5. 设int a = 3;则表达式a<1&&--a>1的运算结果和a的值分别是
A.0和2
B.0和3
C.1和2
D.1和3
6. 表达式“sizeof(int [1][2])/sizeof(int)”的值为_____。
A 1 B 2 C 3 D 4
二、专业题
1.Windows NT下的32位机运行环境下:
char str[]=“Hello”;
char *p =str;
int n = 10;
请计算strlen(str),sizeof(str),sizeof(p),sizeof(n)
5, 6, 4, 4
2.请编码实现以下功能的函数
功能:实现对一个8 bit数据(unsigned char类型)的指定位(例如第n位)的置0或者置1操作,并保持其他位不变。
函数原型:void bit_set(unsigned char*p_data,unsigned char position,bool flag)
函数参数说明:p_data是指定的源数据,position是指定位(取值范围1~8),flag表示是置0还是置1操作
#include
#include
void bit_set(unsigned char* p_data,unsignedchar position,bool flag)
{
int times=position-'0'-1;
if(flag==0)
{
*p_data= (*p_data)&(~(0x01<
}
if(flag==1)
{
*p_data= (*p_data)| (0x01<
}
printf("===%d\n",*p_data);
}
int main(int argc,char* argv[])
{
unsignedchar a;
unsignedchar num;
scanf("%c",&a);
getchar();
scanf("%c",&num);
bit_set(&a,num,0);
printf("%d\n",a);
return1;
}
3.请用C语言实现字符串右循环移位函数,比如?abcdefghi?循环右移2位就是?hiabcdefg?。
函数原型: void RightLoopMove(char * pStr,unsignedshort steps)
参数说明:
pStr:Pointer to a?\0?terminated string
steps:The rotate shift numbers
#include
#include
#include
voidRightLoopMove(char* pStr,unsigned short steps)
{
unsigned short i=strlen(pStr);
int num=0;
char temp[10];
for(;num
{
static int length=i-steps;
temp[num]=pStr[length];
length++ ;
}
for(num=i-1-steps;num>=0;num--)
{
pStr[num+steps]=pStr[num];
}
for(num=0;num
{
pStr[num]=temp[num];
}
}
intmain(int argc,char* argv[])
{
char str[20]="abcdefghi";
RightLoopMove(str,2);
printf("%s\n",str);
return 1;
}