第五届全国ITAT教育工程就业技能大赛预赛试题
C语言程序设计
C语言程序设计
一、单选题(共计60题)
(1) 在下述程序中,if (i>j) 语句共执行的次数是( )。C
main()
{ int i=0,j=14,k=2,s=0;
for(;;)
{ i+= k ;
if(i>j)
{ printf(“%d”,s);
break ;
}
s+=i ;
}
}
A、6
B、9
C、7
D、12
(2) 若要用fopen函数打开一个二进制文件,该文件要既能读也能写,当文件不存在时新建文件,则文件打开方式应是( )。C
A、"ab+"打开文件进行读/写/追加
B、"rb+打开文件进行读/写"
C、"wb+"新建文件进行读/写
D、"ab"打开文件进行追加
(3) 下列程序的输出结果是( )。C
对于数组,如果是static类型的,则如果没有全部赋值则系统全部赋值为0;如果是普通的数组,如果没有赋值就暂时没有值。还有,对于二位数组,如果元素全部写出,可以省略行长度。 代表第几个元素,因为struct student 类型的数组是三个数代表一个元素,所以2+6%4=4选c
struct student { int a, b, c; };
main()
{ struct student stu[2]={{2,3,4},{5,6,7}}; int t;
t=stu[0].a+stu[1].b%stu[0].c;
printf("%d \n",t); }
A、0
B、1
C、4
D、5
(4) 对于浮点型变量f,能实现对f中的值在小数点后第四位进行四舍五入的表达式是( )。C
A、f=(f*1000+0.5)/1000.0
B、f=(f*1000+0.5)/1000
C、f=(int )(f*1000+0.5)/1000.0//0.00720.007
0.0072*1000=7.2 7.2+5=7.7 7.7/1000=0.0077达不到预期的效果,所以要取整7/1000=0.007实现了对于小数点后第四位四舍五入的效果
D、f=(f/1000+0.5)*1000
(5) 现已定义整型变量int i=1; 执行循环语句“while(i++<5);”后,i的值为( )。C
A、1
B、5
C、6
D、以上三个答案均不正确
相当于NEXT域
(6) 下列程序的输出结果是( )。C
struct LH
{ int n; struct LH *m;}p[4];
main()
{ int i;
for(i=0;i<2;i++)
{
p[i].n = i; p[i].m=&p[i+1];
}
p[i].m=p;最后指针p的next域指向头结点,所以形成一个循环链表
printf(“%d,%d\n”,(p[1].m)->n ,p[2].m->n);
}
A、0,1
B、0,2
C、0,0//因为他没有赋值,所以系统自动赋零
D、程序出错
(7) 下列程序的运行结果是( )。B
#include "stdio.h"
int f(int a)
{ switch (a)
{ case 0:return 0;
case 1:
case 2:return 1;
}
return(f(a-2)+f(a-3));f(7)+6=5+4+3+4=3+2+2+1+1+0+2+1=1+0+1+1+1+1+1+1=7
}
main()
{ int b;
b=f(9);
printf(“%d\n”,b);
}
A、10
B、7
C、8
D、9
(8) 以下程序的输出结果是( )。A
int f(int b[], int m , int n)
{int i,s=1;
for(i=m ;I < n ; i++)
{
b[i]=b[i-1]+b[i+1];
s+=b[i];
}
return s; }
main()
{int x,a[]={1,2,3,4,5,6,7,8,9,10};
x=f(a,3,5);
printf("%d\n",x); }
A、23它执行完之后,在for语句中,它会自动把s,a【3】等的值更新,等下次在用的时候会自动调用更新的值。
B、26
C、42
D、35
(9) 以下程序运行后,输出结果是( )。C
main()
{ char ch[3][4]={"123","456","78"},*p[3];int i;
for(i=0;i<3;i++) p[i] = ch[i]; //代表第几行
for(i=0;i<3;i++) printf("%s", p[i]);
}
A、123456780
B、123 456 780
C、12345678//因为不是static所以不会自动赋零,有几个就输出几个
D、147
(10) 桌上有白球和黑球共5个,a、b、c、d、e分别表示这5个球的颜,取值为0、1分别代表白球、黑球。则以下能表示a是黑球,其余至少有两个白球的表达式是( )。C
A、!a&& (b+c+d+e)==2//直接排除
B、a&& (b+c+d+e)>2//三个黑的
C、a&& (b+c+d+e)<=2//后面作为一个整体
D、!a&& (b+c+d+e)==3//直接排除
(11) 下列程序的输出结果是( )。B
#include "stdio.h"
int f(int n)
{ static int k, s;//c++strcpy函数用法静态变量,初值系统自动赋零。
n--;
for(k=n; k>0; k--)
s += k;
return s;
}
void main( )
{ int k;
k=f(2);
printf("(%d, %d)", k, f(k));
}
A、(3, 3)
B、(1, 1)//n=2,然后n=1,for循环时,k=1,s=1
第二次的时候,f(1)中,n--=0,k=0.直接跳出循环。因为上次时s为1,所以返回值仍为1.所以是(1,1)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论