C语言自学考试模拟试题及答案

本文提供了一系列C语言自考模拟试题及其答案解析,包括基本语法、数据类型、流程控制等内容,帮助考生掌握C语言核心知识点。
 
C语言自学考试模拟试题及答案
一、单项选择题
  1.各种基本数据类型的存贮空间正确的长度排列为_____C_____.
  A.Char<long<int<float<double       B.Double<float<long<int<char
  C.Char<int<long<float<double       D.Float<int<long<char<double
  2.下面的变量说明中______C_______是正确的。
  A.Charabc    B.Char abc
  C.Char abc       D.Char abc
  3.main
  {  int n
  ( n=6*4n+6),n*2
  printf“n=%d/n”n);
  }   此程序的输出结果是______B________.
  A.30    B.  24     C.  60      D.  48
  4.若有如下定义,则___C______________D__是对数组元素的正确的引用。。
  int  a[10] *p
  p=a
  A.  *&a[10]     B.  a[11]      C. *p+2      D. *p
  5.设整型变量n的值为2,执行语句“n+=n-=n*n后,n的值是___C_______
  A.  0     B.  4    C. - 4     D.  2
  6.表达式y=13>12156>789)的值为____C________ .
  A   9     B   8    C  15    D.  1
  7.x=5y=3 y*=x+5 y的值为___D____________.
  A.  10   B.  20    C.  15      D.  30
  8.C语言的输入与输出操作是由______C______完成的。
  A.输入语句                  B.输出语句
  C.输入与输出函数            D.输入与输出语句
  9.语句 fork=0k<5++k
  {  ifk= = 3 continue
  printf“%d”k);
  }的输出结果为______B_____.
  A.012    B. 0124     C.  01234      D.  没有输出结果
  10.从循环体内某一层跳出,继续执行循环外的语句是:___A________.
  A. break语句                  B.return语句
  C.continue语句                 D.空语句。
  11.Break语句的正确的用法是______B______.
  A.无论在任何情况下,都中断程序的执行,退出到系统下一层。
  B.在多重循环中,只能退出最靠近的那一层循环语句。
  C.跳出多重循环。
  D.只能修改控制变量。
  12.两个指针变量的值相等时,表明两个指针变量是______B____.
  A.占据同一内存单元。              B.指向同一内存单元地址或者都为空。
  C.是两个空指针。                  D.都没有指向。
  13.不正确的指针概念是_____D_____.
  A.一个指针变量只能指向同一类型的变量。
  B.一个变量的地址称为该变量的指针。
  C.只有同一类型变量的地址才能存放在指向该类型变量的指针变量之中。
  D.指针变量可以赋任意整数,但不能赋浮点数。
  14.char ch=‘A’;表达式ch!(ch>=‘A’&&ch<=‘Z’)?ch:(ch+32)的值是_________.
  A.A     B.  a    C. Z     D.  z
  15.根据C语言的语法规则,下列_____A__个是不合法标识符。
  A.While    B. Name     C. Rern5    D. _exam
  16.设单精度变量fg均为5.0,使f10.0的表达式是________A__.
  A.  f+=g     B.  f-=g+5      C.  f*=g-15       D.  f / =g*10
 200310月甘肃省自考C语言程序设计真题
  
一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其代码填入题干后的括号内。每小题1分,共20分)
  1.程序中定义以下宏 #define Sab a*b,若定义 int area且令area=S3+13+4),则变量area的值为(A
  A 10 B 12 C 21 D 28
  2.正确的标识符是()
  A a B a=2   Ca.3  D a_3
  3.表达式1&3&5&7的值为(A     A 1       B3 C5     D7
  4.语句printf″s//t″)的输出结果为B       A s//t   B s/t C s/ D s
  5. 执行下列语句中,sum变量的值是B
  int sum=0
  forint i=0i<10i++sum+=i);
  A 45 B 55 C 0 D编译错误
  6.已知有共用体变量data1定义如下:
  union data
  { int i
  char ch
 
  float f
  } data1则变量data1所占的内存存储空间可表示为C
  Asize ofint Bsize ofchar
  Csize offloat
  Dsize ofint+size ofchar+size offloat
  7.fp是指向某文件的指针,且feoffp)的返回值是非零值,则表示
  ()
  A已读到此文件末尾 B未读到此文件的末尾
  C此文件已关闭 D此文件尚未被打开
  8.以下c语言函数声明中,不正确的是()
  Avoid fun int x int y); Bfun int x int y);
 
  Cint fun int xy); Dchar *fun char *s);
  9.下列选项中,不合法的C语言关键字是()
  Aauto Bdefault Cstatic Dvar
  10.x=4,则x*=x+2的值为()
  A36 B24 C18 D20
  11.函数调用语句func((exp1exp2),(exp3exp4exp5));中,实参的个
  数为()
  A1 B2 C4 D5
  12.a5,执行下列语句后,b的值不为2的是()
  Ab=a/2 Bb=6--a
  Cb=a%2 Db=a>321
  13.假设指针p1已经指向了某个整型变量,要使指针p2也指向同一个变
  量,则下面各项中正确的是()
 
  Ap2=**p1 Bp2=*&p1
  Cp2=*p1 Dp2=&*p1
  14.以下运算符中,运算对象必须是整型的是()
  A/B%=C=D=
  15.以下关于typedef的叙述中错误的是()
  Atypedef可以增加新的类型
  Btypedef可以定义各种类型名,但不能用来定义变量
  Ctypedef只是将已有的类型用新的标识符来代表
  D使用typedef有利于程序的通用和移植
  16.若执行完成下列语句:
  int a=3b=6c
  c=ab2
  则变量c的二进制值为()
  A00011100 B00010100 C0001000 D00011011
  17.设有定义int x=1 int y=‘a’<‘A’x-x++;,则变量y的值是
  ()
  A0 B2 C1 D3
  18.以下关于宏替换的叙述不正确的是()
  A宏替换只是字符替换 B宏名无类型
  C宏替换不占用运行时间 D宏替换不占用编译时间
  19. 以下对枚举类型名的定义中正确的是()
  Aenum s={abc} Benum s {a=9b=2c}
  Cenum s={′a′ ′b′ ′c′}
  Denum s{′a′ ′b′ ′c′}
  20. 假设指针p已经指向某个整型变量x,则*p相当于()
  A&x B&p Cx D*x     1.A     2.D     3.A     4. B    5.B     6.C     7.A     8.C

9.D    10.B    11.B    12.C    13.D    14.B    15.A    16.D

17.C   18. D   19. B    20. C
  二、多项选择题(在每小题的五个备选答案中,选出二至五个正确答案,并将其代码填写在题干后的括号内;错选、多选不得分。每小题2分,共10分)
  1. C语言中的文件类型有()
  A索引文件 B文本文件CASCII文件
  D二进制文件E随机文件
  2. 以下关于C语言中循环的描述正确的是()
  Awhiledo-while循环体内应包含使循环趋于结束的语句
  Bdo-while的循环体不能是复合语句
  Cdo-while的循环体至少无条件执行一次
  Dfor循环中可以使用break语句跳出循环体
  Efor循环只能用于循环次数已经确定的情况
  3. 合法的变量名有()
  Aa_1_2 Bb2 C_abc DABC E$1
  4. 整型变量的类型标识符是()
  Ashort Blong CUnsigned int
  Dint Echar
  5. 以下叙述中正确的是()
  A一个C语言程序有且仅有一个main函数
  BC语言程序中,main函数是没有参数的
  C一个函数通过其他函数间接的调用了自身,这种情况也是一种递归
  调用
  Dmain函数是由系统调用的
  E若要通过函数参数带回一个或多个返回值,则应使用按地址传送的参数结合方式
  三、判断题(认为对的,在题后的括号内打″√″,认
  为错的打″×″。每小题1分,共6分)
  1.若有说明int c;则while c=getchar());是错误的C语句。()
  2.C语言中,共用体类型的变量在程序运行期间,所有成员都在内存中。()
  3.在一个函数内部的复合语句中定义的变量,只在该复合语句范围内有效。()
  4.C语言程序中,一个文件中的函数可以引用存储在另一个文件中的函数和变量。()
  5.使用continuebreak语句,都可以使得C程序的执行直接从循环中跳出。()
  6.a为一维数组名,则*a+i)与a[i]等价。()
  四、阅读程序,将程序运行结果填写到题后的横线上(每小题5分,共25分)
1. #include ″stdio.h″

 main()

{    static char str[]=″Language″;

     char *s=&str[8];

     while (--s>=&str[0]) putchar (*s);

     putchar(′/n′);
}

输出结果:___________________________

2. main( )

{ int a[6]={12,4,17,24,27,16};

  int b[6]={27,13,4,25,23,16};

  for (int i=0;i<6;i++)

  {   for (int j=0;j<6;j++)

      if (a[i]==b[j])

         break;

    if (j<6) printf(″%d″,a[i])

   }

}

输出结果:_____________________________

3.  #include <stdio.h>

    int mian( )

{  int i=0,sum=0;

   while (1)

   {  sum+=i;  

      i++;

      if (i>5) break;

    }

    printf (″sum=%d/n″,sum);

}

程序运行结果:                         

4.  int fun(int n)

{ if (n>0)          

     return n*fun(n-1);

else

     return 1;

}

main()

{  int a=fun(4);

   printf(″a=%d/n″,a);

}

程序运行结果:____________________

5.  fun (int i)    

{  static int s=3;

      s+=i

   return (s);}

main()

{ int a=2,b=1,s;

  s=fun(a); s=fun(b);

  printf(″%d/n″,s);}



程序运行结果:____________________



五、程序填空题(根据题意要求,将程序补充完成。每

空2分,共22分)


1.以下程序输入整数a,b的值,然后交换a,b的值,并输出交换后的结果。

Vodi swap(①_________________)

{  int t;

   t=*a;

   ②__________________

③__________________

   }

   main()

   {  int a,b;

scanf(″%d,%d″,&a,&b);

④_____________________

printf(″a=%d,b=%d″,a,b);

    }

2.以下程序的功能是:从键盘输入一串字符(以回车换行符结束),统计

   其中小写英文字母的个数,将结果保存在变量count中。

   main()

   {   

int ①__________________;

char c;

②______________________

while (c!=′/n′)

{

    if (③______________________)

  ④______________________;

c=getchar();

        }

        printf(″have typed %d lower letters″,count);

}

3. 下面程序的功能是用函数递归方法计算菲波那契数列,请填空完善之。

   main()                              

   {  int n,m;

scanf(″%d″,&n);

m=①__________________;

printf(″%d″,m);

}

int fibo(n);

    int n;

{  if(n==1) ②___________________;

   else if(n==2) return(1);

        else return (③_________________);

}

六、编程题(第1小题8分,第2小题9分,共17分)

1.求出10至1000之内能同时被2、3、7整除的数,并输出。

2.输出整数n,求表达式
   的值。要求,程序中求2x的功能部分必须在一函数中完成,函数名使

   用expt。
试题参考答案及评分标准

一.单项选择题(每小题1分,共20分)

1
A     2D     3A     4 B    5B     6C     7A     8C

9
D    10B    11B    12C    13D    14B    15A    16.D

17
C   18. D   19. B    20. C

二.多项选择题(错选、多选不得分。每小题2分,共10分)

    1
B C D    2A C D   3A B C D      4A B C D    5A C D E        

三.判断题(每小题1分,共6分)

    1
×     2×      3√      4√      5×       6√  

四、阅读程序,将程序运行结果填写到题后的横线上(每小题5分,共25分)

    1. egaugnal          2. 4  27  16       3. 15       4. 24      5. 6

五.程序填空题(每空2分,共22分)  

        1
int *a, int *b     *a=*b;      *b=t;       swap(&a,&b);

2.
count=0                    c=getchar(); (scanf″%c″,&c);)

   
c>=′a′&&c<=′z′             count++;

3.
fibo(n)      return(o)    fibo(n-2)+fibo(n-1)  

六.编程题(第1小题7分,第2小题8分,共15分)

1. main()

   {   int i;                          

for (i=10; i<=1000; i++)

    if (i%2==0&& i%3==0&& i%7==0)

        printf(″%5d″,i);

   }

2. #include <stdio.h>

float expt(int n)

   {   float r=1;                       

   if (n>0)

for(int i=0; i<n; i++)     r*=2;

   return r:

   }

   main()

   { int n;

   float sum=0;

   scanf(″%d″,&n);

   for (int i=0;i<=n;i++)

        for(int j=0;j<=i;j++)

sum+=expt(j);

   printf(″%f″,sum);

   }

说明:答案必须填写在答题卡的相应位置上,否则不得分。 1.C语言中字符型(char)数据在内存中的存储形式是________。 A、原码 B、反码 C、补码 D、ASCII码 2.C语言基本数据类型包括________。 A、整型、实型、逻辑型 B、整型、实型、字符型 C、 整型、字符型、逻辑型 D、整型、实型、逻辑型、字符型 3.在C语言中,int类型数据在内存中占用________。 A、2字节 B、4字节 C、由编译系统决定 D、由用户决定 4.运算符有优先级,C语言中关于运算符优先级的正确叙述是________。 A、逻辑运算符高于算术运算符,算术运算符高于关系运算符; B、算术运算符高于关系运算符,关系运算符高于逻辑运算符; C、算术运算符高于逻辑运算符,逻辑运算符高于关系运算符; D、关系运算符高于逻辑运算符,逻辑运算符高于算术运算符。 5.下面关于C语言语句的叙述,错误的是________。 A、C语言一行可以允许写多条语句; B、C语言语句用分号结束; C、语句一行写不下时,可以用逗号换行 ; D、语句一行写不下时,可在任意一空格处回车换行 。 6.下面数据中不属于字符型常量的是________。 A、“\n” B、‘\0’ C、‘A’ D、‘\t’ 7.11.以下选项中,当x为大于1的奇数时,值为0的表达式__________ 。 A、 x%2==1 B、 x/2 C、x%2!=0 D、x%2==0 8.C语言源程序名的后缀是__________ 。 A 、 .exe B、 .C C、 .obj D、 .cp 9.设所有变量均为int型,则表达式(a=5,b=2,b++,a-b)的值是________。 A、7 B、8 C、6 D、2 10.若有说明语句:int a;float b;,以下输入语句正确的是________。 A、scanf("%f%f",&a,&b); B、scanf("%f%d",&a,&b); C、scanf("%d,%f",&a,&b); D、scanf("%6.2f%6.2f",&a,&b);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值