第五届全国ITAT教育工程就业技能大赛预赛试题
C语言程序设计
一、单选题(共计60题)
(1) 在下述程序中,if i>j 语句共执行的次数是( )。C
main()
{ int i=0,j=14,k=2,s=0;
  for;;
  { i+= k ;
    ifi>j
    { printf(“%d,s;
      break ;
    }
    s+=i ;
  }
}
 A6
 B9
 C7
 D12
(2) 若要用fopen函数打开一个二进制文件,该文件要既能读也能写,当文件不存在时新建文件,则文件打开方式应是( )。C
 A"ab+"打开文件进行读//追加
 B"rb+打开文件进行读/"
 C"wb+"新建文件进行读/
 D"ab"打开文件进行追加
(3) 下列程序的输出结果是( )。C
对于数组,如果是static类型的,则如果没有全部赋值则系统全部赋值为0;如果是普通的数组,如果没有赋值就暂时没有值。还有,对于二位数组,如果元素全部写出,可以省略行长度。      代表第几个元素,因为struct student 类型的数组是三个数代表一个元素,所以2+6%4=4c
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; }
 A0
 B1
 C4
 D5
(4) 对于浮点型变量f,能实现对f中的值在小数点后第四位进行四舍五入的表达式是( )。C
 Af=f*1000+0.5/1000.0
 Bf=f*1000+0.5/1000
 Cf=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实现了对于小数点后第四位四舍五入的效果
 Df=f/1000+0.5*1000
(5) 现已定义整型变量int i=1; 执行循环语句“whilei++<5;”后,i的值为( )。C
 A1
 B5
 C6
 D、以上三个答案均不正确
                                  相当于NEXT
(6) 下列程序的输出结果是( )。C
struct LH
{  int  n;  struct  LH *m;}p[4];
main()
{ int i;
fori=0;i<2;i++
p[i].n = i;  p[i].m=&p[i+1];
}
p[i].m=p;最后指针pnext域指向头结点,所以形成一个循环链表
printf(“%d,%d\n,p[1].m->n ,p[2].m->n;
}
 A0,1
 B0,2
 C0,0//因为他没有赋值,所以系统自动赋零
 D、程序出错
(7) 下列程序的运行结果是( )。B
#include "stdio.h"
int fint a
{ switch a
  { case 0return 0;
case 1
case 2return 1;
}
  returnfa-2+fa-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=f9;
printf(“%d\n,b;
}
 A10
 B7
 C8
 D9
(8) 以下程序的输出结果是( )。A
int fint b[], int  m , int n
{int i,s=1;
fori=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=fa,3,5;
printf"%d\n",x; }
 A23它执行完之后,在for语句中,它会自动把sa3】等的值更新,等下次在用的时候会自动调用更新的值。
 B26
 C42
 D35
(9) 以下程序运行后,输出结果是( )。C
main()
{ char ch[3][4]={"123","456","78"},*p[3];int i;
  fori=0;i<3;i++  p[i] = ch[i];  //代表第几行
  fori=0;i<3;i++  printf"%s", p[i];
}
 A123456780
 B123 456 780
 C12345678//因为不是static所以不会自动赋零,有几个就输出几个
 D147
(10) 桌上有白球和黑球共5个,abcde分别表示这5个球的颜,取值为01分别代表白球、黑球。则以下能表示a是黑球,其余至少有两个白球的表达式是( )。C
 A!a&&  b+c+d+e==2//直接排除
 Ba&&  b+c+d+e>2//三个黑的
 Ca&&    b+c+d+e<=2//后面作为一个整体
 D!a&&  b+c+d+e==3//直接排除
(11) 下列程序的输出结果是( )。B
#include "stdio.h"
  int fint n
  {  static int k, s;//c++strcpy函数用法静态变量,初值系统自动赋零。
      n--;
      fork=n; k>0; k--)
          s += k; 
      return s;
  }
  void main
  {  int k;
      k=f2;
      printf"%d, %d", k, fk));
  }
 A、(3, 3
 B、(1, 1//n=2,然后n=1,for循环时,k=1,s=1
第二次的时候,f1)中,n--=0,k=0.直接跳出循环。因为上次时s1,所以返回值仍为1.所以是(1,1)