CSDN博客

img wangrui_dandan

2004年9月份C试卷和答案(摘自无忧考网)

发表于2004/10/29 11:07:00  1292人阅读

分类: ∵编程研究∴

2004年9月份C试卷和答案(摘自无忧考网)
  [原创]2004年9月二级C试题录入纠正和正确答案版

一,选择题
1,与十进制数200等值的十六进制数为(C)
A)A8            B)A4           C)C8           D)C4
2,DOS文件系统的组织结构属于(D)
A)星形结构 B)网形结构 C)环形结构 D)树形结构
3,对存储器按字节进行编址,若某存储器芯片共有10根地址线,则该存储器芯片的存储容量为(A)
A)1KB  B)2KB  C)4KB  D)8KB
4,在DOS环境下,代表键盘和显示器的设备文件名为(B)
A)PRN  B)CON  C)NUL  D)LPT
5,计算机网络的主要特点是(C)
A)运算速度快 B)运算精度高 C)资源共享  D)人机交互
6,磁盘处于写保护状态时其中的数据(B)
A)不能读出,不能删改  B)可以读出,不能删改
C)不能读出,可以删改  D)可以读出,可以删改
7,从Windows环境进入MS—DOS方式后,返回Windows环境的DOS命令为(A)
A)EXIT  B)QUIT  C)RET  D)MSDOS
8,在Windows环境下,若资源管理器左窗口中的某文件夹左边标有"+"标记,则表示(B)
A)该文件夹为空                B)该文件夹中含有子文件夹
C)该文件夹中只包含有可执行文件  D)该文件夹中包含系统文件
9,在Windows菜单中,暗淡的命令名项目表示该命令(A)
A)暂时不能使用  B)正在执行 C)包含下一层菜单 D )包含对话框
10,在Windows环境下,单击当前窗口中的按钮" ",其功能是(C)
A)将当前应用程序转为后台运行  B)退出Windows后再关机
C)终止当前应用程序的运行   D)退出Windows后重新启动计算机
  
11.用C语言编写的代码程序B
A)可立即执行   B)是一个源程序
C)经过编译即可执行  D)经过编译解释才能执行 

12.结构化程序由三种基本结构组成,三种基本结构组成的算法C
A)可以完成任何复杂的任务 B)只能完成部分复杂的任务
C)只能完成符合结构化的任务  D)只能完成一些简单的任务 13. 以下定义语句中正确的是

13. 以下定义语句中正确的是C
A)char a='A'b='B';  B)float a=b=10.0;
C)int a=10,*b=&a;  D)float *a,b=&a; 

14.下列选项中,不能用作标识符的是D
A)_1234_ B)_1_2 C)int_2_ D)2_int_

15.有以下定义语句 double a,b; int w; long c;
若各变量已正确赋值,则下列选项中正确的表达式是C
A)a=a+b=b++ B)w%(int)a+b)
C)(c+w)%(int)a D)w=a==b; 

16.有以下程序
main()
{ int m=3,n=4,x;
  x=-m++;
  x=x+8/++n;
  printf("%d/n",x);
}
程序运行后的输出结果是D
A)3 B)5 C)-1 D)-2 

17.有以下程序
main()
{ char a='a',b;
  print("%c,",++a);
  printf("%c/n",b=a++);
}
程序运行后的输出结果是A
A)b,b B)b,c C)a,b D)a,c 

18.有以下程序
main()
{ int m=0256,n=256;
  printf("%o %o/n",mn,n);
}
程序运行后的输出结果是C
A)0256 0400 B)0256 256 C)256 400 D)400 400 

19.有以下程序
main()
{ int a=666,b=888;
  printf("%d/n",a,b);
}
程序运行后的输出结果是B
A)错误信息 B)666 C)888 D)666,888 

20.有以下程序
main()
{ int i;
  for(i=0;i<3;i++)
    switch(i)
    {
      case 0:printf("%d",i);
      case 2:printf("%d",i);
      default:printf("%d",i);
    }
}
程序运行后的输出结果是 C
A)022111 B)021021 C)000122 D)012 

21.若x和y代表整型数,以下表达式中不能正确表示数学关系¦x-y¦<10的是 C
A)abs(x-y)<10   B)x-y>-10&& x-y<10
C)@(x-y)<-10¦¦!(y-x)>10  D)(x-y)*(x-y)<100 

22.有以下程序
main()
{
int a=3,b=4,c=5,d=2;
  if(a>b)
   if(b>c)
    printf("%d",d++ +1);
  else
    printf("%d",++d +1);
  printf("%d/n",d);
}
程序运行后的输出结果是 A
A)2 B)3 C)43 D)44 

23.下列条件语句中,功能与其他语句不同的是 D
A) if(a) printf("%d/n",x); else printf("%d/n",y);
B) if(a==0) printf("%d/n",y); else printf("%d/n",x);

 
  作者: 61.190.0.*     2004-9-22 23:57   回复此发言  
 
2
2004年9月份C试卷和答案(摘自无忧考网)
  C) if (a!=0) printf("%d/n",x); else printf("%d/n",y);
D) if(a==0) printf("%d/n",x); else printf("%d/n",y); 

24.有以下程序
main()
{ int i=0,x=0;
  for (;;)
  {
    if(i==3¦¦i==5) continue;
    if (i==6) break;
    i++;
    s+=i;
  };
  printf("%d/n",s);
}
程序运行后的输出结果是 D
A)10 B)13 C)21 D)程序进入死循环 

25.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是B
A)for(i=1,p=1;i<=5;i++) p*=i;
B)for(i=1;i<=5;i++){ p=1; p*=i;}
C)i=1;p=1;while(i<=5){p*=i; i++;}
D)i=1;p=1;do{p*=i; i++; }while(i<=5); 

26.有以下程序
main()
{ char a,b,c,d;
  scanf("%c,%c,%d,%d",&a,&b,&c,&d);
  printf("c,%c,%c,%c/n",a,b,c,d);

若运行时从键盘上输入:6,5,65,66<回车>.则输出结果是A
A)6,5,A,B B)6,5,65,66 C)6,5,6,5 D)6,5,6,6 

27)以下能正确定义二维数组的是C
A)int a[][3];  B)int a[][3]=2{2*3};
C)int a[][3]={}; D)int a[2][3]={{1},{2},{3,4}}; 

28. 有以下程序 
int f(int a)
{ return a%2; }
main()
{ int s[8]={1,3,5,2,4,6},i,d=0;
  for (i=0;f(s[i]);i++) d+=s[i];
  printf("%d/n",d);
}
程序运行后的输出结果是 A
A)9 B)11 C)19 D)21 

29.若有以下说明和语句,int c[4][5],(*p)[5];p=c;能正确引用c数组元素的是D
A)p+1            B)*(p+3)        C)*(p+1)+3       D)*(p[0]+2])
30.有以下程序  
main()
{ int a=7,b=8,*p,*q,*r;
  p=&a;q=&b;
  r=p; p=q;q=r;
  printf("%d,%d,%d,%d/n",*p,*q,a,b);
}
程序运行后的输出结果是 C
A)8,7,8,7 B)7,8,7,8 C)8,7,7,8 D)7,8,8,7 

31.s12和s2已正确定义并分别指向两个字符串.若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是 D
A)if(s1>s2)S;   B)if(strcmp(s1,s2))S;
C)if(strcmp(s2,s1)>0) S;  D)if(strcmp(s1,s2)>0)S; 

32.设有定义语句
int x[6]={2,4,6,8,5,7},*p=x,i;
要求依次输出x数组6个元素中的值,不能完成此操作的语句是D
A)for(i=0;i<6;i++) printf("%2d",*(p++));
B)for(i=0;i<6;i++) printf("%2d",*(p+i));
C)for(i=0;i<6;i++) printf("%2d",*p++);
D)for(i=0;i<6;i++) printf("%2d",(*p)++); 

33.有以下程序
#include <stdio.h>
main()
{int a[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;
  *q=*(p+5);
   printf("%d %d/n",*p,*q);
}
程序运行后的输出结果是A
A)运行后报错 B)6 6   C)6 11 D)5 10 

34有以下定义和语句
int a[3][2]={1,2,3,4,5,6,},*p[3];
p[0]=a[1];
则*p[0]+1)所代表的数组元素是C
A)a[0][1] B)a[1][0] C)a[1][1] D)a[1][2]
35.有以下程序
main()
{char str[][10]={"China","Beijing"},*p=str;
  printf("%s/n",p+10);
}
程序运行后的输出结果是B
A) China  B)Bejing C)ng D)ing 

35.有以下程序
main()
{char s[]="ABCD",*p;
  for(p=s+1;p<s+4;p++)printf("%s/n",p);
}
程序运行后的输出结果是D
A) ABCD    B)A   C)B   D)BCD
    BCD         B       C      CD
    CD           C       D       D
    D             D

36.有以下程序
main()
{char s[]="ABCD",*p;
  for(p=s+1;p<s+4;p++)  printf("%s/n",p);}
运行后的输出结果是D
A)ABCD           B)A         C)B                       D)BCD
   BCD                B             C                           CD  
   CD                  C             D                           D
   D                    D

37.在函数调用过程中,如果函数funA调用了函数 funB,函数funB又调用了函数funA,则B
A)称为函数的直接递归调用 B)称为函数的间接递归调用

 
  作者: 61.190.0.*     2004-9-22 23:57   回复此发言  
 
3
2004年9月份C试卷和答案(摘自无忧考网)
  C)称为函数的循环调用  D)C语言中不允许这样的递归调用

38.已有定义:int i,a[10],*p;,则合法的赋值语句是D
A)p=100;  B)p=a[5];  C)p=a[2]+2; D)p=a+2;

39.以下叙述中正确的是 A
A)局部变量说明为static存储数,其生存期将得到延长
B)全局变量说明为static存储类,其作用域将被扩大
C)任何存储类的变量在未赋初值时,其值都是不确定的
D)形参可以使用的存储类说明符与局部变量完全相同

40.设有定义语句:char c1=92,c2=92;,则以下表达式中值为零的是A
A)c1^c2  B)c1&c2  C)~c2  D)c1¦c2

41.程序中对fun函数有如下说明  
void *fun();
此说明的含义是: C
A)fun了数无返回值
B)fun函数的返回值可以是任意的数据类型
C)fun函数的返回值是无值型的指针类型
D)指针fun指向一个函数,该函数无返回值

42.有以下程序
main()
{ char s[]"Yes/n/No",*ps=s;
  puts(ps+4);
  *(ps+4)=0;
  puts(s);
}
程序运行后的输出结果是(选项D中的第一行是空行) B
A)n/No  B)/No  C)n/NO  D)
  Yes         Yes     Yes          /No
  /No                    /No

43.有以下程序 B
main()
{ unsigned int a;
  int b=-1;
  a=b;
  printf("%u",a);
}
程序运行后的输出结果是
A)-1  B)65535  C)32767  D)-32768

44.有以下程序
void fun(int *a,int i,int j)
{ int t;
  if(i<j)
  { t=a[i];a[i]=a[j];a[j]=t;
    i++; j--;
    fun(a,i,j);
  }
}
main()
{ int x[]={2,6,1,8},i;
  fun(x,0,3);
  for(i=0;i<4;i++) printf("%2d",x[i]);
  printf("/n");
}
程序运行后的输出结果是  C
A)1 2 6 8  B) 8 6 2 1 C) 8 1 6 2 D)8 6 1 2

45.有以下说明和定义语句
struct student
{ int age; char num[8];};
struct student stu[3]={{20,"200401"},{21,"200402"},{10/9,"200403"}};
struct student *p=stu;
以下选项中引用结构体变量成员的表达式错误的是 D
A) (p++)->num  B)p->num C)(*p).num D)stu[3].age

46.有以下程序A
main()
{ int x[]={1,3,5,7,2,4,6,0},i,j,k;
for(i=0;i<3;i++)
  for (j=2;j>=i;j--)
    if(x[j+1]>x[j]){  k=x[j];x[j]=x[j+1];x[j+1]=k;}
  for(i=0;i<3;i++)
    for(j=4;j<7-i;j++)
     if(x[j+1]>x[j]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}
  for (i=0;i<3;i++)
    for(j=4;j<7-i;j++)
     if(x[j]>x[j+1]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}
  for (i=0;i<8;i++) printf("%d",x[i]);
  printf("/n");
}
程序运行后的输出结果是:
A)75310246  B)01234567   C)76310462  D)13570246

47.有如下程序
#include <stdio.h>
main()
{FILE  *fp1;
   fp1=fopen("f1.txt","w");
   fprintf(fp1,"abc");
   fclose(fp1);
}
若文本文件f1.txt中原有内容为:good,则运行以上程序后文件f1.txt中的内容为 C
A)goodabc  B)abcd  C)abc  D)abcgood

48~50.以下程序的功能是:建立一个带有头结点的单向链表,并将存储在数组中的
字符依次转储到链表的各个结点中,请从与下划线处号码对应的一组选若中选择出
正确的选项. 48C 49A  50B
#include <stdlib.h>
stuct node
{ char data; struct node *next;};
  (48)  CreatList(char *s)
{ struct node *h,*p,*q);
  h=(struct node *) malloc(sizeof(struct node));
  p=q=h;
  while(*s!='/0')
  {  p=(struct node *) malloc(sizeof(struct node));
     p->data=  (49)  ;
     q->next=p;
     q=  (50)  ;
     s++;
  }
  p->next='/0';
  return h;
}
main()
{ char str[]="link list";
  struct node *head;
  head=CreatList(str);
  ...
}
(48)A)char *  B)struct node   C) struct node*  D) char
(49)A)*s  B)s   C)*s++   D)(*s)++

 
  作者: 61.190.0.*     2004-9-22 23:57   回复此发言  
 
4
2004年9月份C试卷和答案(摘自无忧考网)
  (50)A)p->next  B)p   C)s D)s->next
二,填空题
1.在64位高档微机中,CPU能同时处理  [8]  个字节的二进制数据.
2.E-mail地址由域名和用户名两部分组成,它们之间用@分隔,其中在@后面的部分 是  [域名]  
3.Windows窗口一般由标题栏,菜单栏,控制按钮等部分组成.为了移动窗口,则要用鼠标拖动  [标题栏  .
4.计算机软件分为系统软件和应用软件,UNIX系统属于  [系统软件]  .
5.在Windows环境下,为了将屏幕内容存入剪贴板,应按  [print screen sysrq]  键.
6.以下程序段的输出结果是  [11]  
int i=9;
printf("%o/n",i);
7.以下程序运行后的输出结果是  [25 21 37]  .
main()
{ int a,b,c;
  a=25;
  b=025;
  c=0x25;
  printf("%d  %d  %d/n",a,b,c);
}
8.以下程序运行后的输出结果是  [24]  .
main()
{ int p[7]={11,13,14,15,16,17,18};
  int i=0,j=0;
  while(i<7 && p[i]%2==1) j+=p[i++];
  printf("%d/n",j);
}
9.以下程序运行后的输出结果是  [2 1]  .
main()
{ int x=1,y=0,a=0,b=0;
  switch(x)
   {case 1:switch(y)
   { case 0:a++; break;
                          case 1:b++; break;
   }
  case 2:a++;b++; break;
   }
  printf("%d  %d/n",a,b);
}
10.以下程序运行后的输出结果是  [92]  .
main()
{ int a[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};
  int i=0,j=0,s=0;
  while(i++<4)
  {
    if(i==2¦¦i==4) continue;
    j=0;
    do{ s+= a[j]; j++; } while(j<4);
  }
  printf("%d/n",s);
}
11.以下程序运行后的输出结果是  [gae]  .
main ()
{ char a[]="Language",b[]="Programe";
  char *p1,*p2; int k;
  p1=a; p2=b;
  for(k=0;k<=7;k++)
    if(*p1+k)==*(p2+k)) printf("%c",*(p1+k))_;
}

12.以下程序运行后的输出结果是  [1*3*5*7*9]  .这到题还有一种是if(i%2==1)  结果是*2*4*6*8*
main()
{ char a[]="123456789",*p; int i=0;
  p=a;
  while(*p)
  { if(i%2==0) *p='*';
    p++;i++;
   }
   puts(a);
}
13.以下程序中, for循环体执行的次数是  [4]  .
#define  N 2
#define  M N+1
#define  K M+1*M/2
main()
{ int i;
  for(i=1;i<K;i++)
  { ... ]
  ...
}
14,暂缺
15. 以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和.
请填空.16  &a[i]          17  a[i]
main()
{ int i,a[20],sum,count;
   sum=count=0;
   for(i=0;i<20;i++)  scanf("%d", [16]  );
   fro(i=0;i<20;i++)
   { if(a>0)
     { count++;
       sum+=  [17]  ;
     }
  }
  printf("sum=%d,count=%d/n",sum,count);
}
16.以下程序中,函数 sumColumM的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值.和值通过形参传回主函数输出.请填空.
答案:a[k][i]                *sum                     x,&s
#define  M 2
#define  N 4
void SumColumMin(int a[M][N],int *sum)
{ int i,j,k,s=0;
  for(i=0;i<N;i++)
  { k=0;
    for(j=1;j<M;j++)
      if(a[k][i]>a[j][i])k=j;
    s+= a[k][i]  ;
   }
  *sum  =s;
}
main()
{ int x[M][N]={3,2,5,1,4,1,8,3},s;
  SumColumMin( x,&s);
  printf("%d/n",s);
}
阅读全文
0 0

相关文章推荐

img
取 消
img