您的位置: 网站首页 > 程序开发 > C语言程序设计案例教程 > 第三章 顺序结构程序设计 > 【3.3 思考与练习】

3.3 思考与练习

 

思考与练习

1.选择题

1)以下程序的输出结果是     

#include <stdio.h>

#include <math.h>

main()

{

    int a=1,b=4,c=2;

    float x=10.5,y=4.0,z;

    z=(a+b)/c+sqrt((double)y)*1.2/c+x;

    pritnf("%f\n",z);  

}

A14.000000                     B015.400000             C13.700000              D14.900000

2)以下程序的输出结果是     

#include <stdio.h>

main()

{ 

    int a=2,c=5;

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

}

Aa=%2,b=%5                                              Ba=2,b=5

Ca=%%d,b=%%d                                         Da=%d,b=%d

3)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int a,b,d=241;

    a=d/100%9;

    b=(-1)&&(-1);

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

}

A6,1                         B2,1                         C6,0                  D2,0

4C语言程序的基本单位是     

A.程序行                   B.语句                      C.函数               D.字符

5)合法的C语言赋值语句是     

Aa=b=58                  Bi++;                       Ca=58,b=58              Dk=int(a+b);

6)设在程序中,abc均被定义成整型变量,并且已赋整数大于1的整数值,则以下表达式中,正确的是     

A1/a*b*c                  B1/(a*b*c)                C1/a/b/(float)c    D1.0/a/b/c

7)若xy均为int型变量,x=100y=200,则以下程序片段的输出结果是     

printf("%d",(x,y));

A200                        B100                        C100 200

D.输出格式符不够,输出不确定的值

8)若执行以下程序时,从键盘上输入9876543210<CR><CR>表示按Enter键),则输出结果是     

#include <stdio.h>

main()

{

    int a;

    float b, c;

    scanf("%2d%3f%4f",&a,&b,&c);

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

}

Aa=98, b=765, c=4321                                  Ba=10, b=432, c=8765

Ca=98, b=765.000000, c=4321.000000           Da=98, b=765.0, c=4321.0

9)下列语句中,符合C语言语法的赋值语句是     

Aa=7+b+c=a+7;                                           Ba=7+b++=a+7;

Ca=7+b,b++,a+7                                                 Da=7+b,c=a+7;

10)已知字母AASCII码为十进制数的65,以下程序的输出结果是     

#include <stdio.h>

main()

{

    char ch1,ch2;

    ch1='A'+'5'-'3';

    ch2='A'+'6'-'3';

    printf("%d,%c\n",ch1,ch2);

}

A67,D                    BB,C                        CC,D                 D.不确定的值

11)执行以下程序后,a的值是     

#include <stdio.h>

main()

{

    int a;

    printf("%d\n",(a=3*5,a*4,a+5));

}

A65                        B20                          C15                   D10

12)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int a=-1,b=4,k;

    k=(a++<=0)&&(!(b--<=0));

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

}

A0 0 3                    B0 1 2                      C1 0 3               D1 1 2

13)以下程序的输出结果是     

#include <stdio.h>

main()

{

    char x=040;

    printf("%d\n",x=x<<1);

}

A100                      B160                        C120                 D64

14设有定义int x=10,y=3,z;,则语句printf("%d\n",z=(x%y,x/y));的输出结果是    

A1                         B0                            C4                     D3

15)以下选项中,不正确的赋值语句是     

A++t;                                                               Bn1=(n2=(n3=0));

Ck=i==j;                                                    Da=b+c=1;

16)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int k=11;

    printf("k=%d,k=%o,k=%x\n",k,k,k);

}

Ak=11,k=12,k=11                                      Bk=11,k=13,k=13

Ck=11,k=013,k=0xb                                          Dk=11,k=13,k=b

17)若已定义xydouble型变量,则表达式:x=1,y=x+3/2的值是     

A1                         B2                            C2.0                  D2.5

18)若tdouble型变量,则表达式t=1,t5,t++的值是     

A1                         B6.0                         C2.0                  D1.0

19)若有以下程序片段:

int u=010,v=0x10,w=10;

printf("%d,%d,%d\n",u,v,w);

则输出结果是     

A8,16,10                B10,10,10                 C8,8,10             D8,10,10

20)若有以下程序片段:

char c1='b',c2='e';

printf("%d,%c\n",c2-c1,c2-'a'+'A');

则输出结果是     

A2,M                            B3,E                        C2,E  

D.输出项与对应的格式控制不一致,输出结果不确定

21)以下程序的输出结果是     

#include <stdio.h>

main()

{

    unsigned a=32768; 

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

}

Aa=32768               Ba=32767                 Ca=-32768        Da=-1

22)以下叙述中,正确的是     

A.输入项可以是一个实型常量,如scakf("%f",3.5);

B.只有格式控制,没有输入项,也能正确输入数据到内存中,如scakf("a=%d,

b=%d");

C.当输入一个实型数据时,格式控制部分可以规定小数点后的位数,如scakf

("%4.2f",&f);

D.当输入数据时,必须指明变量地址,如scakf("%f",&f);

23)设xy均为int型变量,则语句:x+=y,y=x-y;x-=y;的功能是     

A.把xy按从大到小的顺序排列

B.把xy按从小到大的顺序排列

C.无确定结果

D.交换xy中的值

24)设有以下定义:

int  a=1,b=2,c=3,d=4,m=2,n=2;

则执行表达式;(m=a>b)&&(n=c>d)后,n的值为     

A1                         B2                            C3                     D0

25)语句printf("%d"(a=2)&&(b=-2);的输出结果是     

A.无输出                 B.结果不确定            C-1                   D1

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

#include <stdio.h>

main()

{ 

    int k=17

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

}

A17,021,0x11         B17,17,17                 B17,0x11,021     D17,21,11

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

#include <stdio.h>

main()

{

    double d=3.2;

    int x,y;

    x=1.2;

    y=(x+3.8)/5.0;

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

}

A3                         B3.2                         C0                     D3.07

28)以下程序的输出结果是(小数点后只写一位)     

#include <stdio.h>

main()

{

    double d;  float f;long l;int i;

    i=f=1=d=20/3;

    printf("%d %ld %f %f \n", i,l,f,d);

}

A6  6  6.0  6.0                                       B6  6  6.7  6.7

C6  6  6.0  6.7                                       D6  6  6.7  6.0

29)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int a=2,c=5;

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

}

Aa=%2,b=%5         Ba=2,b=5                  Ca=d, b=d          Da=%d,b=%d

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

#include <stdio.h>

main()

{

    char x=0xFFFF;

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

}

A-32767                BFFFE                            C-1                   D-32768

31)设有以下程序片段:

int c1=1,c2=2,c3;

c3=1.0/c2*c1;

则执行后,c3的值是      

A0                         B0.5                         C1                     D2

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

#include <stdio.h>

main()

{   

    int y=3,x=3,z=1;

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

}

A3  4                    B4  2                      C4  3               D3  3

33)若变量已被正确定义为float型,要通过语句scanf("%f  %f  %f ",&a,&b,&c);a赋予10.0b赋予22.0c赋予33.0,不正确的输入形式是     

A10<CR>                                           B10.0,22.0,33.0<CR>

    22<CR>

    33<CR>

C10.0<CR>                                         D10  22<CR>

    22.0  33.0<CR>                         33<CR>

34)设xyz被定义为int型变量,若从键盘给xyz输入数据,以下正确的输入语句是     

AINPUT  xyz;                                          Bscanf(“%d%d%d”,&x,&y,&z);

Cscanf(“%d%d%d”,x,y,z);                          Dread(“%d%d%d”,&x,&y,&z);

35)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int a=3;

    printf("%d\n",(a+(a-=a*a)));

}

A0                         B-12                        C1                     D3

36)以下程序的输出结果是     

#include <stdio.h>

main()

{

    char  c='z';

    printf("%c",c-25);

}

Aa                          BZ                           Cz-25                Dy

37)若有定义语句int a,b,c,*d=&c;,则能正确从键盘读入三个整数并分别赋给变量abc的语句是     

Ascanf("%d%d%d",&a,&b,d);                            Bscanf("%d%d%d",&a,&b,&d);

Cscanf("%d%d%d",a,b,d);                          Dscanf("%d%d%d",a,b,*d);

38)在16C语言编译系统中,如果定义语句long a;,则能给a赋予40000的正确语句是    

Aa=20000+20000                                    Ba=4000*10

Ca=30000+10000                                    Da=4000L*10L

39)以下非法的赋值语句是     

An=(i=2,++i);         Bj++;                       C++(i+1);          Dx=j>0;

40)设ab均为double型变量,且a=5.5,b=2.5,则表达式(int)a+b/b的值是

     

A6.500000                     B6                            C5.500000         D6.000000

41)已知ijk均为int型变量,若从键盘上输入123<CR>,使i的值为1j的值为2k的值为3,以下选项中,正确的输入语句是     

Ascanf(“%2d%2d%2d”,&i,&j,&k);

Bscanf(“%d  %d  %d”,&i,&j,&k);

Cscanf(“%d,%d,%d”,&i,&j,&k);

Dscanf(“i=%d,j=%d,k=%d”,&i,&j,&k);

42设有定义语句long x=-123456L;,则以下能够正确输出变量x值的语句是     

Aprintf(“x=%d\n”,x);                                  Bprintf(“x=%1d\n”,x);

Cprintf(“x=%8dL\n”,x);                              Dprintf(“x=%LD\n”,x);

43)以下程序的输出结果是     

#include <stdio.h>

main()

{  

    int k=2,i=2,m;

    m=(k+=i*=k);

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

}

A86                    B83                      C64               D74

44)以下程序的输出结果是     

#include <stdio.h>

int a=3;

main()

{ 

    int s=0;

    {

        int a=5; 

        s+=a++;

    }

    s+=a++;

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

}

A8                         B10                          C7                     D11

2填空题

1)设abc的为整型数,且a=2b=3c=4,则执行完以下语句后,a的值是     

a*=16+(b++)-(++c);

2若想通过以下输入语句给a赋予1,给b赋予2,则输入数据的形式应该是     

int a,b;

scanf("a=%b,b=%d",&a,&b);

3)若有定义语句int a=10,b=9,c=8;,执行以下语句后,变量b的值是     

c=(a-=(b-5));

c=(a%11)+(b=3);

4)以下程序的输出结果是     

#include <stdio.h>

main()

{ 

    int a=1,b=2;

    a=a+b; b=a-b;a=a-b;

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

}

5)以下程序的输出结果是     

#include <stdio.h>

main()

{  

    int a=177;

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

}

6)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int a=0;

    a+=(a=8);

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

}

7)以下程序的输出结果是     

#include <stdio.h>

main()

{

    int x=10,y=20,t=0;

    if(x==y)

       t=x; x=y; y=t;

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

}

3上机操作题

1编写一个程序,将3小时45分钟转换成用分钟表示,并输出转换前和转换后的数值。

2)已知圆柱体横截面圆半径r、圆柱高h,编写一个程序,计算圆周长l、圆面积s和圆柱体体积v,并输出结果。