2009年4月全国计算机等级考试二级C笔试考前全真模拟试题(29)
来源:优易学  2011-11-3 12:32:03   【优易学:中国教育考试门户网】   资料下载   IT书店

  2009年4月,全国计算机等级二级C考试你准备好了没?考计算机等级二级C语言考试的朋友可以多关注一下青年人网站为大家整理的2009年4月,全国计算机等级二级C语言考前练习!希望对大家的备考有好的帮助!青年人网站祝各位考个好成绩!大家每天都来练习哦!不断的加强巩固!每天都有更新哦!
  (1)下面的if语句与y=(x>=10)?3*x-11:(x<1)?x:2'x.1;的功能相同,请补充完整。
  If(  【1】  )
  if(  【2】  )y=2*x-1;
  else y=x;
  else y=3*x-11:
  答案:【1】x<10
  【2】x>=1
  评析:条件表达式的一般形式为:表达式l?表达式2:表达式3
  条件运算符的执行顺序:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值;若表达式1的值为O(假),则求解表达式3,表达式3的值就是整个条件表达式的值。y。(x>。10)?3。x-1 1:(x>=1)?x:2*x-1;的功能是先求(x>=1)?x:2*x-1:的值,所的的结果再与前面的语句构成条件表达式进行求值。所以【1】应该填x<10,【2】应该填x>=1。

  (2)以下程序中用户由键盘输入一个文件名,然后输入一串字符(用拌结束输入)存放到此
  文件中,形成文本文件,并将字符的个数写到文件的尾部。请填空。
  #include
  main()
  { FILE *fp;
  char ch,fname[32];im count=0;
  printf("Input the filename:");
  scanf("%s",fname);
  if((币=fopen( 【3】 ,"w+"))==NULL)
  { print印Can't open file:%s\n",fname};exit(0);}
  printf("Enter data:in");
  while((ch=getchar())!_1≠)')
  { fputc(ch,fp);count++;}
  fprintf( 【4】 ,"\n%d\n",count);
  fclose(fp);
  }
  答案:【3】fname
  【4】fp
  评析:fopen()函数实现打开文件的功能,通常的调用方式为:FILE*fp;fp=fopen(文件名,使用文件方式),因此,第一个横线处要求填写要打开文件的名字fname。fprintf()函数的一般调用方式为:fprintf (文件指针,格式字符串,输出表列),所以第二个横线处应填写fb。

  (3)函数void fun(noat*sn,int n)的功能是:根据以下公式计算s,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。请补全程序。
  S=I-1/3+1/5-1/7+...+1/(2n+1)
  void fun(float*sn,int n)
  {  float s=O.O,w,f=-1.0;
  int i=0:
  for(I=0;i<=n;i++)
  { f= 【5】 *f;
  w=f/(2*i+1);
  S+=W:
  }
  【6】  =s;
  }
  答案:【5】-1或-1.0
  【6】*sn
  评析:由于在对s求和时,相诹较畹姆鸥蘸孟喾矗诤齠un中没有对数据进行取反的操作,故第一空的目的是对数据进行取反,以保证序列中相邻两项的符号不同。故第一个应填-1或-1.0。在执行完循环体后,要将求和结果通过指针参数的形式传递给调用fun的函数,故第二空应填*sn。

  (4)下面的函数strcat(strl,str2)实现将字符串str2拼接到字符串strl后面的功能。请填空使之完整。
  Char*strcat(strl,str2)
  char*strl.*str2;
  { char*t=strl;
  while( 【7】 )strl++;
  while( 【8】 );
  return(t);}
  答案:【7】*strl或*str1!='\0'或*str1!=0或*strl!=NULL
  【8】*strl++=*str2++或*strl++=*str2,*str2++
  评析:函数strcat(strl,str2)实现将字符串str2连接到字符串strl后面,所以首先要找到字符串strl的串尾,根据c语言的语法规定,一个串的串尾一定是一个隐含字符"\0",而在程序中,对字符串中字符的访问是通过两/卜指针变量来完成的,因此要找到字符串strl的串尾,要判断*strl是否为"\0",要找到字符串str2的串尾,要判断*str2是否为"\0",程序中必须可以使字符串中字符逐一顺序体现,所以在题中我们应填写"*str1"和"*strl++=*str2++"。

  (5)以下函数fun用于求两个整数a和b的最大公约数。
  fun(a'b)
  int a'b;
  {int I,J,m,n;
  if(a>b)
  {m=a;a=b; 【9】 ;}
  i=a.j=b;
  while((n= 【10】 )!=O)
  {j=i;i= 【11】 ;}
  retum(i);
  }
 答案:【9】b=m
  【10】j%i
  【11】n
  评析:函数中的变量i和j分别存放两个形参的最小数和最大数,在语句i=a和i=b执行之前,要将a和b分别变为最小数和最大数,当a>b时,程序使用中间变量将两者交换,所以题中第一个空中应当填写"b=m";为求两个整数的最大公约数,程序的where循环条件必须为j整除i成立,所以题_中第二个空中应当填写"j%i";程序要通过i的值返回最大公约数,因此在循环中要将每次整除的公约数赋给i,以保证最后返回的是两个整数的最大公约数,所以第三个空中应当填写"n"。

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训