• 2004年4月全国计算机等级考试二级C语言笔试试题


    2004年4月全国计算机等级考试二级C语言笔试试题

     更新于:2007年9月20日   念时

    一、选择题,(1-40)每题1分,(41-50)每题2分,共60分)
     下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。


    (1)1MB等于
    A) 1000字节 B) 1024字节
    C) 1000×1000字节 D) 1024×1024字节

    (2)与十六进制数200等值的十进制数为
    A) 256 B) 512 C) 1024 D) 2048

    (3)所谓“裸机”是指
    A) 单片机 B) 单板机
    C) 不装备任何软件的计算机 D) 只装备操作系统的计算机

    (4)能将高级语言编写的源程序转换成目标程序的是
    A) 链接程序 B) 解释程序 C) 编译程序 D) 编辑程序

    (5)在64位计算机中,一个字长所占的字节数为
    A) 64 B) 8 C) 4 D) 1

    (6)在Windows环境下,当一个应用程序窗口被最小化后,该应用程序
    A) 继续在后台运行 B) 继续在前台运行
    C) 终止运行 D) 暂停运行

    (7)在Windows环境下,能实现窗口移动的操作是
    A) 用鼠标拖动窗口中的任何部位 B) 用鼠标拖动窗口的边框
    C) 用鼠标拖动窗口的控制按钮 D) 用鼠标拖动窗口的标题栏

    (8)在Windows环境下,PrintScreen键的作用是
    A) 打印当前窗口的内容 B) 打印屏幕内容
    C) 复制屏幕到剪贴板 D) 复制当前窗口到剪贴板

    (9)Internet的通信协议是
    A) TCP/IP B) BBS C) WWW D) FTP

    (10)下列叙述中正确的是
    A) 计算机病毒只感染可执行文件
    B) 计算机病毒只感染文本文件
    C) 计算机病毒只能通过软件复制的方式进行传播
    D) 计算机病毒可以通过网络或读写磁盘等方式进行传播

    (11)一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是
    A) 有零个或多个输入 B) 有零个或多个输出
    C) 有穷性 D) 可行性

    (12)以下叙述中正确的是
    A) C语言的源程序不必通过编译就可以直接运行
    B) C语言中的每条可执行语句最终都将被转换成二进制的机器指令
    C) C源程序经编译形成的二进制代码可以直接运行
    D) C语言中的函数不可以单独进行编译

    (13)以下符合C语言语法的实型常量是
    A) 1.2E0.5 B) 3.14.159E C) .5E-3 D) E15

    (14)以下4组用户定义标识符中,全部合法的一组是
    A) _main B) If C) txt D) int
     enclude -max REAL k_2
     sin turbo 3COM _001

    (15)若以下选项中的变量已正确定义,则正确的赋值语句是
    A) x1=26.8%3 B) 1+2=x2 C) x3=0x12 D) x4=1+2=3;

    (16)设有以下定义
    int a=0;
    double b=1.25;
    char c=’A’;
    #define d 2
    则下面语句中错误的是
    A) a++; B) b++ C) c++; D) d++;

    (17)设有定义:float a=2,b=4,h=3;,以下C语言表达式与代数式 计算结果不相符的是
    A) (a+B) *h/2 B) (1/2)*(a+B) *h
    C) (a+B) *h*1/2 D) h/2*(a+B)

    (18)有以下程序
    main( )
    {
     int x=102,y=012;
     printf(“%2d,%2d\n”,x,y);
    }
    执行后输出结果是
    A) 10,01 B) 02,12 C) 102,10 D) 02,10

    (19)以下4个选项中,不能看作一条语句的是
    A) {;} B) a=0,b=0,c=0; C) if(a>0); D) if(b==0) m=1;n=2;

    (20)设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是
    A) scanf(“%d”,pA) ; B) scanf(“%d”,A) ;
    C) scanf(“%d”,&pA) ; D) scanf(“%d”,*pA) ;

    (21)以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是
    A) if((a>B) &&(b>C) ) k=1; B) if((a>B) ||(b>C) ) k=1
    else k=0;
    C) if(a<=B) k=0; D) if(a>B) k=1;
     else if(b<=C) k=1; else if(b>C) k=1;
     else k=0;

    (22)有以下程序
    main( )
    { char k; int I;
     for(i=1;i<3;i++)
     { scanf(“%c”,&k);
     switch(k)
     { case ‘0’: printf(“another\n”);
     case ‘1’: printf(“number\n”);
     }
     }
    }
    程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是
    A) another B) another C) another D) number
    number number number number
     another number

    (23)有以下程序
    main( )
    { int x=0,y=5,z=3;
     while(z-->0&&++x<5) y=y-1;
     printf(“%d,%d,%d\n”,x,y,z);
    }
    程序执行后的输出结果是
    A) 3,2,0 B) 3,2,-1 C) 4,3,-1 D) 5,-2,-5

    (24)有以下程序
    main( )
    { int i,s=0;
     for(i=1;i<10;i+=2) s+=i+1;
     printf(“%d\n”,s);
    }
    程序执行后的输出结果是
    A) 自然数1~9的累加和 B) 自然数1~10的累加和
    C) 自然数1~9中的奇数之和 D) 自然数1~10中的偶数之和

    (25)有以下程序main( )
    { int i,n=0;
     for(i=2;i<5;i++)
     { do
     { if(i%3) continue;
     n++;
     } while(!i);
    n++;
     }
     printf(“n=%d\n”,n);
    }
    程序执行后的输出结果是
    A) n=5 B) n=2 C) n=3 D) n=4

    (26)若程序中定义了以下函数
     double myadd(double a,double B)
     { return (a+B) ;}
    并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是
    A) double myadd(double a,B) ;
    B) double myadd(double,double);
    C) double myadd(double b,double A) ;
    D) double myadd(double x,double y);

    (27)有以下程序
    char fun(char x , char y)
    { if(x
     return y;
    )
    main( )
    { int a=’9’,b=’8’,c=’7’;
     printf(“%c\n”,fun(fun(a,B) ,fun(b,C) ));
    }
    程序的执行结果是
    A} 函数调用出错 B}8 C}9 D}7

    (28)设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是
    A) p=1; B) *q=2; C) q=p; D) *p=5;

    (29)有以下程序
    void f(int v , int w)
    { int t;
     t=v;v=w;w=t;
    }
    main( )
    { int x=1,y=3,z=2;
     if(x>y) f(x,y);
     else if(y>z) f(y,z);
     else f(x,z);
     printf(“%d,%d,%d\n”,x,y,z);
    }
    执行后输出结果是
    A) 1,2,3 B) 3,1,2 C) 1,3,2 D) 2,3,1

    (30)有以下程序段
    int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
    b=p[5];
    b中的值是
    A) 5 B) 6 C) 8 D) 9

    (31)有以下程序
    main( )
    { char a[]=”abcdefg”,b[10]=”abcdefg”;
     printf(“%d %d\n”,sizeof(A) ,sizeof(B) );
    }
    执行后输出结果是
    A) 7 7 B) 8 8 C) 8 10 D) 10 10

    (32)有以下程序
    void swap1(int c[])
    { int t;
     t=c[0];c[0]=c[1];c[1]=t;
    }
    void swap2(int c0,int c1)
    { int t;
     t=c0;c0=c1;c1=t;
    }
    main( )
    { int a[2]={3,5},b[2]={3,5};
     swap1(A) ; swap2(b[0],b[1]);
     printf(“%d %d %d %d\n”,a[0],a[1],b[0],b[1]);
    }
    其输出结果是
    A) 5 3 5 3 B) 5 3 3 5 C) 3 5 3 5 D) 3 5 5 3

    (33)有以下程序
    void sum(int *A)
    { a[0]=a[1];}
    main( )
    { int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
     for(i=2;i>=0;i--) &nb
     sp; sum(&aa[i]);
     printf(“%d\n”,aa[0]);
    }
    执行后的输出结果是
    A) 4 B) 3 C) 2 D) 1

    (34)有以下程序
    int f(int b[][4])
    { int i,j,s=0;
     for(j=0;j<4;j++)
     { i=j;
     if(i>2) i=3-j;
     s+=b[i][j];
     }
    return s;
    }
    main( )
    { int a[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};
    printf(“%d\n”,f(A) );
    }
    执行后的输出结果是
    A) 12 B) 11 C) 18 D) 16

    (35)有以下定义
    #include
    char a[10],*b=a;
    不能给数组a输入字符串的语句是
    A) gets(A) B) gets(a[0]) C) gets(&a[0]); D) gets(B) ;

    (36)有以下程序
    main( )
    { char *p[10]={“abc”,”aabdfg”,”dcdbe”,”abbd”,”cd”};
     printf(“%d\n”,strlen(p[4]));
    }
    执行后输出结果是
    A) 2 B) 3 C) 4 D) 5

    (37)有以下程序
    int a=2;
    int f(int *A)
    {return (*A) ++;}
    main( )
    { int s=0;
     { int a=5;
     s+=f(&A) ;
     }
     s+=f(&A) ;
     printf(“%d\n”,s);
    }
    执行后输出结果是
    A) 10 B) 9 C) 7 D) 8

    (38)有以下程序
    #define f(x) x*x
    main( )
    { int i;
     i=f(4+4)/f(2+2);
     printf(“%d\n”,i);
    }
    执行后输出结果是
    A) 28 B) 22 C) 16 D) 4

    (39)设有以下语句
    typedef struct S
    { int g; char h;} T;
    则下面叙述中正确的是
    A) 可用S定义结构体变量 B)可以用T定义结构体变量
    C)S是struct类型的变量 D)T是struct S类型的变量

    (40)有以下程序
    struc STU
    { char name[10];
     int num;
    };
    void f1(struct STU C)
    { struct STU b={“LiSiGuo”,2042};
     c=b;
    }
    void f2(struct STU *C)
    { struct STU b={“SunDan”,2044};
     *c=b;
    }
    main( )
    { struct STU a={“YangSan”,2041},b={“WangYin”,2043};
     f1(A) ;f2(&B) ;
     printf(“%d %d\n”,a.num,b.num);
    }
    执行后的输出结果是
    A)2041 2044 B)2041 2043 C)2042 2044 D)2042 2043

    (41)有以下程序
    main( )
    { unsigned char a,b;
     a=4|3;
     b=4&3;
     printf(“%d %d\n”,a,b(;
    )
    执行后输出结果是
    A) 7 0 B} 0 7 C} 1 1 D} 43 0

    (42)下面程序的功能是输出以下形式的金字塔图案是:
     *
     ***
     *****
     *******
    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

    (43) 有以下程序
    void sort(int a[],int n)
    { int i,j,t;
     for(i=0;i
     for(j=i+2;j
     if(a[i] )
    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,

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

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

    (46)有以下程序
    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,2,3,4,5,

    (47)有以下程序
    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(“5d %d\n”,s[1].Score,p[1]->Score);
    }
    执行后输出结果是
    A) 550 550 B) 680 680 C) 580 550 D) 580 680

    (48)有以下程序
    #include
    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

    (49)有以下程序
    #include
    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) 1 2 B) 123 0 C) 1 23 D) 0 0

    (50)有以下程序(
       提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END);语句的作用是使位置指针从文件尾向前移2*sizeof(int)字节)
    #include
    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

    二、填空题(每空2分,共40分)
       请将每一个空的正确答案写在答题卡【1】至【20】序号的横线上, 答在试卷上不得分。


    (1)E-mail地址由用户名和域名两部分组成,这两部分的分隔符为【1】 。

    (2)计算机网络分为广域网和局域网,因特网属于【2】 。

    (3)从Windows环境进入MS-DOS方式后,返回Windows环境的DOS命令为【3】 。

    (4)在Windows环境下,只要在“开始”菜单中单击【4】选项,就可以查阅最近打开过的文档清单。

    (5)计算机的运算速度可以用MIPS来描述,1MIPS是指每秒执行【5】条指令。

    (6)已知字符A的ACSII码值为65,以下语句的输出结果是【6】
    char ch=’B’;
    printf(“%c %d\n”,ch,ch);

    (7)有以下语句段
    int n1=10,n2=20;
    printf(“ 【7】 ”,n1.n2);
    要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。
    n1=10
    n2=20

    (8)有以下程序
    main( )
    { int t=1,i=5;
     for(;i>=0;i--) t*=i;
     printf(“%d\n”,t);
    }
    执行后输出结果是【8】 。

    (9)有以下程序
    main( )
    { int n=0,m=1,x=2;
     if(!n) x-=1;
     if(m) x-=2;
     if(x) x-=3;
     printf(“%d\n”,x);
    }
    执行后输出结果是【9】 。

    (10)有以下程序
    #include
    main( )
    { char ch1,ch2; int n1,n2;
     ch1=getchar(); ch2=getchar();
     n1=ch1-‘0’; n2=n1*10+(ch2-‘0’);
     printf(“%d\n”,n2);
    }
    程序运行时输入:12<回车>,执行后输出结果是【10】 。

    (11)有以下程序
    void f( int y,int *x)
    {y=y+*x; *x=*x+y;}
    main( )
    { int x=2,y=4;
     f(y,&x);
     printf(“%d %d\n”,x,y);
    }
    执行后输出的结果是【11】 。

    (12)函数fun的功能是计算xn
    double fun(double x,int n)
    { int i; double y=1;
     for(i=1;i<=n;i++) y=y*x;
     return y;
    }
    主函数中已经正确定义m,a,b变量并赋值,并调用fun函数计算:m=a4+b4-(a+B) 3。实现这一计算的函数调用语句为【12】 。

    (13)下面rotate函数的功能是:将n行n列的矩阵A转置为A’,例如:
     1 2 3 4 1 5 9 13
     5 6 7 8 2 6 10 14
     当 A= 9 10 11 12 则 A’= 3 7 11 15
     13 14 15 16 4 8 12 16
    请填空
    #define N 4
    void rotate(int a[][N])
    { int i,j,t;
     for(i=0;i<N;I++)
     for(j=0;【13】;j++)
     { t=a[i][j];
     【14】 ;
     a[j][i]=t;
     }
    }

    (14)以下sstrcpy( )函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。请填空。
    void sstrcpy(char *s,char *t)
    { while(*s++=【15】);}
    main( )
    { char str1[100],str2[]=”abcdefgh”;
     sstrcpy(str1,str2);
     printf(“%s\n”,str1);
    }

    (15)下列程序的运行结果是:【16】
    #include
    char *ss(char *s)
    { return s+strlen(s)/2;}
    main( )
    { char *p,*str=”abcdefgh”;
     p=ss(str); printf(“%s\n”,p);
    }

    (16)下面程序的运行结果是:【17】
    int f( int a[], int n)
    { if(n>1) return a[0]+f(&a[1],n-1);
     else return a[0];
    }
    main ( )
    { int aa[3]={1,2,3},s;
     s=f(&aa[0],3); printf(“%d\n”,s);
    }

    (17)以下程序中给指针p分配三个double型动态内存单元,请填空。
    # include
    main ( )
    { double *p;
     p=(double *) malloc(【18】);
     p[0]=1.5;p[1]=2.5;p[2]=3.5;
     printf(“%f%f%f\n”,p[0],p[1],p[2]);
    }

    (18)以下程序的运行结果是【19】
    # include
    typedef struct student{
     char name[10];
     long sno;
     float score;
     }STU;
    main( )
    { STU
    a={“zhangsan”,2001,95},b={“Shangxian”,2002,90},c={“Anhua”,2003,95},d,*p=&d;
     d=a;
     if(strcmp(a.name,b.name)>0) d=b;
     if(strcmp(c.name,d.name)>0) d=c;
     printf(“%ld%s\n”,d.sno,p->name);
     }

    (19)以下sum函数的功能是计算下列级数之和。
     S=1+x+x2/2!+x3/3!+........+xn/n!
     请给函数中的各变量正确赋初值。
     double sum( double x, int n )
     { int i; double a,b,s;
     【20】
     for( i=1;i<=n;i++)
     { a=a*x; b=b*i; s=s+a/b; }
     return s;
     }
    答案将在后期陆续公布……敬请关注!念时
  • 相关阅读:
    强弱类型 静态语言 动态语言 || 脚本语言
    mysql版本升级问题处理
    word
    IntelliJ IDEA 插件
    dubbo
    spring源码构建
    zookeeper 本地多线程模拟分布式事务控制及配置中心
    一次性关闭所有的Activity
    可能以后用得到得东西
    Thread.sleep还是TimeUnit.SECONDS.sleep
  • 原文地址:https://www.cnblogs.com/nianshi/p/899943.html
Copyright © 2020-2023  润新知