江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
江苏省计算机等级考试C语言第一至三章考点

第一、二章节必会试题:

1.以下叙述中正确的是_________(多选)

A)在编译时可以发现注释中的拼写错误

B)C语言程序的每一行只能写一条语句

C)main(){}必须位于程序的开始
D)C
语言程序可以由一个或多个函数组成

E)main()函数至少必须有一条语句

F)C程序总是从main函数的第一条语句开始执行

G)C程序总是在执行完main函数的最后一条语句后结束

 

第三章必会试题:

考点1:常量与变量

在程序执行过程中,值保持不变的量称为常量。变量是指向内存中的一个单元符号。在C语言中,规定变量只能由字母、数字和下划线组成,且第一个字符必须是字母、数字或下划线,常量分为:整型常量、实型常量、字符型常量、字符串型常量、标识符常量

(1)整型常量分为:八进制(0开头,由数字0—7组成,且第一个数字必须为0),十进制(由数字0—9组成,且第一个数字不能为0),十六进制(0x开头,由数字0—9,a--f组成)

(2)整型变量:基本整型(int)、短整型(short int)、长整型(long int),长整型以L结尾,无符号整数以U结尾(3)实型常量:十进制小数形式与指数形式(e表示,e之前必须要有数字,且在Ee之后的指数必须是整数)

(4)实型变量:float,double

(5)字符型常量:用一对单括号引起来的一个字符或以’\’开头的字符序列

(6)字符变量:char

(7)字符串型常量:用一对双括号引起来的若干个字符,在字符串的最后有结束标记”\0”,C语言中没有专门的字符串变量,只能以字符数组存储

1.设有四个常数:4e0.5’\87’0x5A” \” ”,其中符合C语法规则的常量是_____

2.以下常数表示中不正确的是____________

A.’\55’  B.’55’    C.’\x55’   D.0x55

3.以下选项中,不能作为合法常量的是_________

A.0X2A    B.015   C.2.8e9   D.123.6e0.4

4.设有声明语句:char a=’\72’;则变量a__________

A.包含一个字符     B.包含2个字符   C.包含三个字符    D.声明不合法

5.以下哪个是合法的常量______________

     A.35u   B.1.25e3.4    C.’\96\45’   D.0387

6.以下选项中不能用做用户自定义标识符的是__________

A. length_      B._length       C.length.d       D.For

考点2:运算符与表达式

(1)算术运算符:单目运算符:+,- 双目运算符:+,-,*,/,%

(2)关系运算符:> , <, >=, <=,  ==,!=,关系成立时,运算结果为整数1,否则为整数0

(3)逻辑运算符:&&(逻辑与)||(逻辑或),!(逻辑非),优先级从高到底:!, ||, &&

              &&||有短路效应,&&只要第一个为假,则后面不再管结果,||只要有一个为真,则后面不再管结果

(4)赋值运算符:= +=-=*=/=%=^=

(5)自增、自减运算符:++,--,只有变量才能自增,常量是不能自增的

(6)逗号运算符:其运算顺序为从左到右依次计算各个表达式的值,并把最后一个表达式的值作为整个表达式的值

(7)sizeof()运算符:用来计算某种类型或数据做占用的字节数

(8)条件运算符:条件表达式”?:”为三目运算符,要求有三个操作对象

(9)各类运算符号的顺序:首先执行:!,++,--,然后算术运算符,然后关系运算符,然后逻辑运算符,然后条件运算符,然后赋值运算符,然后逗号运算符

例题:

    1.设有语句int a=6, b=3; float x=8,y; y=b/a*x/2;,y的值是________________

2.有数学式3xy/5ab中,变量xy的取值为整数,而变量ab的取值为实数,在C程序中对应的正确表达式是______________________

A.3/5*x*y/a/b    B.3*x*y/5/a/b   C.3*x*y/5*a*b       D.3/a/b/5*x*y

3..设有语句”float x=2.9;int a=5,b;b=a+x;”,则变量b的值是___________

4.a1a2a3a4均为整型变量,则以下选项中符合C语法规则的表达式是______

A.a1=25%3.3     B.a2=a1+a3=3*5    C.a3=078  D.a4=0xa2

   5.设有语句”int a,b,c;a=b=c=5;”,执行语句”b+=++a>b &&++c>b;”,a,b,c的值分别为____

    6. x为整数,C中能正确的表达数学式0x<5的是_______

A.0<=x<5    B.x=0||x=1||x=2||x=3||x=4  C.x>=0||x<5   D.!(x<0||x>=5) 

7.设有变量说明:”short int a=0,b=0;”,则表达式sizeof(‘a’+’b’)的值是_____

A.1   B. 2   C.4    D.8

    8.设有语句:char s[ ]=”Rep\0Ch”; int m=sizeof(s);m的值是_________

9.执行以下语句后,a的值为___________ int a=0,m=3,n=10;  a=(m++,m+n);

10.设有说明语句int a=3,b=2,c; c=--a==b++;a,b,c的值为_____________________

   11.设有说明语句”int a,b;”,执行语句”b=(a=3*5,a*4),a+15;”后,b的值为________

第四章考点:

考点一:字符输入函数(getchar)

考点二:格式输入函数(scanf)

  1。设有说明语句:double x, 不能通过scanf语句正确的输入数据的语句是________

  A.scanf(“%lf”,x);      B.scanf(“%f”,&x);   C.scanf(“%lf”,&x)   D.scanf(“%le”,&x);

  例题2.

考点三:字符输出函数(putchar)

考点四:格式输出函数(printf)

2:如有声明”float f=123.45678;”,则执行语句”printf(“%.3f”,f);”后,输出结果为(  )

A.1.23e+02    B.123.457    C.123.456780    D.1.234e+02

第五、六章考点:

考点一:分支结构(单分支与多分支结构)

   1.以下函数中输入5,3,输出结果是_______

      #include <stdio.h>

      int main()

      {

          int a,b,max;

          scanf(“%d,%d”,&a,&b);

          if(a>b)

              max=a;

          else

              max=b;

          printf(“%d%d”,a,b);

          return 0;

      }

考点二:switch语句

1.执行以下程序段后,变量i的值是___________

 int i=10;

 switch(i)

{

    case 9: i+=1

    case 10: i+=1;

    case 11: i+=1;

    default: i+=1;

}

考点三:while语句

1.while(!a)中,其中的!a与表达式_____________等价

 A.a==0     B.a==1     C.a!=1    D.a!=0

2.有以下程序段,while循环次数为__________

  int k=0;

  while(k=1)  k++;

考点四:do…while语句

1.以下程序输出的第一行是____________,第二行是______________

    #include <stdio.h>

    void main(void)

    {

       int x=6;

       do

       {

          x-=2;

            printf(“%d\n”,x);

       }while(--x);

     }

2.设整型变量x的当前值为3,执行以下循环语句后,输出结果为___________

   do

{

     x-=2;

        printf(“%d\n”,x);

   }while(!(--x));

3。下面关于whiledo……while循环语句的叙述中正确的是______

A.do……while的循环体至少执行一次

B.while的循环体至少执行一次

C.do……while的循环体不能是复合语句

D.do……while允许从循环体外跳转到循环体内

考点五:for循环语句

     1.循环语句for(<表达式1>;<表达式2>;<表达式3>)<循环体>中,<循环体>执行情况是___________

     A.至少执行一次   B至少执行两次    C.可能执行,也可能不执行  D.不执行

     2.有如下程序:

       void main()

       {

           int i,sum=0;

           for(i=1;i<=3;i++)  sum+=i;

           printf(“%d\n”,sum);

       }

 该程序的执行结果是_______________

       A.6   B.3  C.无穷循环   D.0

     3.设有语句”for(int i=5,sum=0;i<10,sum++;i++) sum+=i;”,for()语句的执行情况是_____________________

 A.循环0   B.循环4   C.循环5    D.循环6

考点六:break,continue

     1。执行以下程序后,输出___________

       int s1=0,s2=0,s3=0,s4=0;

       for(int t=1;t<=4;t++)

           switch(t)

           {

              case 4: s1++;break;

              case 3: s2++;break;

              case 2: s3++;

              default: s4++;

           }

           printf(“%d,%d,%d,%d\n”,s1,s2,s3,s4);;

     2.continue语句只能用在______________语句中

     3.下面程序的功能是:输出100以内(不含100)能被3整除且个位数为6的所有整数,请填空:

       #include <stdio.h>

       #include <stdlib.h>

      main()

      {

         int i;

         int j;

         for(i=0;_____________;i++)

         {

            j=i*10+6;

            if(_____________) continue;

            else printf(“%d\n”, j);

         }

      }

 

 

 

考点3switch语句

例题:下列程序运行后的输出结果,第一行是__________(2008)

#include <stdio.h>

main()

{

  int i,a=0,c=2;

  switch(++a,a*c)

  {case 1: printf(“1”);

   case 2: printf(“2”);

   case 3:printf(“3\n”);break;

   default:printf(“other\n”);

  }

}

 

第六章:循环控制

考点1whiledo while语句实现循环

例题:程序”int x=3; do{printf(“%d”,x--);}while(!x);”的执行结果是____________(2006)

A.3  2  1  B.2   C.3   D.无穷循环

例题:以下程序运行时输出的结果是_____________(2007)

main()

{

  int s=1,n=235;

  do

  {

s*=n%10;

n/=10;

  }while(n);

  printf(“%d\n”,s);

}

例题:以下程序运行后输出结果的第一行为____________,第二行为_______________(2007)

#include  “stdio.h”

void main()

{ int i=5;

  do

  {switch(i%2)

{ case 0:i--;break;

  case 1:i--;break;

}

i--;printf(“%d\n”,i);

  }while(i>0);

}

考点二:for循环

例题:若有声明”int i,k=1;unsigned j;”,则下列语句执行时会出现无限循环的语句是___________(2008)

A.for(j=15;j>0;j-=2) k++;            B.for(j=0;j<15;j+=2)    k++;

C.for(i=0;i<15;i+=2) k++;            D.for(i=15;i>0;i-=2)  k++;

例题:以下程序运行时输出结果为____________________(2007)

#include <stdio.h>

void main()

{ int i,sum=0;

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

 {switch(i)

  {case 0:

   case 1:sum++;

   case 3:sum++;

   case 4: sum--;break;

  }

}

printf(“%d\n”,sum);

}

例题:以下程序执行后,输出结果的第一行为____________,第二行为________________(2006)

#include <stdio.h>

void main()

{int w=0,i;

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

   switch(w++)

   {case 0:

case 1:

case 2:

case 3: printf(“%d\n”,w++);

   }

}

例题:下列关于语句的说法中正确的是___________________(2004)

A.      do…while语句的循环体至少会被执行1

B.       while语句的循环至少会被执行1

C.       for语句的循环体至少会被执行1

D.      c语言中只能用do,do…whilefor语句实现循环

例题:定理:对于任意一个正整数都可以找到至少一串连续奇数,它们的和等于该正整数的立方。例如:33=27=7+9+11,43=64=1+3+5+7+9+11+13+15。以下程序用[2,20]之间的所有正整数验证该定理。(2004)

#include <stdio.h>

main()

{

  long n,i,k,j,p,sum;

  for(n=2;n<=20;n++)

  {k=n*n*n;

   for(i=1;i<k/2;i+=2)

{for(j=i;sum=0;__________;j+=2)  sum+=j;

   if(sum==k)

   {printf(“\n%ld*%ld*%ld=%ld=”,n,n,n,sum);

for(p=i;p<___________;p+=2) printf(“%ld+”,p);printf(“%ld”,p);

break;

   }

}

if(i>=k/2) printf(“\n error!”);

  }

}

例题:以下程序采用递推法计算

考点三:break,continue语句

例题:以下程序运行后输出结果的第一行为_______________-,第二行为_______________(2007)

#include <stdio.h>

void main()

{int i=5;

do

{switch(i%2)

 { case 0:i--;break;

   case 1:i--;break;

 }

 i--;printf(“%d\n”,i);

}while(i>0);

}