=d)==1)    printf("%d\\n",d+1); else     printf("%d\\n",d+2);}执行后输出的结果是___D___。A.2  B.编译时有错,无结果  C.4 D.3  2.设x为int型变量,则执行以下语句后,x的值为:intx=10; x*=x/=-x;     prin" />
最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

四川大学C语言上机考试题

来源:动视网 责编:小OO 时间:2025-09-25 16:27:09
文档

四川大学C语言上机考试题

1.有以下程序#includevoidmain(){inta=5,b=4,c=3,d=2; if(a>b>c)    printf("%d\\n",d); elseif((c-1>=d)==1)    printf("%d\\n",d+1); else     printf("%d\\n",d+2);}执行后输出的结果是___D___。A.2  B.编译时有错,无结果  C.4 D.3  2.设x为int型变量,则执行以下语句后,x的值为:intx=10; x*=x/=-x;     prin
推荐度:
导读1.有以下程序#includevoidmain(){inta=5,b=4,c=3,d=2; if(a>b>c)    printf("%d\\n",d); elseif((c-1>=d)==1)    printf("%d\\n",d+1); else     printf("%d\\n",d+2);}执行后输出的结果是___D___。A.2  B.编译时有错,无结果  C.4 D.3  2.设x为int型变量,则执行以下语句后,x的值为:intx=10; x*=x/=-x;     prin
   1.有以下程序

#include

void main()

{ int a=5,b=4,c=3,d=2;

  if(a>b>c)

       printf("%d\\n",d);

  else if((c-1>=d)==1)

       printf("%d\\n",d+1);

  else  

       printf("%d\\n",d+2);

}

执行后输出的结果是___D___。

A.2     B.编译时有错,无结果     C.4   D.3

 

 

2.设x为int型变量,则执行以下语句后,x的值为:

int x = 10;  

x*=x/=-x;  

        printf("%d\\n", --x);   --D---

A.10     B.1    C.-10  D.0

 

 

3.下面程序的输出是_C___。

main()

{ int x,i;

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

{ x=i;

if(++x%2==0)

if(++x%3==0)

if(++x%7==0)

printf("%d ",x);

}

}

A.39 81    B.42 84  C.28 70   D.26 68

 

4.在C语言中,合法的字符常量是---B----

A."a"      B.'\'    C.97   D.a

5.已知int x=12,y=3;执行下述程序后,变量x的值是_D___。

do

{ x/=y--;

}while(x>y);

printf("%d\\n",x);}

A.2   B.1   C.3   D.程序运行有错误

6.有以下程序

#include

void main()

{ int m=3,n=4,x;

  x=-m++;

  x=x+8/++n;

  printf("%d\\n",x);

}

程序运行后的输出结果是__C____。

A.3   B.5   C.-2   D.-1

7.若a、b、c1、c2、x、y均是整型变量,正确的switch语句是______。

     ①

      switch(a+b);

      {  case 1:y=a+b;break;

      case 0:y=a-b;break;

     }

     ②

     switch(a*a+b*b)

     {  case 3:

        case 1:y=a+b;break;

        case 3:y=b-a;break;

     }

     ③

     switch  a

     {  case c1:y=a-b;break;

        case c2:x=a*b;break;

        default:x=a+b;

     }

     ④

     switch (a-b)

     {  default:y=a*b;break;

        case  3:case 4:x=a+b;break;

        case 10:case 11:y=a-b;break;

     }----A-----

A.④    B.③    C.①   D.②

8.有以下程序

     #include

void main()

{      int  y=10;

while (y--);  printf("y=%d\\n", y);

}

程序执行后的输出结果是---A---

A.y=-1   B.while构成无限循环   C.y=0   D.y=1

9.有以下程序

#include

void main()

{ int n=0,m=1,x=2;

if(!n) x-=1;

if(m) x-=2;

if(x) x-=3;

printf("%d\\n",x);

}

执行后输出结果是_-4____

10.有如下程序

#include

void   main()

{

  int x=23;

   do

   {printf("%d",x--);

    }

   while(!x);

}

  则输出结果为(  23   )

11.以下程序运行后的输出结果是1 2 3_____。

#include

void main()

{ int i, m=0, n=0, k=0;

for(i=9; i<=11; i++)

switch(i/10)

{ case 0: m++; n++; break;

case 10: n++; break;

default: k++; n++;

}

printf("%d  %d   %d \\n", m, n, k);

}

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

#include

void main ()

  int  i, j;

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

{  

  j=i*10+6;

  if(  _j%3!=0___ ) continue;

  printf("%d  ",j);

}

}

1.把C语言的源程序变为目标程序要经过( C       )

A.编辑

B.连接

C.编译

D.运行

2.C语言中用于结构化程序设计的三种基本结构是___C___。

A.for、while、do-while

B.if、switch、break

C.顺序结构、选择结构、循环结构\

D.if、for、continue

3.以下叙述中正确的是__B____。

A.花括号“{”和“}”只能作为函数体的定界符

B.C程序中注释部分可以出现在程序中任意合适的地方

C.构成C程序的基本单位是函数,所有函数名都可以由用户命名

D.分号是C语句之间的分隔符,不是语句的一部分

 本题的考查点是C程序设计的初步知识。

    选项A,C程序中/*……*/表示注释部分,注释只是给人看的,对编译和运行不起作用,可以加在程序中任何位置,所以选项A是对的;

    选项B,函数体是函数的主体,从左花括号开始,到与之匹配的右花括号结束。花括号还可以作为复合语句的定界符。

    选项C,一个C程序中必须有且只能有一个由“main”命名的主函数,其他函数由用户自行命名。

    选项D,C语句是组成C程序的基本单位,具有的程序功能。所有的C语句都以分号结尾。

    故本题答案为A。

4.有以下程序段

       int  k=0;

       while(k=1)k++;

while循环执行的次数是__D____。

A.执行1次

B.有语法错,不能执行

C.一次也不执行

D.无限次

乍一看,还以为程序要表达的意思是当k等于1的时候做k++,但是C语言里关系表达式的等于应该是"=="。一个等于号表示赋值,即这里面重复的把1赋给k,自然表达式k=1的值总为1,while后面的表达式恒为真,当然会进入死循环。

    本题答案为A。

5.设有说明语句: char  a = '\\72'; 则变量a ___C___。

A.说明不合法

B.包含3个字符

C.包含1个字符

D.包含2个字符

本题考查点是转义字符的应用。

    转义字符常量'\\xx'可以把'\\'后面的数字转换为对应的ASCII字符,'\\72'表示的是ASCII码等于72的那个字符,即为"H",所以在字符变量中存储的只是"H"这一个字符。

    故本题答案为A。

6.下面程序

      #include

      void main()

      {

         int x=10,y=3;

         printf("%d\\n",y=x/y);

      }

的输出是__C____。

A.不确定的值 

B.1      

C.3  

D.0         

    本题的考查点是除法运算。

    x/y的结果约为3.33333,但x和Y定义为int,由于打印要求为整型,所以自动转换为整型(相当于截取整数位),打印结果为3。

    故本题答案为C。

7.设a和b均为double型常量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是___B___。

A.5.500000

B.6.000000

C.6

D.6.500000

    本题的考查点是各类数值型数据的混合运算。

    各类数值型数据在进行混合运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则为:字符数据必定先转换为整数,short型转为int型,float型数据在运算时一律先转换成双精度型,以提高运算精度。

    故本题答案为D。

8.有如下程序

#include

void main()

{    int  x=1,a=0,b=0;

     switch(x){

           case 0:  b++;

           case 1:  a++;

           case 2:  a++;b++;

    }

    printf("a=%d,b=%d\\n",a,b);

}

该程序的输出结果是__D____。

A.a=2,b=2

B.a=1,b=1

C.a=1,b=0

D.a=2,b=1

    在这个switch语句中,因为x的值为1,所以执行case 1:后面的a++,这样a = 1。但又由于其下没有break语句,所以其后面的语句(a++;b++)也将被执行,这样一来,a = 2,b = 1。

    本题答案为A。

9.设有定义:int  a;  float  b;  执行scanf("%2d%f",&a,&b); 语句时,若从键盘输入876  543.0<回车>,a和b的值分别是----D----

A.876和543.000000

B.76和543.000000

C.87和543.000000

D.87和6.000000

10.有以下程序

#include

void main()

{ int s=0,a=1,n;

  scanf("%d",&n);

  do

    {s+=1; a=a-2;}

  while(a!=n);

  printf("%d\\n",s);

}

若要使程序的输出值为2,则应该从键盘给n输入的值是__B____。

A.-5

B.-3

C.-1

D.0

 本题的考查点是do-while语句

    此语句的一般形式为:

    do      语句

    while   (表达式)

其特点为:先执行语句,后判断表达式。

    它是这样执行的:先执行一次指定的内嵌的语句,然后判别表达式,当表达式的值为非零(“真”)时,返回重新执行该语句,如此反复,直到表达式的值等于0为止,此时循环结束。

    当n=-1时,s+=1,s=1; a=a-2=-1;a!=n不成立,结束循环,此时s值为1,不符合题意;

    当n=-3时,s+=1,s=1; a=a-2=-1;a!=n成立,继续循环,s=s+1=2,a=a-2=-3;a!=n不成立,此时s值为2,符合题意;

    故本题答案为B。

11.以下选项中非法的表达式是__D____。

A.i=j==0

B.0<=x<100

C.(char)(65+3)

D.x+1=x+1

计算或运算主要是通过表达式实现的。不同的表达式进行不同的运算,达到不同的目的。

    选项A中,0<=x<100在C语言中是一个合法的关系表达式,但它并不代表数学式0<=x<100。在计算0<=x<100时,根据从左到右的结合性,先计算0<=x,其结果只能是0或1,然后再比较0<100或1<100。

    选项B中,根据运算符的优先级,先判断j==0是否成立,其结果只能是0或1,然后再将0或1赋给i。

    选项C中,(char)(65+3)为类型强制转换,将数值型数据转换为字符型。

    选项D中,赋值运算符的作用是将一个数据赋给一个变量,此项中等号左半部分不合要求。

    故本题答案为D。

12.以下不能定义为用户标识符的是_A_____。

A.int

B.Void

C._3com_

D.scanf

 本题的考查点是用户标识符的辨别。

    标识符是C语言中用来表示变量名、数组名、函数名、指针名、结构名、联合名、枚举常数名、用户定义的数据类型名、语句标号等用途的字符序列。

    标识符由1~32个字符组成,第一个字符必须是字母或下划线,后面的字符可以是字母、数字或下划线。标识符不能与C关键字相同,并区分大小写。

    由上可知选项D是不对的,因为int是C语言中的关键字。

    故本题答案为D

13.判断char型变量ch是否为'0'~'9'数字字符的正确表达式是(B   )。

A.(ch>=0)AND(ch<=9)

B.(ch>='0')&&(ch<='9')

C.('9'>=ch>='0')

D.(ch>=0)&&(ch<=9)

14.下面程序

      #include

      void main()

      {  int x=100, a=10, b=20, ok1=5, ok2=0;

         if(a            if(b!=15)

              if(!ok1)  x=1;

              else if(ok2) x=10;

         x=-1;

         printf("%d\\n",x);

      }

的输出是___A___。

A.-1 

B.0    

C.不确定的值  

D.1 

    本题的考查点是判断语句的循环嵌套。

    第一个判断值为真,过渡到下一个判断,第二个判断为真,过渡到第三个判断......如此循环,在打印输出语句的前一行,程序给变量x赋了值,为-1,所以,无论前期如何变化,最后的x值依然为-1。

    故本题答案为A

15.有以下程序

#include

void main()

{ int   i;

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

    switch(i)

    { case  1: printf("%d",i);

      case  2: printf("%d",i);

      default: printf("%d",i);

     }

}

执行后输出的结果是__B____。 

A.120

B.011122

C.012

D.012020

  本题的考查点是switch语句。

    switch语句在执行时先计算表达式i的值,当表达式i的值与某一个case中的常量表达式的值相等时,就执行该case后面的语句系列,接着再执行后面各个case中的语句序列,一直到执行完default后面的语句序列,然后结束switch。如果所有case中的常量表达式的值都没有与表达式i的值相匹配,就只执行default后面的语句序列。break语句与switch语句配合使用,可以强行控制程序流程退出switch。

    由于本题没有与break语句配合使用,因此在执行完"case 1"以后,还要继续执行"case2"和"defult"。

当i=0时,执行defult语句,输出0;

当i=1时,执行case 1语句,输出1,因为没有break控制程序流程退出,所以继续执行下面的语句,输出11,以此类推。

    故本题答案为A。

16.以下4组用户定义标识符中,全部合法的一组是__C____。

①          ②         ③         ④

_main       If         txt        int

enclude     -max       REAL       k_2

sin         turbo      3COM       _001

A.②

B.④

C.①

D.③

    C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。

    ②中的-max不符合要求,'-'既不是字母、数字,也不是下划线;

    ③中的3COM第一个字符为数字,不合法;

    ④中的int和C语言的关键字重名,不合法。

    故本题答案为A

17.已知int i=1; 执行语句while (i++<4) ;后,变量i的值为__A__。

A.5

B.3

C.3

D.6

引用后还要自增一次

18.已知字符'A'的ASCII代码值是65,字符变量c1的值是'A',c2的值是'D'。执行语句printf("%d,%d", c1, c2-2); 后,输出结果是----A----

A.65,66

B.A,68

C.A,B

D.65,68

19.在以下给出的表达式中,与while(E)中的(E)不等价的表达式是----A----

A.(E= =0)

B.(E>0||E<0)

C.(!E= =0)

D.(E!=0)

20.有以下程序

    #include

void main()

{ int  x, y, z;

x=y=1;

z=x++,y++,++y;

printf("%d,%d,%d\\n",x,y,z);

}

程序运行后的输出结果是--C---

A.2,2,1

B.2,3,2

C.2,3,1

D.2,3,3

赋值运算比逗号优先级别高

21.在C语言中,合法的基本数据类型关键字是__C____。

A.Double

B.integer

C.long

D.Char

22.有如下程序

#include

void main()

{     float  x=2.0,y;

      if(x<0.0) y=0.0;

      else if(x<10.0)y=1.0/x;

      else y=1.0;

      printf("%f\\n",y);

}

该程序输出结果是__A____

A.0.500000

B.0.000000

C.1.000000

D.0.250000

    本题考查的是if…else语句的使用。x=2.0,符合第二个if语句的条件x<10.0,所以执行y=1.0/x语句,即y=1.0/2.0=0.500000。

    本题答案为C。

23.在C语言中,以下程序段中内循环体总的执行次数是

    for (i=5;i;i--)

       for (j=0;j<4;j++)

          {...内循环体...}---D---

A.30

B.24

C.25

D.20

24.与条件表达式"(n)?(c++):(c--)"中的表达式(n)等价的表达式是_D___。

A.(n==1) 

B.(n!=1)

C.(n==0)

D.(n!=0) 

C中的条件运算,非零为真。

25.有以下程序

#include

void main()

{ int k=4,n=0;

  for( ; n  { n++;

    if(n%3!=0)  continue;

    k--; }

  printf("%d,%d\\n",k,n);

}

程序运行后的输出结果是_A_____。

A.3,3

B.2,2

C.1,1

D.4,4

    本题的考查点是循环和continue语句。

    continue语句是结束本次循环。n从0开始循环,判断n%3!=0是否成立,为真,跳出循环,继续判断,为假,执行  k--,并结束循环,输出k、n的值。

n等于0、1、2时,都跳出循环继续判断,当n=3时,n%3!=0为假,执行k--,k的值变为3。

    故本题答案为C。

26.以下程序的输出结果是___D___。

#include

void main()

{int a=0,i;

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

 {  switch(i)

    {case 0:

     case 3:a+=2;

     case 1:

     case 2:a+=3;

     default:a+=5;

   }

 }

printf("%d\\n",a);

}

A.13

B.10

C.20

D.31

    switch结构的执行过程为:进入switch结构后,对条件表达式进行计算,然后从上至下去找与条件表达式的值相匹配的case,以此作为入口,执行switch结构中后面的各语句。第一次for循环中,switch结构的条件表达式i的值是1,则从case 1 开始执行后面的语句,先执行a+=3,a的值变成3,接着执行a+=5,a的值变成了8。然后进入第二次循环,switch结构条件表达式i的值2,则从case 2开始执行后面的语句,结束第二轮循环时a的值是16,在第三轮循环中,switch结构条件表达式的值是3,则从case 3后面的语句开始执行,a+=2 语句使a的值变成了18,然后执行a+=3,和a+=5,第三轮循环结束时,a的值是26。第四轮循环中, switch结构条件表达的值是4,从default处开始执行,执行一个a+=5的操作,a的值变成了31,i 的值经修改变成了5,不再满足循环条件,退出循环。

    本题答案为A。

27.以下叙述正确的是_C_____。

A.C语言出现得最晚、具有其他语言的一切优

B.C语言可以不用编译就能被计算机识别执行

C.C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D.C语言比其他语言高级

    本题的考查点是C语言的特点。

    C语言主要有如下一些特点:

    1、语言简洁、紧凑,使用方便、灵活;

    2、运算符丰富;

    3、数据结构丰富,具有现代化语言的各种数据结构;

    4、具有结构化的控制语句;

    5、语法不太严格,程序设计自由度大;

    6、C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。

    7、生成目标代码质量高,程序执行效率高;

    8、用C语言写的程序可移植性好。

但是所有的语言都不可能没有任何缺点,C语言也不例外,C语言是高级语言,需要通过编译才能被计算机识别。

    本题答案为C。

28.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)。

s=a;

for(b=1;b<=c;b++) s=s+1;

则与上述程序段功能等价的赋值语句是__B____。

A.s=a+b;

B.s=a+c;

C.s=b+c;

D.s=s+c;

    本题的考查点是赋值语句。

    本题s的初值是a,然后b从1循环到c,每循环一次,s都加1,也就是到了c,加了1*c,所以程序所实现的功能实际上是s=a+c。

    故本题答案为B。

文档

四川大学C语言上机考试题

1.有以下程序#includevoidmain(){inta=5,b=4,c=3,d=2; if(a>b>c)    printf("%d\\n",d); elseif((c-1>=d)==1)    printf("%d\\n",d+1); else     printf("%d\\n",d+2);}执行后输出的结果是___D___。A.2  B.编译时有错,无结果  C.4 D.3  2.设x为int型变量,则执行以下语句后,x的值为:intx=10; x*=x/=-x;     prin
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top