C语言等级考试复习资料
题型一 单项选择题
考点1:运算符与表达式
1. 已知int i=10; 表达式"5<=i<=10"的值是( B ) 。   真为1
(A) 0            (B) 1            (C) 10            (D) 没有正确答案
2. 若变量x和y都为int类型,x=100,y=200,下面程序段的输出结果是(B )。
printf("%d",(x,y));      没有括号
(A) 200        (B) 100        (C) 100 200    (D) 输出不确定的值
3. 以下程序的输出结果是( D )。
#include "stdio.h"
void main()
{
    int a=-1,b=4,k;
    k=(++a)&&!(b--<=0);
    printf("%d %d %d\n",k,a,b);
}
(A)1 0 4    (B)1 0 3    (C) 0 0 3    (D)0 0 4            i=0时,a=2,先取值后++,f(2),a=3;f函数内a=c++,先取值后++,a=3(这个a的作用于在函数f内,不影响外部的a),c=4,最后的a被return给k;k=3;
i=1时,a=3,先取值后++,f(3),a=4;f函数内a=c++,先取值后++,a=4,c=5,a被return给k,k=4。
i=2时,循环结束。
最后输出k为4
4.下述程序的输出结果是(D    )。
#include "stdio.h"
void main()
{
    int a[]={7,4,6,3,10};
    int m=10,k,*ptr=&a[0];
    for(k=0;k<5;k++)
        m=*(ptr+k)<m?*(ptr+k):m;
    printf("%d\n",m);
}              根据程序要求算得
(A) 10        (B) 4        (C) 6      (D) 3
5.若变量均已正确定义并赋值,以下合法的C语言赋值语句是(A    )。根据C语言的定义
A) x=y==5; B) x=n%2.0  C)  x+n=i;  D)  x=5=4+1;
6.执行下面程序段,B的值应为(B    )。
int x=35;
char z='A';
int B;
B=((x&15)&&(z<'a'));  结果为真就为1
A) 0  B)  1    C)  2    D)  3
7.设a、b都是int型变量,且a、b初始值分别为5和10,则表达式a=a+b++,b+a,b+1的值为(B    )。 计算可得
c语言二维数组表示方法
A) 11  B) 12  C) 15  D) 16
8.若以下选项中的变量已正确定义,则正确的赋值语句是(B    )。
A) x1=26.8%3  B) x3=0x12  C) 1+2=x2  D) x4=1+2=3
9.表达式((356%100)&&(-1&&1))*10的值为(    C    )。
A) 0  B) 1  C) 10  D) 560
10.C语言中运算对象必须是整形的运算符是(    A )。
(A)%        (B)/        (C)=        (D)<=          有定义可得
11.设int x=1,y=1;表达式(!x||--y)的值是( A    )。  计算等于0
(A)0    (B)1            (C)2        (D)-1
考点2:循环结构
12. 求取满足式12+22+32+……+n2≤1000的n,正确的语句是(        A)。
(A) for(i=1,s=0;(s=s+i*i)<=1000;n=i++);                   
(B) for(i=1,s=0;(s=s+i*i)<=1000;n=++i);
(C) for(i=1,s=0;(s=s+i*++i)<=1000;n=i);                   
(D) for(i=1,s=0;(s=s+i*i++)<=1000;n=i);
                  根据题中表达式对应选项满足的循环结构
13. 以下叙述中正确的是( D   
(A) C语言中所有的循环语句都是先判断条件再执行循环体
(B) break语句只能中断循环
(C) continue 语句可以结束所有的循环
(D)C语言中,任意表达式都可作为循环条件,只要能做出0和非0的判断即可
根据定义判断正误得到
考点3:用户自定义数据类型
14. 设有以下定义:
struct node
{
  int data;
  struct node *next;
}*p;
则以下的语句中正确的是( B )。
(A) p=malloc(sizeof(struct node))       
(B) p=(struct node *)malloc(sizeof(struct node))
(C) *p=(struct node *)malloc(4)       
(D) p=(struct node )malloc(sizeof(struct node))
15. 运行以下程序的输出结果为(A )。
# include <stdio.h>
void main()
{
  enum color {Black=1,Red,Blue,Green};
  enum color c1,c2;
  c1=Red; c2=Blue;
  printf("%d,%d\n",c1,c2);
函数 fun 的功能是:求出无符号十进制数 n 中包含 0 的个数,及各位数字的最大值
}
(A) 2,3        (B) 1,2        (C) 1,1        (D) 0,-1
16. 根据下面的结构体类型及其结构数组的定义,值等于‘A’的表达式是( D )。
        struct season
        {
            char name[10];
            int day;
        };
        struct season s[4]={“Spring”,90,”Summer”,91,”Autumn”,92,”Winter”,92};
(A) s[3].name[0]                  (B) s[3].name
(C) s[2].name                    (D) s[2].name[0]
按照程序算得
17.对于如下枚举类型定义,枚举量Pasica的值为(C    )。
  enum language{Basic=3,Assembly=6,Ada=100,COBOL,Pasica}
A) 4 B) 7 C) 102 D) 103
18.设有以下定义:
union data
{
int d1;
float d2;
}demo;
则以下叙述中,错误的是(D    )。
A) 变量demo与成员变量d2所占的内存字节数相同
B) 变量demo中各成员的地址相同
C) 变量demo和各成员的地址相同
D) 若给变量demo.d1赋89后,demo.d2中的值是89.0
赋值后其中的值应为90
19.设有如下说明
typedef struct
{
int n;
char c;
double x;
}STD;
则以下选项中,能正确定义结构体数组并赋初值的语句是(    A)。
A)STD s[2]={{1,'A',62}},{2,'B',75}};
B)STD s[2]={1,"A",62,2,"",75};      格式错位
C)struct s[2]={{1,'A'},{2,'B'}};
D)struct s[2]={{1,"A",62.5},{2,"B",75.0}}
20.若有以下说明和定义
union dt
{
int a;
char b;
double c;
}data;
以下叙述中,错误的是(    C)。
A)data的每个成员起始地址相同
B)变量data所占的内存字节数与成员C所占字节数相等
C)程序段:data.a=5;printf("%f\n",data,c);输出结果为5.000000    正确结果应为5
D)data可以作为函数的实参
21.设有如下枚举类型定义:
enum language {Basic=3,Assemble,Ada=100,COBOL,Fortran};
则枚举量Fortran的值为(A    )。
A) 102  B) 103  C) 4  D) 7
考点4:宏定义
22. 以下程序的输出结果是( D  )。
# include <stdio.h>
# define f(x) x*x
void main()
{
  int a=6,b=2,c;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。