C语言程序设计教程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

习题 4

4.1 单选题

1.在C语言程序中,用( )表示逻辑值“真”。

A.1

B.非0的数

C.非1的数

D.大于 0 的数

2.在 C 语言程序中,做逻辑运算时判断操作数真、假的表述中,下列哪一个是正确的( )。

A.0为假,非0为真

B.只有1为真

C.-1为假,1为真

D.0为真,非0为假

3.表达式!(x>0||y>0) 等价于( )。

A.!x>0||!y>0

B.!(x>0) ||!(y>0)

C.!x>0&&!y>0

D.!(x>0)&&!(y>0)

4.判断整型变量x、y中有且只有1个值为0的表达式为( )。

A.!(x*y) && (x+y)

B.(x*y)&&x+y

C.x*y==0

D.x==0&&y!=0

5.下列条件语句中,功能与其他语句不同的是( )。

A. if(a) printf("%d\n",x); else printf("%d\n",y);

B. if(a==0) printf("%d\n",y); else printf("%d\n",x);

C.if (a!=0) printf("%d\n",x); else printf("%d\n",y);

D.if(a==0) printf("%d\n",x); else printf("%d\n",y);

6.以下程序段中与语句“k=a>b?(b>c?1:0):0;”功能等价的是( )。

7.以下程序执行后输出的结果是( )。

            #include"stdio.h"
            main()
            {int i=1,j=1,k=2;
            if((j++||k++)&&i++)  printf("%d,%d,%d\n",i,j,k);
            }

A.1,1,2

B.2,2,1

C.2,2,2

D.2,2,3

8.下列各语句序列中,能够将变量u和s中的较大值赋值到变量t中的是( )。

A.if(u>s)t=u ; t=s;

B.t=s ; if(u>s)t=u;

C.if(u>s)t=s ; else t=u;

D.t=u ; if(u>s)t=s;

9.以下程序执行后的输出结果是( )。

            #include"stdio.h"
            main()
            {int k=1,s=0;
            switch(k){
              case 1:s+=10;
              case 2:s+=20;break;
              default:s+=3;
            }
            printf("%d\n",s);
            }

A.10

B.30

C.20

D.23

10.以下程序执行后的输出结果是( )。

            #include"stdio.h"
            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);
            }

A.2

B.3

C.4

D.编译时有错误,无结果

11.以下程序执行后的输出结果是( )。

            #include"stdio.h"
            main()
            {char x='A';
              x=(x>='A'&&x<='Z')?(x+32):x;
              printf("%c\n",x);}

A.A

B.a C.z

D.Z

12.下列程序段执行后,变量k、x、y、z值依次为( )。

            int k,x,y,z;
            x=y=z=1;
            k=x++&&y++||z++;

A.1、2、2、1

B.1、2、2、2

C.0、2、2、1

D.0、2、2、2

4.2 填空题

1.设x=-1,则表达式1<x<5的值是__________。

2.将下列条件写成C语言的逻辑表达式。

(1)a或b中有一个大于零:__________。

(2)x大于零,并且x小于等于10:__________。

(3)a、b和c同时等于1.5:__________。

(4)p小于a或p小于b或p小于c:__________。

3.写出下列各逻辑表达式的值,设int a=3,b=6,c=8。

(1)a+b>c &&b==c:__________。

(2)a||b+c && b-c:__________。

(3)!(a>b)&& ! c||1:__________。

(4)!(x=a)&&(y=b)&& 1:__________。

(5)!(a+b)-c && b+c/2:__________。

4.将变量a、b、c中的较大者赋给变量max的条件表达式为__________。

5.下列程序执行后的输出结果是__________。

            #include"stdio.h"
            main()
            {  int n=0,m=1,x=2;
                      if(!n)x-=1;
                      if(m)x-=2;
                      if(x)x-=3;
                      printf("%d\n",x);
            }

6.以下程序执行后的输出结果是__________。

            #include"stdio.h"
            main()
            {int p,a=5;
                if(p=a!=0)
                  printf("%d\n",p);
              else
                  printf("%d\n",p+2);
            }

7.以下程序执行后的输出结果是__________。

            #include"stdio.h"
            main()
            {int a=4,b=3,c=5,t=0;
                    if(a<b)t=a;a=b;b=t;
                    if(a<c)t=a;a=c;c=t;
                    printf("%d,%d,%d\n",a,b,c);
            }

8.下列程序用于计算一元二次方程 ax2+bx+c=0 的根,程序中有不完整的地方,请在下划线处填写适当的语句或表达式以实现程序的功能。

            #include"stdio.h"
            #include"math.h"
              main()
              {
              double a,b,c,t,disc,twoa,root1,root2;
              printf("Enter a,b,c:");
              scanf("%lf,%lf,%lf",&a,&b,&c);
              if   [1]
                if   [2]      printf("No answer because of input error\n");
                else printf("The single root is %f\n",c/b);
              else
                {disc=b*b-4*a*c;
                twoa=2*a;
                root1=-b/twoa;
                t=abs(disc);
                root2=sqrt(t)/twoa;
                if   [3]
            printf("Complex roots\n real part=%f image part=%f\n",root1,root2);
                else
            printf("Real roots\n root1=%f root2=%f\n",root1+root2,root1-root2);
              }
            }

4.3 编程题

1.输入3个实型数值a、b、c,如果能用它们作为三角形的3条边形成一个三角形,则输出三角形的面积,并画出实现该算法的N-S流程图并编程实现。

2.输入整数x、y,若x2+y2>1000,则输出x2+y2百位以上的数字,否则输出两数之和。

3.输入一个整数,判断它能否同时被3、5、7整除,并输出“yes”或“no”字样。

4.对任意输入的x,用下式计算并输出y的值。

5.编写程序输入一个5位整数,判断它是不是回文数。回文数是指一个数从右到左和从左到右的对应数码相同,如12321是回文数,个位与万位相同,十位与千位相同。

6.编写程序用于计算某运输公司的运费。设每公里每吨货物的基本运费为p,货物重量为w,路程为s(单位为km),折扣为d,总费用计算公式为:f=p*w*s*(1-d)

运费计算标准见表4.5。

表4.5 某运输公司运费计算标准