第二届腾飞杯软件设计大赛比赛题目v01.docx
《第二届腾飞杯软件设计大赛比赛题目v01.docx》由会员分享,可在线阅读,更多相关《第二届腾飞杯软件设计大赛比赛题目v01.docx(18页珍藏版)》请在冰豆网上搜索。
第二届腾飞杯软件设计大赛比赛题目v01
2013年通信与信息工程学院
第二届“腾飞杯”软件设计大赛笔试试卷
参赛考生姓名专业班级电话
E-mailQQ号码
题号
基础知识
编程应用与思维方式
算法综合
思维与创新能力
总分
得分
一、基础知识(总分40分,每题2分,得分:
评卷人:
)
1、以下C语句中,存在语法错误的是:
A)inta;floatb;B)inta,b;C)inta,D)autosignedinta,b;
floatb;
2、下面常量的表达,存在语法错误的是:
A)3.B)doublex=3.14;C)"'"D)'"'
inty=3;
xEy
3、执行下面的程序段,选择该程序的输出结果:
程序段:
inta;
printf("%c\n",a);
A)变量a空间里本身固有的值,这个值具有随机性;B)由C语言或操作系统自动产生一个随机数;
C)字符aD)不会有输出,因为变量a没有赋值,所以a应该没有值;
4、以下4个程序片段存在语法错误的是:
A)ints=0,i;B)doubles=0,i;
for(i=1;i<100;i++)for(i=1;i<100;i++)
s+=314/100/i;s+=3.14/100/i;
printf("%d\n",s);printf("%lf\n",s);
C)ints=0,i;D)doubles=0,i;
for(i=1;i<100;i++)for(i=1;i<100;i++)
s+=314/100%i;s+=314/100%i;
printf("%d\n",s);printf("%lf\n",s);
5、选择下面程序段的执行结果:
inti,j;
i=3,4+5,6*7;
j=(3,4+5,6*7);
printf("%d%d\n",i,j);
A)342B)4242C)423D)33
6、选择下面程序段的执行结果:
longi=6995;
doublej;
j=(double)i/1000;
printf("%d\n",sizeof(i));
A)8B)4C)6.995D)6995.0
7、选择下面程序段的执行结果(强调:
程序无语法错误!
):
inti=3,j=4,k;
k=j;
if(i>j);
k=i;
printf("%d",k);
i+=10;
k=i;
if(i>j);
k=j;
printf("%d\n",k);
A)34B)34C)413D)413
8、关于下面循环语句的描述正确的是(强调:
程序没有语法错误):
inti;
for(i=1;i>0;i++);
printf("%d",i);
A)这个循环是一个死循环B)这个循环将从1开始输出所有的正整数,直到永远
C)程序只有一个输出:
-2147483648D)程序将从1开始输出int类型范围内的所有正整数,它不是死循环
9、关于下面数组定义语句的描述中,错误的是:
inta[];
A)编译时会出现语法错误提示B)等价于:
int*a;以后可以按指针变量对a进行引用
C)数组长度不定,无法开辟空间D)由于长度不定,无法形成有效的数据类型,所以定义失败
10、对下面程序输出语句的描述中,全部正确的是:
chars1[80]="我,屌丝";
chars2[80]="屌丝逆袭!
";
printf("%s\n",s1+s2);
printf("%s\n",s1-s2);
s1=s2;
printf("%s\n",s1);
A)第一条printf()输出:
我,屌丝屌丝逆袭!
第二条printf()输出:
我,逆袭!
第三条printf()输出:
屌丝逆袭!
B)第一条printf()有语法错误,指针不能相加
第二条printf()输出两个字符串在内存中的首地址差值
第三条printf()前的赋值语句是错误的,因为数组名称是常量
C)第一条printf()输出:
我,屌丝屌丝逆袭!
第二条printf()格式符是%s,表达式结果为int,这是语法错误
第三条printf()输出:
屌丝逆袭!
D)第一条printf()有语法错误,指针不能相加
第二条printf()格式符是%s,表达式结果为int,虽然不存在语法错误,但存在“非法地址访问”的运行时致命错误
第三条printf()前的赋值语句是错误的,因为数组名称是常量
11、假设在32位系统中执行下面程序段,选择正确的输出结果:
char*cp;
int*ip;
float*fp;
double*dp;
printf("%d%d\n%d%d\n",sizeof(cp),sizeof(ip),sizeof(fp),sizeof(dp));
A)14B)1448C)44D)4444
4844
12、阅读下面的函数,选择对该函数描述正确的选项:
intfun(intn)
{
intm,t=0;
for(m=n;m;m/=10)
t=t*10+m%10;
returnn==t;
}
A)for循环中"m;"的写法有问题,至于什么问题我说不上来,因为从来没见过
B)程序中"returnn==t;"有问题,好像应该写成return(n+t);之类的吧
C)程序功能是判断n是否是"回文数"(例:
12321),是回文数返回1,否则返回0
D)程序计算n各个位上的数字之和,再比较和原数是否相同,相同返回1,否则返回0
13、下面4个函数都是将int类型的正整型值转换成十六进制字符串,有错误的函数是:
A)char*fun(intn)
{
chars[80],*p;
sprintf(s,"%X",n);
p=s;
returnp;
}
B)char*fun(intn)
{
char*p;
p=(char*)malloc(sizeof(char)*9);
sprintf(p,"%X",n);
returnp;
}
C)char*fun(intn)
{
staticcharres[80];
chars[80]={0};
inti;
for(i=1;n;n/=16,i++)
s[80-i-1]="0123456789ABCDEF"[n%16];
strcpy(res,s+(80-i));
returnres;
}
D)char*fun(intn)
{
staticcharres[80]={0};
inti;
for(i=0;n;n/=16,i++)
if(n%16<10)
res[80-i-1]='0'+n%16;
else
res[80-i-1]='A'+n%16-10;
strrev(res);
returnres;
}
14、下面的程序由一个子函数fun和一个主函数组成,请问,主函数中所有函数的调用总共涉及到多少个实际参数:
#include
intfun(int);
intfun(intn)
{
inti,s=1;
for(i=1;i<=n;i++)
s*=i;
returns;
}
voidmain(void)
{
intm,n;
printf("请输入两个数:
");
scanf("%d%d",&m,&n);
printf("从%d个球中取%d个球的组合共有%d种。
\n",m,n,fun(m)/fun(n)/fun(m-n));
}
A)5个B)3个C)11个D)搞不懂实参是什么
15、执行下面的程序,选择正确的输出结果:
voidmain(void)
{
inti=3,j=4,k;
k=++i+j++;
printf("%d%d%d\n",i,j,k);
{
inti=2;
k+=++i+j++;
printf("%d%d%d\n",i,j,k);
}
printf("%d%d%d\n",i,j,k);
}
A)458B)459C)458D)程序中有错误
361636183616
45836184616
16、执行下面的程序,选择正确的输出结果:
#include
intJc(int);
intJc(intn)
{
ints=1;
if(n>0)
s=n*Jc(n-1);
returns;
}
voidmain(void)
{
printf("%d\n",Jc(5));
}
A)55B)250C)120D)递归调用还没学
17、参看下面的程序段,关于程序的说法正确的是:
intn=3;
doublex=3.14;
charch;
...
printf("%s\n",f(x,3+5));
ch=g(f(3.0,n),5+1/2.0,'A');
...
A)程序中应该有错误,f和g不应该出现
B)程序中有两个用户自定义函数:
f()和g(),且它们的声明分别是:
intf(double,int);
intg(int,double,char);
C)程序中有两个用户自定义函数:
f()和g(),且它们的声明分别是:
char*f(double,int);
charg(char*,double,char);
D)程序有错误,f和g是未经说明的量,将产生语法错误
18、执行程序,选择正确的输出结果(假设运行环境为32位系统,即,int长度为4B):
#include
typedefstructMY_TYPE
{
inta;
char*