电大《C语言》专升本期末模拟试题A

时间:2024-04-27 18:20:53 5A范文网 浏览: 复习资料 我要投稿

一、单项选择题(每题2分,共30分)

1.以下描述正确的是(    C     )

A.goto语句只能用于退缩出多层循环。

B.switch语句中不能出现continue语句。

C.只能用continue语句中来终止本次循环。

D.在循环语句中break语句不独立出现。

2.一个C程序的执行是从(  A   )

A.C程序的main函数开始,到main函数结束。

B.本程序的第一个函数开始,到本程序最后一个函数结束。

C.本程序的main函数开始,到本程序文件的最后一个函数结束。

`D.本程序的第一个函数开始,到本程序main函数结束。

3.C语言中,要求运算数必须都是整数的运算符是( C  )。

A.*  B.- C.% D.+

4.假定 int i=3,j=4; 执行语句: printf("%d,%d,%d/n",i+++j,i,j); 之后,其输出结果为:( C )

   A.7,4,4   B. 8,4,4  C. 7,3,4  D.7,3,5

5.对break语句的正确描述。(   A     )

   A.break语句在while语句中,立即终止执行while语句。

   B.break语句不能用于循环语句之外的语句。

C.break语句与continue语句功能相同。

D.break语句可以带参数,也可以不带。

6.在C语言中,下面那一个不是正确的概念(  A    )

A. 所有循环语句都要求至少要执行一次循环体。

B. goto和if语句能构成循环语句。

C.循环过程只能包含,不能交叉。

D.循环体可以是一条语句。

7.以下对二维数组a的正确说明是(   C   )

A. int a[ 3 ] [  ];           B. float a( 3, 4);    

C. int a[ 3 ] [ 4 ]            D.float a( 3, )( 4 );

8.对函数的正确描述( C )

   A.在C语言中可以嵌套定义函数。

   B.自定义函数和调用函数可以不在一个源文件中。

   C. 函数定义都是平行的,独立的。

   D. 不能嵌套调用函数。

9.若用数组名作为函数调用的实参,传给形参的是(     A    )

A.数组的首地址                 B.数组的第一个元素值

C.数组的全部元素值             D.数组中元素的个数

10.对于 int *p; int a[]; p=a; 的合法运算(    C       )

   A. a++;

   B. p=a; p++; 相当于 a++;

   C. ++p; 相当于 a[1];

   D. 若p中的地址为100则p++; 运算后,则其值为100

11.假设 int x[] = {1,3,5,7,9,11}, *ptr; ptr = x; 以下那些是对数组元素的正确引用 ( D )

A. *(ptr--)    B. x[6]    C. *(--ptr)     D. *(ptr++)

12.执行以下语句后的结果为(  A  )

    enum weekday {sun,mon=3,tue,wed,thu};

    enum weekday workday;

    workday = wed;

    printf("%d/n",workday);

A.5     B. 3  C.4   D.编译出错

13.要定义一个结构体类型拟包含两个成员,其中成员变量info用来存放整型数据,成员变量link是指向自身结构体的指针。则下面的定义正确的是(   D   )。

A.struct node{int info;struct node link;};

B.struct node{int info;node *link;};

C.struct node{int info;struct *link;};  

D.struct node{int info;struct node *link;};

14.以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是(  D    )。

A.feof(fp)   B.ftell(fp)   C.fgetc(fp)   D.rewind(fp)

15.局部变量的作用域(    A     )

    A.在定义的块内有效。         B.在函数外也有效。

    C.在本文件内有效。           D.在所有文件内有效。

二、判断题(每题1分,共10分)

( × )1.break和continue 都可以用于switch语句中。

(√  )2.C语言不能嵌套定义函数,但可以嵌套调用。

(×  )3.C语言函数的缺省类型是void型(空类型)。

(×  )4.如果a>b或c<d为真,那么表达式(a>b&&c<d)为真。

(√  )5.如果有:int data[10];int *p; 则语句p=data 和 语句 p=&data[0]等价。

(√  )6.联合类型是在同一个存储空间,可以为几个不同数据类型的成员所使用。

( ×  ) 7.一个数组能够存储许多不同类型的值。

(√  )8.在运算时,不同类型的数据要先转换成精度高的类型之后,然后才能进行运算。

(×  )9.C语言允许对数组的大小作动态定义。

(×  )10.条件运算符的结合方向是从左到右。

三、分析程序给出运行结果(每题5分,共25分)

1. #include "stdio.h"

#include "string.h"

void main()

{ char s[20]="abcd";

printf("%d,%d/n",sizeof(s),strlen(s));

}

答案:20,4

2. #include "stdio.h"

void main()

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

p=&a[0][0];

printf("%d/n",p[5]) ;

}

答案: 6  

3. # include <stdio.h>

main(  )

{   char s[10]={“abc”};

printf(“c1=%c,c2=%s/n”,s[2],s);

}

答案:  c1=c,c2=abc  

4.  main( )

  {

      printf("%d %x %o/n",125,125,125);

      printf("%d %x %o/n",045,045,045);

      printf("%d %x %o/n",0x32,0x32,0x32);

}

答: 125  7d  175

37  25   45

   50  32  62

5. #include <stdio.h>

int f(int a);

int main()

{ int f(int);

    int a=2,i;

    for(i=0;i<3;i++)

    {

     printf("%d ", f(a));

    }

    return 0;

}

int f(int a)

{ auto  int b=0;

   static int c=3;

   b = b+1;

   c = c+1;

   return (a+b+c);

}

答案:7 8 9

四、完善程序填空题(每题5分,共15分)

1.程序实现:将100~200之间的素数输出。

#include <stdio.h>

int main()

{      int x=100;

      int a=2;

mmm:  x++;

      while(        x<=200          )

      {   if (x%a == 0)

  goto mmm;

  if( a >= x/2)

  {   printf("%d  ",x);

  a=2;

  goto mmm;

  }

  else ++a;

      }

     return 0;

}

2.以下程序的功能是统计一行字符中的单词个数(单词之间用空格分隔)请完善该程序功能。

main( )

{ char str[256];

int i,num=0,word=0;

scanf(“%s”,str);

for(i=0;str[i]!= '/0';i++)

    if(str[i] == '  ')

word =0 ;

    else if (        word == 0       )

{ word = 1;

num++;

}

printf(“%d”,num);

}


3. 输出3到100之间的所有素数。

main()

{ int i,j;

for(i=3;        i<=100        ;i++)

{ for(j=2;j<=i-1;j++)

if(i%j==0)

break;    

if( i==j )

      printf("%4d",i);

}

}


五、编程题 (每题10分,共20分)

1. 请编制程序实现:判断一个数能否同时被3和5整除。

答:算法如下:

#include <stdio.h>    

int main()

{ int x;

   printf("/n为X输入值");

   scanf("%d", &x);

if (x%3==0)

  { if(x%5==0)

   { printf("/nX能被3和5整除:X=");

            printf("%-5d/n",x);

   }

       else printf("/nX不能被5整除");

}

   else printf("/nX不能被3整除");

   return 0;

}

2.请编制程序实现:用递归方式计算a!+b!+c!,并要求有输出结果。

答:算法如下:

#include<stdio.h>

int fact(int);

int main()

{

int a,b,c;

printf("Enter three numbers:");

scanf("%d%d%d",&a,&b,&c);

printf("%d!+ %d!+ %d!= %d /n",a,b,c,fact(a)+fact(b)+fact(c));

return 0;

}

fact(int n)

{

int result;

if(n==1)

return(1);

result=fact(n-1)*n;  /*递归调用*/

return(result);

}


 

来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。

相关文章:

期货公司申请金融期货结算业务资格,应当向中国证券监督04-27

期货公司停业的,应当向中国证券监督管理委员会提交的材04-27

下列关于期货公司首席风险官报告义务的表述,正确的有()。04-27

高一年级必修二生物知识点04-27

国内某出口企业3个月后将收到一笔日元出口货款,则可用04-27

高一数学上册教案范例5篇04-27

高一年级语文必修三知识点总结04-27

外汇期权合约中规定卖出的货币,其利率越高,期权持有者在04-27

高一年级必修二物理知识点04-27

外汇掉期与货币互换的区别主要体现在( )。A期限不同B04-27

热搜文章
最新文章