image

编辑人: 浅唱

calendar2025-05-15

message1

visits749

c语言笔试模拟题以及答案

  1. 一、单选题:(每题1.5分,共60分)

    1、 C语言程序的基本单位是_______.

    A. 语句

    B. 函数

    C. 程序行

    D. 字符

    答案: B

    2、 C语言程序由( )组成

    A. 子程序

    B. 过程

    C. 函数

    D. 主程序段程序

    答案: C

    3、 算法的表示方法有________。

    A. 自然语言,传统流程图,N-S流程图,伪代码,计算机语言

    B. 高级语言,汇编语言,机器语言

    C. C语言,QBASIC语言,InterDev

    D. 图形图像法,描述法,编程法

    E. 计算机语言

    答案: A

    4、 以下程序的输出结果是
    main( )
    { int k=17;
    printf(“%d,%o,%x n”,k,k,k);
    }

    A. 17,021,0x11

    B. 17,17,17

    C. 17,0x11,021

    D. 17,21,11

    答案: D

    5、 下列变量定义中合法的是

    A. short _a=1-.le-1;

    B. double b=1+5e2.5;

    C. long do=0xfdaL;

    D. float 2_and=1-e-3;

    答案: A

    6、 C语言中合法的字符常量是____

    A. ‘�84’

    B. ‘X43’

    C. ‘ab’

    D. “�”

    答案: B

    7、 下面说法中正确的是(  )

    A. int型和long型运算先将int型转换成unsigned型,再转换

    B. 两个float型运算结果为double型

    C. 只要表达式中存在double型,所有其他类型数据都必须转

    D. 表达式中的类型转换与运算顺序有关

    答案: C

    8、 以下不正确的叙述是

    A. 在C程序中,逗号运算符的优先级最低

    B. 在C程序中,APH和aph是两个不同的变量

    C. 若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变

    D. 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

    答案: D

    9、 设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是

    A. n=(n*100+0.5)/100.0

    B. m=n*100+0.5,n=m/100.0

    C. n=n*100+0.5/100.0

    D. n=(n/100+0.5)*100.0

    答案: B

    10、 下列运算符中优先级最高的是

    A. <

    B. +

    C. &&

    D. !=

    答案: B

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

    A. a:=b+1

    B. a=b=c+2

    C. int 18.5%3

    D. a=a+7:c+b

    答案: B

    12、 设CH是字符型变量,其值为’A’,下列表达式的值是
    CH=(CH > =’A’&&CH < =’Z’)?(CH+32):CH

    A. A

    B. a

    C. z

    D. Z

    答案: B

    13、 表达式18/4*sqrt(4.0)/8值的数据类型为

    A. int

    B. float

    C. double

    D. 不确定

    答案: C

    14、 在C语言中,要求运算数必须是整型的运算符是

    A. /

    B. %

    C. !

    D. >

    答案: B

    15、 以下说法中正确的是

    A. #define和printf都是C语句

    B. #define是C语句,而printf不是

    C. printf是C语句,但#define不是

    D. #define和printf都不是C语句

    答案: D

    16、 下面程序的输出是
    main()
    {
    int a=-1,b=4,k;
    k=(a++<=0)&&(!(b–<=0));
    printf(“%d%d%d%n”,k,a,b);
    }

    A. 0 0 3

    B. 0 1 2

    C. 1 0 3

    D. 1 1 2

    答案: C

    17、 设有:int a=1,b=2,c=3,d=4,m=2,n=2;
    执行 (m=a > b)&&(n=c > d)后n的值是

    A. 1

    B. 2

    C. 3

    D. 4

    答案: B

    18、 若有条件表达式 (exp)?a++:b–,则以下表达式中能完全等价于表达式(exp)的是

    A. (exp==0

    B. (exp!=0)

    C. (exp==1)

    D. (exp!=1)

    答案: B

    19、 为表示关系X≥Y≥Z应使用C语言表达式:__

    A. (X > =Y)&&(Y > =Z)

    B. (X > =Y)and(Y > =Z)

    C. (X ≥ Y ≥ Z)

    D. (X ≥ Y)&(Y ≥ Z)

    答案: A

    20、 能正确表示逻辑关系:”a ≥ =10或a ≤ 0″的C语言表达式是

    A. a > =10 or a< =0

    B. a > =0||a < =10

    C. a > =10 && a < =0

    D. a < =0 || a>=10

    答案: D

    21、 下面的程序是______
    main()
    { int x=3,y=0,z=0;
    if (x==y+z) printf(“****”);
    else printf(“####”);
    }

    A. 有语法错误不能过通过编译

    B. 输出****

    C. 可能通过编译,但是不能通过连接,因而不能运行

    D. 输出####

    答案: D

    22、 执行下面语句后的输出为( )
    int i= -1;
    if (i < =0)printf(“****n”)
    else printf(“%%%%n”)

    A. ****

    B. %%%%

    C. %%%%C

    D. 有语法错,不能执行

    答案: D

    23、 若运行以下程序时,从键盘输入 ADescriptor < CR > ( < CR > 表示回车),则下面程序的运行结果是
    #include <stdio.h>
    main()
    {char c;
    int v0=0,v1=0,v2=0;
    do{
    switch(c=getchar())
    {case ‘a’:case ‘A’:
    case ‘e’:case ‘E’:
    case ‘i’:case ‘I’:
    case ‘o’:case ‘O’:
    case ‘u’:case ‘U’:v1+=1;
    default:v0+=1;v2+=1;
    }
    }while(c!=’n’);
    printf(“v0=%d,v1=%d,v2=%dn”,v0,v1,v2);
    }

    A. v0=7,v1=4,v2=7

    B. v0=8,v1=4,v2=8

    C. v0=11,v1=4,v2=11

    D. v0=12,v1=4,v2=12

    答案: D

    24、 以下程序的输出结果是

    main( )
    {   int  n=4;
    while(n–)printf(“%d “,–n);
    }

    A. 2 0

    B. 3 1

    C. 3 2 1

    D. 2 1 0

    答案: A

    25、 有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求这堆零件总数,请选择填空。
    #include <stdio.h>
    main()
    {int i;
    for(i=100;i<200;i++)
    if((i-2)%4==0)
    if(!((i-3)%7))
    if( ______ )
    printf(“%d”,i);
    }

    A. i%9=5

    B. i%9!=5

    C. (i-5)%9!=0

    D. i%9==5

    答案: D

    26、 以下程序的输出结果是

    { int  i,j,x=0;
    for(i=0;i < 2;i++)
    { x++;
    for(j=0;j < 3;j++)
    { if(j%2) continue;
    x++;
    }
    x++
    }
    printf(“x=%dn”,x);
    }

    A. x=4

    B. x=8

    C. x=6

    D. x=12

    答案: B

    27、 以下程序的输出结果是

    #include < stdio.h >
    #include < string.h >
    main()

    { char b1[8]=”abcdefg”,b2[8],*pb=b1+3;

    while (–pb > = b1) strcpy(b2,pb);

    printf(“%dn”,strlen(b2));

    }

    A. 8

    B. 3

    C. 1

    D. 7

    答案: D

    28、 下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空
    #include <stdio.h>
    main()
    {int a,b,t;
    scanf(“%d%d”,&a,&b);
    while( ___________ )
    {if(a > b)
    {t=a;a=b;b=t;}
    printf(“%d,%dn”,a,b);
    scanf(“%d%d”,&a,&b);
    }
    }

    A. !a=b

    B. a!=b

    C. a==b

    D. a=b

    答案: B

    29、 下面程序的输出结果是(  )。
    #include<stdio.h>
    main()
    {int x=10,y=10,i;
    for(i=0;x>8;y=++i)
    printf(”%d%d”,x–,y);
    }

    A. 10 1 9 2

    B. 9 8 7 6

    C. 10 9 9 0

    D. 10 10 91

    答案: D

    30、 以下程序的输出结果是

    main( )
    {  int i,x[3][3]={9,8,7,6,5,4,3,2,1};
    for(i=0;i<4;i+=2)printf(“%d ”,x);
    }

    A. 5 2

    B. 9 1

    C. 5 3

    D. 9 7

    答案: B

    31、 若有说明: int a[3][4]={0};则下面正确的叙述是

    A. 只有元素a[0][0]可得到初值0

    B. 此说明语句不正确

    C. 数组a中各元素都可得到初值,但其值不一定为0

    D. 数组a中每个元素均可得到初值0

    答案: D

    32、 以下程序的输出结果是

    main( )

    { char a[10]={‘1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,0},*p;

    int i;

    i=8;

    p=a+i;

    printf(“%sn”,p-3);

    }

    A. 6

    B. 6789

    C. ‘6’

    D. 789

    答案: B

    33、 以下程序的输出结果是
    #define  f(x)   x*x
    main( )
    {  int  a=6,b=2,c;
    c=f(a) / f(b);
    printf(“%d n”,c);
    }

    A. 9

    B. 6

    C. 36

    D. 18

    答案: C

    34、 若有说明语句
    char a[]=”It is mine”;
    char *p=”It is mine”;
    则以下不正确的叙述是

    A. a+1表示的是字符t的地址

    B. p指向另外的字符串时,字符串的长度不受限制

    C. p变量中存放的地址值可以改变

    D. a中只能存放10个字符

    答案: D

    35、 请选出正确的程序段
    A) int *p;      B) int *s, k;
    scanf(“%d”,p);    *s=100;
    …          …
    C) int *s, k;     D) int *s, k;
    char *p, c;      char *p, e;
    s=&k;         s=&k;
    p=&c;         p=&c;

    A.

    B.

    C.

    D.

    答案: C

    36、 在位运算中,操作数每右移一位,其结果相当于

    A. 操作数乘以2

    B. 操作数除以2

    C. 操作数乘以4

    D. 操作数除以4

    答案: B

    37、 请读程序:
    #include<stdio.h>
    void FUN(int S[])
    { static int J=0;
    do
    {
    S[J] +=S[J+1];
    }
    while( ++J<2);
    }
    main()
    { int K, A[10]={ 1,2,3,4,5};
    for( K=1;K<3;K++) FUN(A);
    for (K=0;K<5;K++) printf(“%d”,A[K]);
    }
    上面程序输出结果是

    A. 34756

    B. 23445

    C. 35745

    D. 12345

    答案: C

    38、 下列程序段的输出结果是(  )。
    #include<stdio.h>
    void fun(int *x,int *Y)
    {printf(”%d%d”,*X,*Y);*X=3;*Y=4;}
    main()
    {int X=1,Y=2;
    fun(&y,&x);
    prinff(”%d%d”,x,Y);
    }

    A. 2 1 4 3

    B. 1 2 1 2

    C. 2 1 2 1

    D. 2 1 3 4

    答案: A

    39、 下面程序的输出结果是(  )。
    #include<stdio.h>
    main()
    {int a[]={1,2,3,4,5,6,7,8,9,0},*p;
    P=a:
    printf(”%d\n”,*P+9);
    }

    A. 0

    B. 1

    C. 10

    D. 9

    答案: C

    40、 分析以下程序的运行结果(  )。
    #include<stdio.h>
    func(int a,int b)
    {
    int c;
    e=a+b;
    retum c;
    }
    main()  。
    {
    int x=6,r;
    r=func(x,x+=2);
    printf(”%d\n”,r);
    }

    A. 14

    B. 15

    C. 16

    D. 17

    答案: C

    填空题:(每题1.5分,共24分)

    1、 在C语言中(以16位PC机为例),一个char型数据在内存中所占的字节数为_______;一个int型数据在内存中所占的字节数为_______

    答案: 1,2

    2、 设有以下变量定义,并已赋确定的值
    char w; int x; float y; double z;
    则表达式:w*x+z-y所求得的数据类型为__________。

    答案: double

    3、 若x和n均是int型变量,且x和n的初值均为5,则计算表达式后x的值为________,n的值为_________
    x+=n++

    答案: 10,6

    4、 若有定义:int b=7;float a=2.5,c=4.7;则下面表达式的值为______
    a+(int)(b/3*(int)(a+c)/2)%4

    答案: 5.500000

    5、 若有定义:int a=8,b=5,C;,执行语句C=a/b+0.4;后,c的值为

    答案: 1

    6、 以下程序不用第三个变量,实现将两个数进行对调操作:
    #include
    main()
    { int a , b ;
    scanf (“%d%d” , &a , &b);
    printf(“a=%d b=%dn” , a , b );
    a=a+b;
    b=(________);
    a=a-b;
    printf(“a=%d b=%dn”,a,b);}

    答案: a-b

    7、 直接使用printf()的格式符输出十六进制数。本题程序如下:
    ﹟include ﹤ stdio.h ﹥
    void main()
    {
    int I;
    scanf(”%d”,&I);
    printf(”%d(10)﹤ = ﹥% x(16)﹨n”,I,I );
    }
    输入100的执行结果为__________。

    答案: 100(10) < = > 64(16)

    8、 在c语言中,关系运算符的优先级别是——。

    答案: <,>,<=,>=,==,!=

    9、 表示“整数x的绝对值大于5”时值为“真”的C语言表达式是——。

    答案: x>5||x<-5

    10、 下列程序段的输出结果是 _____________ 。

    int n=’c’;

    switch(n++)

    { default: printf(“error”);break;

    case ‘a’:case ‘A’:case ‘b’:case ‘B’:printf(“good”);break;

    case ‘c’:case ‘C’:printf(“pass”);

    case ‘d’:case ‘D’:printf(“warm”);

    }

    答案: passwarm

    11、 设有以下程序:
    main()
    { int n1,n2;
    scanf(“%d”,&n2);
    while(n2!=0)
    { n1=n2%10;
    n2=n2/10;
    printf(“%d”,n1);
    }
    }
    程序运行后,如果从键盘上输入1298;则输出结果为_________。

    答案: 8921

    12、 下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。请填空
    int n=0,c;
    c=getchar();
    while( _______ )
    {if( ______ ) n++;
    c=getchar();
    }

    答案: c!=’n’,c > =’0’&&c < =’9′

    13、 以下程序的运行结果是 __________________
    main()
    { static char a[]={‘*’,’*’,’*’,’*’,’*’};
    int i,j,k;
    for(i=0;i < 5;i++)
    {
    printf(“n”);
    for(j=0;j < i;j++) printf(“%c”,’ ‘);
    for(k=0;k < 5;k++) printf(“%c”,a[k]);
    }
    }

    答案: ****
    ****
    ****
    ****

    14、 若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是____,a[2][1]得到的初值是______。

    答案: 0
    6

    15、 若有定义语句:char s[100],d[100]; int j=0, i=0;,且s中已赋字符串,请填空以实现字符串拷贝。(注:不得使用逗号表达式)
    while(){ d[j]= _____________;j++;i++;}
    d[j]=0;

    答案: s[i++]

    16、 以下函数用以求x的y次方,请填空。
    double fun(double x,int y)
    {
    int i:
    double z=1.0:
    for(i-1;i_________;i++)
    z=________;
    return z:
    }

    答案: <=y z*x

    程序设计题:(请在以下3题中任选2题作答,若3道全部解答,以前2道为准,每题8分,共16分)

    1、 设某国今年的国民生产总值为45600亿元,若今后每年以8%的增长率增长,计算多少年后能实现国民生产总值翻两番?

    答案: main()
    {
    int n;
    float a,s;
    for(s=0,n=0,a=45600.0;s<=3*45600.0;n++)
    {
    a=a+a*0.08;
    s=a;
    }
    printf(“%dn”,n);
    }
    本题参考答案:15

    2、 编程序求1+3+5+7+9+…这样的数之和。如果累加数大于900时,则程序终止并输出结果。

    答案: main()
    {
    int i=1,sum=0;
    while(sum < =900)
    {
    sum=sum+i;
    i=i+2;
    }
    printf(“n%d”,sum);
    }
    参考答案: 936

    3、 编程序求1~125的平方根的和并输出结果。(保留小数点两位)

    答案: include “math.h”
    main()
    {float a,s=0;
    clrscr();
    for(a=1;a < =125;a++)
    {s=s+sqrt(a);
    }
    printf(“%.2f”,s);
    }
    本题答案:937.08

喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:c语言笔试模拟题以及答案

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share