草庐IT

计算机等级考试二级C语言模拟试卷(九)

I am a teacher! 2023-03-28 原文

一、选择题(每小题1分,共40分)

(1)数据的存储结构是指

    A)存储在外存中的数据                               B)数据所占的存储空间量

    C)数据在计算机中的顺序存储方式             D)数据的逻辑结构中计算机中的表示

(2)栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是

    A)ABCED     B)DBCEA       C)CDABE       D)DCBEA

(3)下列对于线性链表的描述中正确的是

    A)存储空间不一定是连续,且各元素的存储顺序是任意的

    B)存储空间不一定是连续,且前件元素一定存储在后件元素的前面

    C)存储空间必须连续,且前件元素一定存储在后件元素的前面

    D)存储空间必须连续,且各元素的存储顺序是任意的

(4)在深度为5的满二叉树中,叶子结点的个数为

    A)15                B)16                 C)31               D)32

(5)在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送

    A)调用语句      B)命令              C)口令             D)消息

(6)下列描述中正确的是

    A)软件工程只是解决软件项目的管理问题

    B)软件工程主要解决软件产品的生产率问题

    C)软件工程的主要思想是强调在软件开发过程中需要应用工程化原则

    D)软件工程只是解决软件开发中的技术问题

(7)需求分析阶段的任务是确定

    A)软件开发方法  B)软件开发工具    C)软件开发费用    D)软件系统功能

(8)下列不属于结构化分析的常用工具的是

    A)数据流图       B)数据字典           C)判定树                 D)PAD图

(9)数据库设计的根本目标是要解决

    A)数据共享问题                                    B)数据安全问题

    C)大量数据存储问题                            D)简化数据维护

(10)设有如下关系表: 

 

下列操作中正确的是

    A)T=R∩S       B)T=R∪S       C)T=R×S      D)T=R/S

(11) 若变量已正确定义并赋值,下面符合C语言语法的表达式是

    A) a:=b+1          B) a=b=c+2         C) int  18.5%3    D) a=a+7=c+b

(12) C语言中运算对象必须是整型的运算符是

    A) %=                B) /=                    C) *=                  D) 〈=

(13) 若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是

    A) 1                   B) 2                    C) 2.0                  D) 2.5

(14) 若变量a、iI已正确定义,且i已正确赋值,合法的语句是

    A) a==1            B) ++i;                 C) a=a++=5;       D) a=int(i);

(15)设有定义 int  y=3,x=3,z=1;,则语句printf("%d   %d\n",(++x,y++),z+2); 的输出结果是

    A) 3  3               B) 3  4                 C) 4  2                D) 4  3

(16) 能正确表示逻辑关系:“a≥=10或a≤0”的C语言表达式是

    A) a>=10 or a<=0   B) a>=0|a<=10      C) a>=10 &&a<=0   D) a>=10‖a<=0

(17) 设有 int x=11; 则表达式 (x++ * 1/3) 的值是

     A) 3           B) 4                C) 11           D) 12

(18) 设 int  x=1, y=1; 表达式(!x||y--)的值是

     A) 0          B) 1                C) 2             D) -1

(19) 设有定义int x='f'; ,则语句printf("%c \n",'A'+(x-'a'+1));的输出结果是

     A) G          B) H                C) I             D) J

(20) 设有定义int a=2,c=5;,语句printf("a=%d,b=%d\n",a,c);的输出结果是

     A) a=%2,b=%5             B) a=2,b=5

     C) a=d, b=d                  D) a=%d,b=%d

(21) 下列程序的输出结果是

int main()

{

    double d=3.2;

    int x,y;

    x=1.2; y=(x+3.8)/5.0;

    printf("%d \n", d*y);

    return 0;

}

     A) 0            B) 3            C) 3.07            D) 3.2  

(22) 与 y=(x>0?1:x<0?-1:0);的功能相同的if语句是

     A) if (x>0) y=1;                  B) if(x)

        else if(x<0)y=-1;                    if(x>0)y=1;

        else y=0;                                else if(x<0)y=-1;

                                                  else y=0;

     C) y=-1                           D) y=0;

        if(x)                                  if(x>=0)

           if(x>0)y=1;                       if(x>0)y=1;

        else if(x==0)y=0;                 else y=-1;

        else y=-1;

(23) 有如下程序

int main()

{

    float  x=2.0,y;

    if(x<0.0)  y=0.0;

    else  if(x<10.0) y=1.0/x;

    else  y=1.0;

    printf("%f\n",y);

    return 0;

}

该程序的输出结果是

    A) 0.000000        B) 0.250000        C) 0.500000       D) 1.000000

(24) 以下循环体的执行次数是

for(int i=0,j=1;  i<=j+1; i+=2, j--)printf("%d \n",i);

     A) 0          B) 1                C) 2             D) 3

(25) 以下叙述正确的是

     A) do-while语句构成的循环不能用其它语句构成的循环来代替。

     B) do-while语句构成的循环只能用break语句退出。

     C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环。

     D) 用do-while语句构成的循环,在while后的表达式为零时结束循环。

(26) 有如下程序

int main()

{

    int    n=9;

    while(n>6)

    { n--; printf("%d",n);}

    return 0;

}

该程序的输出结果是

    A) 876             B) 8765           C) 987           D) 9876

(27) 若已定义:

     int a[ ]={0,1,2,3,4,5,6,7,8,9], *p=a,i;

     其中 0≤i≤9, 则对a数组元素不正确的引用是

     A) a[p-a]     B) *(&a[i])         C) p[i]          D) a[10]

(28) 下列程序执行后的输出结果是

int main()

{

    int a[3][3], *p,i;

    p=&a[0][0];

    for(i=0; i<9; i++) p[i]=i+1;

    printf("%d \n",a[1][2]);

    return 0;

}

     A) 3            B) 6              C) 9             D) 随机数

(29) 设已有定义: char *st="how are you"; 下列程序段中正确的是

     A) char  a[11], *p;  strcpy(p=a+1,&st[4]);

     B) char  a[11];      strcpy(++a, st);

     C) char  a[11];      strcpy(a, st);

     D) char  a[], *p;    strcpy(p=&a[1],st+2);

(30) 设有数组定义: char array [ ]="China"; 则数组 array所占的空间为

     A) 4个字节      B) 5个字节        C) 6个字节       D) 7个字节

(31) 下列程序的输出结果是

int b=2;

int func(int *a)

{ b += *a; return(b);}

int main()

{

    int a=2, res=2;

    res += func(&a);

    printf("%d \n",res);

    return 0;

}

     A) 4            B) 6              C) 8             D) 10

 (32) 下列程序的输出结果是

struct abc

{ int a, b, c; };

int main()

{

    struct abc  s[2]={{1,2,3},{4,5,6}};

    int t;

    t=s[0].a+s[1].b;

    printf("%d \n",t);

    return 0;

}

     A) 5            B) 6              C) 7             D) 8

(33) 设 int  b=2;表达式(b>>2)/(b>>1)的值是

     A) 0             B) 2                 C) 4             D) 8

(34) 设有定义 int a[50],n;,若有调用语句fun(n, &a[9]);,则不正确的fun函数的首部是

     A) void fun(int m, int x[])      B) void fun(int s, int h[41])

     C) void fun(int p, int *s)       D) void fun(int n, int a)

(35) 设有定义 int a[5]={10,20,30,40,50},*p=&a[2]; ,则执行语句 *--p;后*p的值是

     A) 19             B) 20             C) 29            D) 30

(36) 下列程序执行后的输出结果是

#define  MA(x) x*(x-1)

int main()

{

    int a=1,b=2;

    printf("%d \n",MA(1+a+b));

    return 0;

}

     A) 6            B) 8              C) 10            D) 12

(37) 对于基类型相同的两个指针变量之间,不能进行的运算是

    A) <               B) =               C) +              D) -

(38) 有如下函数调用语句

func(rec1,rec2+rec3,(rec4,rec5));

该函数调用语句中,含有的实参个数是

    A) 3               B) 4               C) 5              D) 有语法错

(39) 若有以下说明和定义

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);

(40) 若fp是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)的返回值是

    A) EOF             B) 0               C) 非零值         D) NULL

 二、程序填空题(18分)

给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),作为函数值返回;并将大于平均值的数放在形参y所指数组中。

例如,有10个正数:46 30 32 40 6 17 45 15 48 26,平均值为:30.500000

主函数中输出:46 32 40 45 48

请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。

注意:不得增行或删行,也不得更改程序的结构!

#include  <stdlib.h>
#include  <stdio.h>
#define   N   10
double fun(double  x[],double  *y)
{ 
    int  i,j;    
    double  av;
    /**********found**********/
    av=__1__;
    /**********found**********/
    for(i=0; i<N; i++)  av = av + __2__;
    for(i=j=0; i<N; i++)
    /**********found**********/
       if(x[i]>av)  y[__3__]= x[i];
    y[j]=-1;
    return  av;
}
int main()
{ 
    int  i;    
    double  x[N],y[N];
    for(i=0; i<N; i++)
    { 
        x[i]=rand()%50; 
        printf("%4.0f ",x[i]);
    }
    printf("\n");
    printf("\nThe average is: %f\n",fun(x,y));
    for(i=0; y[i]>=0; i++)  printf("%5.1f ",y[i]);
    printf("\n");
    return 0;
}

三、程序修改题(18分)

给定程序中,函数fun的功能是:根据形参m的值,计算如下公式的值。

 

例如,若m=5,则应输出:1.463611。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

#include <stdio.h>
double fun ( int m )
{
    double   y = 1.0 ;
    int  i ;
    /**************found**************/
    for(i = 2 ; i < m ; i++)
    /**************found**************/
       y += 1 /(i * i) ;
    return( y ) ;
}
int main( )
{
    int n = 5 ;
    printf( "\nThe result is %f\n", fun(n));
    return 0;
}

四、程序设计题(24分)

编写函数fun,它的功能是:实现B=A+A’,即把矩阵A加上A的转置,存放在矩阵B中。

例如,输入如下矩阵

1 2 3

4 5 6

7 8 9

程序输出

2 6 10

6 10 14

10 14 18

注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include <stdio.h>
void NONO(void);
void  fun(int a[3][3], int b[3][3])
{

}
int main()
{
    int a[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3];
    int i, j ;
    fun(a, t) ;
    for (i = 0 ; i < 3 ; i++)
    {
       for (j = 0 ; j < 3 ; j++)
         printf("%7d", t[i][j]) ;
       printf("\n") ;
    }
    NONO() ;
    return 0;
}
void NONO(void)
{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
    int i, j, k, a[3][3], t[3][3] ;
    FILE *rf, *wf ;
    rf = fopen("in.dat","r") ;
    wf = fopen("out.dat","w") ;
    for(k = 0 ; k < 5 ; k++)
    {
       for(i = 0 ; i < 3 ; i++)
        fscanf(rf,"%d %d %d",&a[i][0],&a[i][1],&a[i][2]);
       fun(a, t) ;
       for(i = 0 ; i < 3 ; i++)
       {
           for(j = 0 ; j < 3 ; j++)
              fprintf(wf, "%7d", t[i][j]) ;
           fprintf(wf, "\n") ;
       }
    }
    fclose(rf) ;
    fclose(wf) ;
}
一、选择题
( 1)~( 5): DDABD          ( 6)~(10):  CDDAB
(11)~(15): BACBA          (16)~(20):  DABAB
(21)~(25): AACBD          (26)~(30):  ADBAC 
(31)~(35): BBADB          (36)~(40):  BCABC
二、程序填空题
    (102)x[i]/N    (3)j++
三、程序修改题
    for(i = 2 ; i <= m ; i++)
    y += 1.0 /(i * i) ;
四、程序设计题
    void  fun(int a[3][3], int b[3][3])
    {
        int i,j;
        for (i=0;i<3;i++)
          for (j=0;j<3;j++)
            b[i][j]=a[i][j]+a[j][i];
    }
参考答案:
模拟试卷等级考试nbspspanstyleC语言

有关计算机等级考试二级C语言模拟试卷(九)的更多相关文章

  1. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  2. ruby - 如何模拟 Net::HTTP::Post? - 2

    是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou

  3. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  4. ruby - 寻找通过阅读代码确定编程语言的ruby gem? - 2

    几个月前,我读了一篇关于ruby​​gem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:

  5. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  6. 7个大一C语言必学的程序 / C语言经典代码大全 - 2

    嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来

  7. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  8. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  9. ruby - 使用 Ruby,计算 n x m 数组的每一列中有多少个 true 的简单方法是什么? - 2

    给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in

  10. ruby-on-rails - 在这种情况下我如何模拟一个对象?没有明显的方法可以用模拟替换对象 - 2

    假设我在Store的模型中有这个非常简单的方法:defgeocode_addressloc=Store.geocode(address)self.lat=loc.latself.lng=loc.lngend如果我想编写一些不受地理编码服务影响的测试脚本,这些脚本可能已关闭、有限制或取决于我的互联网连接,我该如何模拟地理编码服务?如果我可以将地理编码对象传递到该方法中,那将很容易,但我不知道在这种情况下该怎么做。谢谢!特里斯坦 最佳答案 使用内置模拟和stub的rspecs,你可以做这样的事情:setupdo@subject=MyCl

随机推荐