宇视科技招聘试题-C语言程序设计(2016B)
一、判断题
1.使用内联函数可以加快程序执行的速度
2.使用引用传递函数的参数,在内存中并没有产生实参的副本,他是直接对实参操作
3.涉及物理状态或有明确含义的常量,可以直接使用数字
4.C++中可以定义引用类型的引用
5.合理排列结构中元素顺序,可节省空间并增加可理解性
二、单选题
1.若有定义语句:int year = 2009,*p = &year;以下不能使变量year 中的值增至2010的语句是()D
A *p+=1
B (*p)++
C ++(*p)
D *p++
2.以下程序的输出是 A
main()
{
Int a,b,c,d;
a = 3;
b = 5;
c = a,b;
d = (a,b);
printf(“c = %d “,c);
printf(“c = %d “,c);
}
A c = 3 d = 3
B c = 5 d = 3
C c = 3 d = 5
D c = 5 d = 5
3.以下不能输出字符A的语句是() B
A printf(“%c\n”,’a’-32);
B printf(“%d\n”,’A’);
C printf(“%c\n”,65)
D printf(“%c\n”,’B’-1);
4.以下活动中关于程序模块化的叙述错误的是 C
A 把程序分成若干相对独立的模块,可便于编码和调试
B 把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块
C 可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序
D 可采用自顶向下、逐步细化的设计方法把若干独立模块组装成索要求的程序
5.D1 的分辨率为 E
A 1280*720
B 1920*1080
C 1280*1024
D 704*576
E 720*576
F 352*288
6.程序调试的任务是 D
A 设计测试用例
B 验证程序的正确性
C 发现程序中的错误
D 诊断和修改程序中的错误
7.下列关于线性链表的叙述中,正确的是 C
A 各数据结点的存储空间可以不连续,但他们的存储顺序和逻辑顺序必须一致
B 各数据结点的存储顺序和逻辑顺序可以不一致,但他们的存储空间必须连续
C 进行插入与删除时,不需要移动表中的元素
D 以上三种说法都不对
8.可以在C语言中用做用户标识符的是 B
A void define WORD
B as_b3 _323 If
C for -abc cas
D 2c Do SIG
9.以下程序的输出是 D
Main()
{
Int a[5] = {1,2,3,4,5};
Int *ptr = (int *)(&a+1);
Printf(“%d %d “,*(a+1),*(ptr+1));
}
A 2 2
B 2 1
C 2 5
D 以上均不是
10.以下选项中关于C语言常量的描述错误的是 B
A 所谓常量,是指在程序运行过程中,其值不能被改变的量
B 常量分为整型常量、实型常量、字符常量和字符串常量
C 常量可分为数值型常量和非数值型常量
D 经常被使用的变量可以定义为常量
11.假定a和b为int型变量,则执行以下语句后b的值为 D
A = 1; b = 10; do { b -= a ; a ++ ; } while (b-- < 0)
A 9
B -4
C -1
D 8
12.下列静态数据成员的特性中,错误的是 D
A 引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符
B 说明静态数据成员时前面要加关键字static来修饰
C 静态数据成员在类体外进行初始化
D 静态数据成员不是所有对象所共有的
13.下列程序输出是 A
#define A 100
Void main()
{
Int i = 0, sum = 0;
Do { if( i == (i/2)*2)
Continue;
Sum += i;
}while(++i<A);
Printf(“%d\n”,sum);
}
A 2500
B 2050
C 4
D 0
14.以下程序 A
Int main(int argc, char** argv)
{
Int n = 0,i;
For(i = 1;i < argc; i++)
N = n*10 + *argv[i]-’0’;
Printf(“%d\n”,n);
Reutrn 0;
}
经编译连接生成可执行文件tt.exe,若运行时输入以下命令行 tt
12 345 678,则程序运行的输出结果是
A 136
B 12345 C1234567 D 12
15.以下程序的输出结果是 C
A 9
B 6
C 36
D 18
#define f(x) x*x
Main()
{
Int a=6, b=2, c;
C = f(a)/f(b);
Printf(“%d\n”,c);
}
三、填空题
1.以下程序运行后的输出是 AFK #include<stdio.h>
Main()
{
Char a;
For(a=0;a<15;a+=5)
{ putchar(a+’A’);}
Printf(“\n”);
}
2.以下程序运行后的输出是
#include<stdio.h>
Int main()
{
*pragma pack(push)
*pragma pack(4)
Struct
{
Char m1;
Double m4;
Int m3;
}tt;
#pragma pack(pop)
Printf(“%d”,sizeof(tt)); Return 0;
}
3.5 5 4 6
Char *pcColor = “blue1”;
Char acColor[] = “blue1”; Strlen(pcColor) =
Strlen(acColor) =
4.下列程序的输出结果 2
Int aa[3][3] = {{2},{4},{6}}; Void main()
{
Int i = 0,*p = &aa[0][0];
For(i = 0; i< 2; i++)
{ if(i == 0)
Aa[i][i+1] = *p+1;
Else
++p;
Printf(“%d”,*p);
}
}
5.SO
Int aa[3][3] = {{2},{4},{6}};
Void main()
{
Char *p[] = {“BOOL”,”OPK”,”H”,”SP”}; Int i;
For(i = 3;i>=0;i--,i--)
{
Printf(“%c”,*p[i]);
}
Printf(“\n};
}
6.输入x=9999,以下程序返回结果 8
Int func(int x)
{
Int countx = 0;
While(x)
{
Countx ++;
X = x&(x-1);
}
Return countx;
}
7.定义一个5行5列的二维数组,使下三角的所有元素初始化为1,Int i,j,a[5][5];
For(i = 0;i < 5;i++)
For (j = 0;j < 5;j++)
{
If (_______)i>=j
{
A[i][j]=1;
}
}
Return;
四、编程题
编一函数解决猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个,到第四天早上再吃时,见只剩下一个桃子了。
求第一天共摘了多少?(将结果打印出来)
#include<stdio.h>
int main()
{
int n,x;
printf("请输入天数:");
scanf("%d",&n);
printf("请输入最后一天剩余:"); scanf("%d",&x);
int k = func(x,n);
printf("%d",k);
return 0;
}
int func(int x,int n)
{
if(n==1)
return x;
else
{
x=(x+1)*2;
return func(x,n-1);
}
}。