二级C语言笔试6

(总分100,考试时间90分钟)
一、选择题
1. 设有以下语句: 
     charx=3,y=6,z; 
    z=x^y<<2; 
    则z的二进制值是(    )。
A. 00010100         B. 00011011
C. 00011100         D. 00011000
2. 以下有关宏的描述不正确的是(    )。
A. 宏定义不做语法检查         B. 双引号中出现的宏名不进行替换
C. 宏名无类型         D. 宏名必须用大写字母表示
3. 程序设计的任务包括(    )。
A. 编写程序代码并上机调试         B. 确定所用数据结构
C. 确定所用算法         D. 以上选项均正确
4. 有以下程序 
    #include<stdio.h> 
    main() 
    int k=5,n=0; 
    while(k>0) 
    switch(k) 
    defhult:break; 
    case 1:n+=k: 
    case 2: 
    case 3:n+=k; 
     
    k--; 
     
    printf("%d\n",n); 
     
    程序运行后的输出结果是
A. 0         B. 4
C. 6         D. 7
5. 以下程序的运行结果是(    )。 
    #include<stdio.h> 
    main() 
   int a=3,b=4,c=8,d=4,m=1,n=3; 
    printf("%d\n",(m=a>b)&&(n=c>d)); 
    
A. 0         B. 1
C. 2         D. 3
6. 下列选项中,不属于数据模型所描述的内容的是(    )。
A. 数据类型         B. 数据操作
C. 数据结构         D. 数据约束
7. 下列说法正确的是(    )。
A. auto和register将声明的对象说明为自动存储类对象,这些对象可用在函数中或函数外
B. 将变量其定义为static类型,则其初值默认为随机值
C. typedef说明符并不会为对象预留存留空间
D. 如果一个对象被声明为register,则埘它应用一元运算符&,意征取得其存储的地址
8. 若已包括头文件<stdio.h>和<string.h>,运行下面程序的输出结果是(    )。 
    chars1[10]="12345",s2[10]="089",s3[]="67"; 
    strcat(strcpy(s1,s2),s3); 
    puts(s1);
A. 08967         B. 0894567
C. 089567         D. 089567
9. 设y为整型变量,a=6,a的地址为E2000,b=14,b的地址为E2001;执行语句b=&a;y=&a;后Y的值为(    )。
A. E2000         B. E2001
C. 6         D. 14
10. 设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是(    )。
A. (EXP==0)         B. (EXP!=0)
C. (EXP==1)         D. (EXP!=1)
11. 有下列程序: 
    main() 
    int m,n,p; 
    scanf("m=%dn=%dp=%d",&m,&n,&p); 
    printf("%d%d%d\n",m,n,p); 
     
    若想从键盘上输入数据,使变量m中的值为123,n中的值为456,P中的值为789, 
    则正确的输入是(    )。
A. m=123n=456p=789         B. m=123 n=456 p=789
C. m=123,n=456,p=789         D. 123 456 789
12. 以下程序段的输出结果为(    )。 
    static char a[]="programme"; 
    char*p; 
    p=a; 
    for(p=a;p<a+8;p+=2) 
    putchar(*p);
A. programme         B. porm
C. 有语法错误         D. prog
13. 以下函数findmin拟实现存数组中查找最小值作为函数值返回,但程序中有错导致不能实现预定功能。 
    #define MAX 2147483647 
    int findmin(int x[],int n) 
    int i,min; 
    min=MAX; 
    for(i=0;i<n;i++) 
    if(min<x[i])min=x[i]; 
     
    造成错误的原因是(    )。
A. 定义语句int i,min;中min未赋初值
B. 赋值语句min=MAN;中,不应给min赋MAX值
C. 语句if(min<X[i])min=X[i];中判断条件设置错误
D. 赋值语句min=MAX;放错了位置
14. 有以下程序 
    #include<stdio.h> 
    main() 
    int y=9; 
    for(;y>0;y--) 
    if(y%3==0)printf("%d",--y); 
     
    程序的运行结粜是(    )。
A. 741         B. 963
C. 852         D. 875421
15. 下列关于C语言数据文件的叙述中正确的是(    )。
A. 文件由ASCII码字符序列组成,C语言只能读写文本文件
B. 文件由二进制数据序列组成,C语言只能读写二进制文件
C. 文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
D. 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
16. 若要求从键盘读入含有窄格字符的字符串,应使用函数(    )。
A. getc()         B. gets()
C. getchar()         D. scanf()
17. 若有以下程序段: 
    struct st 
    int n; 
    int*m: 
    ; 
    int a=2,b=3,c=5; 
    struct st s[3]=(101,&a,102,&c,103,&b); 
    main() 
    struct st*p; 
    p=s; 
     
    则以下表达式中值为5的是(    )。
A. (*p).m         B. *(p+1)->m
C. *(p++)->n         D. (p++)(*m)
18. 线性表常采用的两种存储结构是(    )。
A. 散列方法和索引方式         B. 链表存储结构和数组
C. 顺序存储结构和链式存储结构         D. 线性存储结构和非线性存储结构
19. 在软件生产过程中,需求信息的来源是(    )。
A. 程序员         B. 项目经理
C. 设计人员         D. 软件用户
20. 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是(    )。
A. 需求分析         B. 详细设计
C. 软件设计         D. 概要设计
21. 对关系S和R进行集合运算,结果中既包含S中的所有元组也包含R中的所有元组,这样的集合运算称为(    )。
A. 并运算         B. 交运算
C. 差运算         D. 积运算
22. 以下程序的输出结果是(    )。 
    int x;int*y;*p; 
    int dt[4]=1,2,3,4; 
    struct st aa[4]=2,&dt[0],3,&dt[0],4,&dt[0],5,&dt[0],; 
    p=aa; 
    pfintf("%d\n",++(p->x)); 
    
A. 1         B. 2
C. 3         D. 4
23. 以下关于long、int和short类型数据占用内存大小的叙述中正确的是(    )。
A. 均占4个字节         B. 根据数据的大小来决定所占内存的字节数
C. 由用户自己定义         D. 由C语言编译系统决定
24. 有以下程序: 
    #include<stdio.h> 
    main() 
    FILE *pf; 
    char*s1="China",*s2="Beijing": 
    pf=fopen("abc.dat","wb+"); 
    fwrite(s2,7,1,pf); 
    rewind(pf);  /*文件位置指针回到文件开头*/ 
    fwrite(s1,5,1,pf); 
    fclose(pf); 
     
    以上程序执行后abc.dat文件的内容是(    )。
A. China         B. Chinang
C. ChinaBeijing         D. BeijingChina
25. 有以下定义和语句: 
    struct students 
    int num;char name[20];char c; 
    struct 
    int grade1;int grade2;s; 
    ; 
    struct students w,*pw; 
    *pw=w; 
    下列赋值语句不正确的是(    )。
A. num=1002;         B. grade1=85;
C. pw->num=1002;         D. s.grade2=85;
26. 有以下程序段 
    int j;float y;  char name[50]; 
    scanf("%2d%f%s",&j,&y,name); 
    当执行上述程序段,从键盘上输入55566 7777abc后,y的值为(    )。
A. 55566.0         B. 566.0
C. 7777.0         D. 566777.0
27. 当a=4,b=5,c=7,d=6时,执行下面一段程序: 
    if(a<b) 
    if(c<d)x=1; 
    else 
    if(a<c) 
    if(b<c)x=2: 
    else x=3; 
    else x=4; 
    else x=5; 
    程序执行后,x的值为(    )。
A. 1         B. 2
C. 3         D. 4
28. 下列工具中,不属于结构化分析的常用工具的是(    )。
A. 数据流图         B. 数据字典
C. 判定树         D. S图
29. 以下选项中,能用作数据常量的是(    )。
A. 018         B. 011
C. 0.8e2.5         D. 25L
30. 在下列叙述中,错误的是(    )。
A. C语言中,二维数组或多维数组是按行存放的
B. 赋值表达式b[1][2]=a[2][3]是正确的
C. char a[1];a[0]='A'与int a[1];a[0]='A'等价
D. 数组名后的方括号内可以为常量表达式,也可以为变量
31. 下列合法的标识符是(    )。
A. 123         B. #256
C. 55         D. abhj1_2_3
32. 下列程序的运行结果是(    )。 
    void fun(int*s,int*p) 
    static int t=3; 
     
    void main() 
    int a[]=2,3,4,5,k,x; 
    printf("%d,",x): 
    
A. 5,4,3,2,         B. 2,3,4,5,
C. 2,2,2,2,         D. 5,5,5,5,
33. 在C语言程序中,以下说法正确的是(    )。
A. 函数的定义和函数的调用均不可以嵌套
B. 函数的定义不可嵌套,但函数的调用可以嵌套
C. 函数的定义可以嵌套,但函数的调用不可以嵌套
D. 函数的定义和函数的调用均可以嵌套
34. 对建立良好的程序设计风格,下面描述正确的是(    )。
A. 程序应简单、清晰、可读性好         B. 符号名的命名只要符合语法
C. 充分考虑程序的执行效率         D. 程序的注释可有可无
35. 数据库的故障恢复一般是由(    )来执行恢复。
A. 电脑用户         B. 数据库恢复机制
C. 数据库管理员         D. 系统普通用户
36. 已知char**S,下面正确的语句是(    )。
A. s="ABCDEF";         B. *s= "ABCDEF";
C. **s="ABCDEF";         D. *s='A';
37. 以下程序运行后的输出结果是(    )。 
    #include<stdio.h> 
    void reverse(int a[],int n) 
    int i,t; 
    for(i=0;i<n/2;i++) 
    t==a[i];a[i]=a[n-1-i];a[n-1-i]=t; 
     
    main() 
    int b[10]=10,9,8,7,6,5,4,3,2,1;int i,s=0; 
    reverse(b,10); 
    for(i=0;i<3;i++)s+=b[i]; 
    printf("%d\n",s); 
    
A. 27         B. 6
C. 25         D. 30
38. 软件需求分析阶段的工作,可以分为四个方面:需求获取、编写需求规格说明书、需求评审和(    )。
A. 阶段性报告         B. 需求分析
C. 需求总结         D. 都不正确
39. 设有关键码序列(Q,G,M,Z,A,N,B,P,X,H,Y,S,T,L,K,E),采用堆排序法进行排序,经过初始建堆后关键码值B在序列中的序号是(    )。
A. 1         B. 3
C. 7         D. 9
40. 若变量已正确定义,有以下程序段: 
    i=0; 
    do printf("%d,",i);while(i++); 
    printf("%d\h",i); 
    其输出结果是(    )。
A. 0,0         B. 0,1
C. 1,1         D. 程序进入无限循环
二、填空题
1. 在面向对象方法中,      描述的是具有相似属性与操作的一组对象。
2. 在最坏情况下,堆排序需要比较的次数为      。
3. 数据库系统的三级模式分别为      模式、内模式与外模式。
4. 软件开发环境是全面支持软件开发全过程的      集合。
5. 关系代数是关系操作语言的一种传统表示方式,它以集合代数为基础,它的运算对象和运算结果均为      。
6. 已知a=1,b=2,则表达式(a&b)&b||b的结果为      。
7. 若int x=1,y=2;则计算表达式y+=y-=x*=y后的y值是      。
以下程序段的运行结果是      。 
    #include<stdio.h> 
    main() 
    int x=2,y=1: 
    switch(x) 
    case 1: 
    switch(y) 
    case 0:printf("x=2,y=1\n");break; 
    case 1:printf("y=1\n");break; 
     
    case 2:printf("x=2\n"); 
     
    
8. 以下程序统计从终端输入的字符中大写字母的个数。用#号作为输入结束标志,请填空。 
    #include<stdio.h> 
    #include<ctype.h> 
    main() 
    int num[26],i;char c; 
    for(i=0;i<26;i++) 
    num[i]=0; 
          ; 
    while(c!='#' 
    if(isupper(c)) 
    num[c-65]+=1; 
    for(i=0;i<26;i++) 
    if(num[i]) 
    printf("%c,%d\n",i+65,num[i]); 
    
9. 以下程序运行后的输出结果是      。 
    struct NODE 
    int k; 
    struct NODE*link; 
    ; 
    main() 
     struct NODEm[5],*p=m,*q=m+4; 
    int i=0: 
    while(p!=q) 
    p->k=++i;p++;q->k=1++;q--; 
     
    q->k=i: 
    for(i=0;i<5;i++)printf("%d",m[i].k); 
    printf("\n"); 
    
10. 下面程序将二维数组a的行和列元素互换后存放到另一个二维数组b中,请填空。 
    main() 
    int a[2][3]=1,2,3,4,5,b[3][2],i,j; 
    for(i=0;i<2;i++) 
    for(j=0;j<3;j++) 
          ; 
     
    
11. 下面程序的输出结果是      。 
    #include<stdio.h> 
    main() 
    static char a[]="china"; 
    char*ptr=a; 
    while(*ptr) 
    printf("%c",*ptr-32); 
    ptr++; 
     
    
12. 下面程序中的数组a包括10个整数元素,从a中第二个元素起,分别将后项减前项之差存入数组b,并按每行4个元素输出数组b,请填空。 
    main() 
    int a[10],b[10],i; 
    for(i=0;i<10;i++) 
    scanf("%d",&a[i]); 
    for(i=1;i<10;i++) 
          ; 
    for(i=0;i<9;i++) 
    printf("%d",b[i]); 
    if(i%4==0)printf("\n"); 
     
    
13. 下面程序的运行结果是      。 
    #define POW(r)r*r 
    main() 
    int x=2,y=3,t; 
    t=POW(x+y); 
    printf("%d\n",t); 
    
14. 写出下列程序的执行结果。 
    swap(p1,p2) 
    int*p1,*p2; 
    int p; 
    p=*p1;*p1=*p2;*p2=p; 
     
    main() 
    int a,b,*p1,*p2; 
    scanf("%d%d",&a,&b); 
    p1=&a;p2=&b; 
    if(a<b)swap(p1,p2); 
    printf("\na=%d,b=%d\n",a,b); 
     
    若a=7,b=8,则程序的运行结果为      。
 

你可能感兴趣的:(算法,图论)