首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 等级考试 > 考试试题 >

09年4月全国计算机等级二级C语言笔试练习(13)

2008-11-22 
C语言笔试练习

    特意为大家整理的09年4月全国计算机等级二级C语言考前练习,希望对大家的备考有好的帮助!

    1.若有以下说明和定义:
  fun(int*c){……}
  main()
  {int (*a)()=fun,*b(),w[10],c;
  …
  }
  在必要的赋值之后,对fun函数的正确调用语句是()
  A)a=a(w);
  B)(*a)(&c);
  C)b=*b(w);
  D)fun(b);

  2.指针变量p的基类型为double,并已指向一连续存储区,若p中当前的地址值为65490,则执行p++后,p中的值为()
  A)65490
  B)65492
  C)65494
  D)65498

  3.某个C程序中有4个函数t、u、v和w,执行时t调用了u和v,u调用了t和w,v调用了w,w调用了t和v。以下叙述中正确的是()
  A)这4个函数都间接递归调用了自己
  B)除函数t外,其他函数都间接递归调用了自己
  C)除函数u外,其他函数都间接递归调用了自己
  D)除函数v和w外,其他函数都间接递归调用了自己

  4.设有如下的程序段:
  inta[]=(1,2,3,4,5), *t;
  t=a;
  则下列说法正确的是()
  A)a和t的内容相同
  B)a数组的长度和t所指的字符串长度相等
  C)a和t完全相同
  D)指针变量t指向数组a的第一个元素45.若定义了以下函数:
  5.void f(……)
  {……
  *p=(double*)malloc(10*sizeof(double));
  ……
  }
  p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是()
  A)double*p
  B)float**p
  C)double**p
  D)float*p

  6.有以下程序:
  #defineH15
  #defineH2H1+1
  #defineH3H2*H2/2
  main()
  {ints=0,k=H3;
  while(k--)s++;
  printf("%d\n",s);
  }
  程序的输出结果是()
  A)30
  B)10
  C)29
  D)19

  7.下列程序的输出结果是()
  main()
  { char ch[2][5]={"6934","8254"},*p[2];
  int i,j,s=0;
  for(i=0;i<2;i++)
  p[i]=ch[i];
  for(i=0;i<2;i++)
  for(j=0;p[i][j]>′\0′&&p[i][j]<=′9′;j+=2)
  s=10*s+p[i][j]-′0′;
  printf("%d\n",s);
  }
  A)6385
  B)69825
  C)63825
  D)693825

  8.以下程序
  #include
  main()
  {char a1[80],a2[80],*s1=a1,*s2=a2;
  gets(s1);gets(s2);
  if(!strcmp(s1,s2))printf("*");
  else printf("#");
  printf("%d\n",strlen(strcat(s1,s2)));
  }
  如果从键盘上输入:
  book<回车>
  book<空格><回车>
  则输出结果是()
  A)*8
  B)#9
  C)#6
  D)*9

  9.已知字符′0′的ASCII码的十进制数为48,并且数组的第0个元素在低位,有以下程序
  #include
  main()
  {
  union{int i[2];long k;char c[4];}r,*s=&r;
  s->i[0]=0x39;s->i[1]=0x38;printf("%c\n",s->c[0]);
  }
  程序运行后的输出结果是()
  A)39
  B)9
  C)38
  D)8

  10.若有下面的说明和定义,则sizeof(struct aa)的值是()
  struct aa
  { int r1;double r2;float r3;
  union uu {char u1[5];
  long u2[2];
  } ua;
  } mya;
  A)30
  B)29
  C)24
  D)22

  答案:1.B 2.D 3.A 4.D 5.C 6.B 7.A 8.B 9.B 10.D

    11.有以下程序:
  main()
  {unsigned char a,b;
  a=4|3;
  b=4&3;
  printf("%d%d\n",a,b);
  }
  执行后输出结果是()
  A)70
  B)07
  C)11
  D)430

  12.下面程序的功能是输出以下形式的金字塔图案:
  *
  ***
  *****
  *******
  main()
  {int i,j;
  for(i=1;i<=4;i++)
  {for(j=1;j<=4-i;j++)printf(" ");
  for(j=1;j<=;j++)printf("*");
  printf("\n");
  }
  }
  在下划线处应填入的是()
  A)i
  B)2*i-1
  C)2*i+1
  D)i+2

  13.有以下程序:
  void sort(int a[],int n)
  {int i,j,t;
  for(i=0;i<n-1;i+=2)
  for(j=i+2;j<n;j+=2)
  if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}
  }
  main()
  {int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
  sort(aa,10);
  for(i=0;i<10;i++)printf("%d",aa[i]);
  printf("\n");
  }
  其输出结果是()
  A)1,2,3,4,5,6,7,8,9,10,
  B)10,9,8,7,6,5,4,3,2,1,
  C)9,2,7,4,5,6,3,8,1,10,
  D)1,10,3,8,5,6,7,4,9,2,

  14.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是(
  A)char s[10]="abcdefg";
  B)char t[]="abcdefg",*s=t;
  C)char s[10];s="abcdefg";
  D)char s[10];strcpy(s,"abcdefg");

  15.有以下程序:
  #include<string.h>
  main(int argc,char * argv[])
  {int i,len=0;
  for(i=1;i<argc;i+=2)len+=strlen(argv[i]);
  printf("%d\n",len);
  }
  经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行:
  ex abcd efg h3 k44
  执行后输出结果是()
  A)14
  B)12
  C)8
  D)6

  16.有以下程序:
  void f(int a[],int i,int j)
  {int t;
  if(i<j)
  {t=a[i];a[i]=a[j];a[j]=t;
  f(a,i+1,j-1);
  }
  }
  main()
  {int i,aa[5]={1,2,3,4,5};
  f(aa,0,4);
  for(i=0;i<5;i++)printf("%d,",aa[i]);printf("\n");
  }
  执行后的输出结果是()
  A)5,4,3,2,1,
  B)5,2,3,4,1,
  C)1,2,3,4,5,
  D)1,5,4,3,2

  17.有以下程序:
  struct STU
  {char name[10];
  int num;
  int Score;
  };
  main()
  {struct STU s[5]={{"YangSan",20041,703},{"LiSiGuo",20042,580},
  {"WangYin",20043,680},{"SunDan",20044,550},
  {"Penghua",20045,537}},*p[5],*t;int i,j;
  for(i=0;i<5;i++)p[i]=&s[i];
  for(i=0;i<4;i++)
  for(j=i+1;j<5;j++)
  if(p[i]->Score>p[j]->Score)
  {t=p[i];p[i]=p[j];p[j]=t;}
  printf("%d%d\n",s[1].Score,p[1]->Score);
  }
  执行后输出结果是()
  A)550 550
  B)680 680
  C)580 550
  D)580 680

  18.有以下程序:
  # include<stdlib.h>
  struct NODE{
  int num;
  struct NODE*next;
  };
  main()
  {struct NODE*p,*q,*r;
  int sum=0;
  p=(struct NODE*)malloc(sizeof(struct NODE));
  q=(struct NODE*)malloc(sizeof(struct NODE));
  r=(struct NODE*)malloc(sizeof(struct NODE));
  p->num=1;q->num=2;r->num=3;
  p->next=q;q->next=r;r->next=NULL;
  sum+=q->next->num;sum+=p->num;
  printf("%d\n",sum);
  }
  执行后输出结果是()
  A)3
  B)4
  C)5
  D)6

  19.有以下程序:
  # include<stdio.h>
  main()
  {FILE*fp;int i,k=0,n=0;
  fp=fopen("d1.dat","w");
  for(i=1;i<4;i++)fprintf(fp,"%d",i);
  fclose(fp);
  fp=fopen("d1.dat","r");
  fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);
  fclose(fp);
  }
  执行后输出结果是()
  A)12
  B)1230
  C)123
  D)00

  20.有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END;语句的作用是使位置指针从文件末尾向前移2*sizeof(int)字节)
  # include<stdio.h>
  main()
  {FILE*fp;int i,a[4]={1,2,3,4},b;
  fp=fopen("data.dat","wb");
  for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),1,fp);
  fclose(fp);
  fp=fopen("data.dat","rb");
  fseek(fp,-2L*sizeof(int),SEEK_END);
  fread(&b,sizeof(int),1,fp);/*从文件中读取sizeof(int)字节的数据到变量b中*/
  fclose(fp);
  printf("%d\n",b);
  }
  执行后输出结果是()
  A)2
  B)1
  C)4
  D)3

  答案:1.A 2.B 3.C 4.C 5.D 6.A 7.C 8.B 9.B 10.D

3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.com/exam/

热点排行