您的位置: 网站首页 > 程序开发 > 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);  

}

A.14.000000                     B.015.400000             C.13.700000              D.14.900000

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

#include <stdio.h>

main()

{ 

    int a=2,c=5;

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

}

A.a=%2,b=%5                                              B.a=2,b=5

C.a=%%d,b=%%d                                         D.a=%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); 

}

A.6,1                         B.2,1                         C.6,0                  D.2,0

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

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

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

A.a=b=58                  B.i++;                       C.a=58,b=58              D.k=int(a+b);

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

A.1/a*b*c                  B.1/(a*b*c)                C.1/a/b/(float)c    D.1.0/a/b/c

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

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

A.200                        B.100                        C.100 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);

}

A.a=98, b=765, c=4321                                  B.a=10, b=432, c=8765

C.a=98, b=765.000000, c=4321.000000           D.a=98, b=765.0, c=4321.0

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

A.a=7+b+c=a+7;                                           B.a=7+b++=a+7;

C.a=7+b,b++,a+7                                                 D.a=7+b,c=a+7;

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

#include <stdio.h>

main()

{

    char ch1,ch2;

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

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

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

}

A.67,D                    B.B,C                        C.C,D                 D.不确定的值

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

#include <stdio.h>

main()

{

    int a;

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

}

A.65                        B.20                          C.15                   D.10

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

#include <stdio.h>

main()

{

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

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

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

}

A.0 0 3                    B.0 1 2                      C.1 0 3               D.1 1 2

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

#include <stdio.h>

main()

{

    char x=040;

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

}

A.100                      B.160                        C.120                 D.64

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

A.1                         B.0                            C.4                     D.3

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

A.++t;                                                               B.n1=(n2=(n3=0));

C.k=i==j;                                                    D.a=b+c=1;

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

#include <stdio.h>

main()

{

    int k=11;

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

}

A.k=11,k=12,k=11                                      B.k=11,k=13,k=13

C.k=11,k=013,k=0xb                                          D.k=11,k=13,k=b

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

A.1                         B.2                            C.2.0                  D.2.5

(18)若t为double型变量,则表达式t=1,t5,t++的值是      。

A.1                         B.6.0                         C.2.0                  D.1.0

(19)若有以下程序片段:

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

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

则输出结果是      。

A.8,16,10                B.10,10,10                 C.8,8,10             D.8,10,10

(20)若有以下程序片段:

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

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

则输出结果是      。

A.2,M                            B.3,E                        C.2,E  

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

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

#include <stdio.h>

main()

{

    unsigned a=32768; 

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

}

A.a=32768               B.a=32767                 C.a=-32768        D.a=-1

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

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

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

b=%d");

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

("%4.2f",&f);

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

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

A.把x和y按从大到小的顺序排列

B.把x和y按从小到大的顺序排列

C.无确定结果

D.交换x和y中的值

(24)设有以下定义:

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

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

A.1                         B.2                            C.3                     D.0

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

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

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

#include <stdio.h>

main()

{ 

    int k=17;

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

}

A.17,021,0x11         B.17,17,17                 B.17,0x11,021     D.17,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);

}

A.3                         B.3.2                         C.0                     D.3.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);

}

A.6  6  6.0  6.0                                       B.6  6  6.7  6.7

C.6  6  6.0  6.7                                       D.6  6  6.7  6.0

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

#include <stdio.h>

main()

{

    int a=2,c=5;

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

}

A.a=%2,b=%5         B.a=2,b=5                  C.a=d, b=d          D.a=%d,b=%d

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

#include <stdio.h>

main()

{

    char x=0xFFFF;

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

}

A.-32767                B.FFFE                            C.-1                   D.-32768

(31)设有以下程序片段:

int c1=1,c2=2,c3;

c3=1.0/c2*c1;

则执行后,c3的值是      。

A.0                         B.0.5                         C.1                     D.2

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

#include <stdio.h>

main()

{   

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

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

}

A.3  4                    B.4  2                      C.4  3               D.3  3

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

A.10<CR>                                           B.10.0,22.0,33.0<CR>

    22<CR>

    33<CR>

C.10.0<CR>                                         D.10  22<CR>

    22.0  33.0<CR>                         33<CR>

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

A.INPUT  x、y、z;                                          B.scanf(“%d%d%d”,&x,&y,&z);

C.scanf(“%d%d%d”,x,y,z);                          D.read(“%d%d%d”,&x,&y,&z);

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

#include <stdio.h>

main()

{

    int a=3;

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

}

A.0                         B.-12                        C.1                     D.3

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

#include <stdio.h>

main()

{

    char  c='z';

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

}

A.a                          B.Z                           C.z-25                D.y

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

A.scanf("%d%d%d",&a,&b,d);                            B.scanf("%d%d%d",&a,&b,&d);

C.scanf("%d%d%d",a,b,d);                          D.scanf("%d%d%d",a,b,*d);

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

A.a=20000+20000;                                    B.a=4000*10;

C.a=30000+10000;                                    D.a=4000L*10L;

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

A.n=(i=2,++i);         B.j++;                       C.++(i+1);          D.x=j>0;

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

      。

A.6.500000                     B.6                            C.5.500000         D.6.000000

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

A.scanf(“%2d%2d%2d”,&i,&j,&k);

B.scanf(“%d  %d  %d”,&i,&j,&k);

C.scanf(“%d,%d,%d”,&i,&j,&k);

D.scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);

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

A.printf(“x=%d\n”,x);                                  B.printf(“x=%1d\n”,x);

C.printf(“x=%8dL\n”,x);                              D.printf(“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);

}

A.8,6                    B.8,3                      C.6,4               D.7,4

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

#include <stdio.h>

int a=3;

main()

{ 

    int s=0;

    {

        int a=5; 

        s+=a++;

    }

    s+=a++;

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

}

A.8                         B.10                          C.7                     D.11

2.填空题

(1)设a、b、c的为整型数,且a=2、b=3、c=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,并输出结果。