習(xí)題 4
習(xí)題 4
4.1 單選題
1.在C語言程序中,用( )表示邏輯值“真”。
A.1
B.非0的數(shù)
C.非1的數(shù)
D.大于 0 的數(shù)
2.在 C 語言程序中,做邏輯運算時判斷操作數(shù)真、假的表述中,下列哪一個是正確的( )。
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;”功能等價的是( )。
#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.下列各語句序列中,能夠?qū)⒆兞縰和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.以下程序執(zhí)行后的輸出結(jié)果是( )。
#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.以下程序執(zhí)行后的輸出結(jié)果是( )。
#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.編譯時有錯誤,無結(jié)果
11.以下程序執(zhí)行后的輸出結(jié)果是( )。
#include"stdio.h"
main()
{char x='A';
x=(x>='A'&&x<='Z')?(x+32):x;
printf("%c\n",x);}
A.A
B.a(chǎn) C.z
D.Z
12.下列程序段執(zhí)行后,變量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.設(shè)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.寫出下列各邏輯表達式的值,設(shè)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.下列程序執(zhí)行后的輸出結(jié)果是__________。
#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.以下程序執(zhí)行后的輸出結(jié)果是__________。
#include"stdio.h"
main()
{int p,a=5;
if(p=a!=0)
printf("%d\n",p);
else
printf("%d\n",p+2);
}
7.以下程序執(zhí)行后的輸出結(jié)果是__________。
#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 的根,程序中有不完整的地方,請在下劃線處填寫適當(dāng)?shù)恼Z句或表達式以實現(xiàn)程序的功能。
#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個實型數(shù)值a、b、c,如果能用它們作為三角形的3條邊形成一個三角形,則輸出三角形的面積,并畫出實現(xiàn)該算法的N-S流程圖并編程實現(xiàn)。
2.輸入整數(shù)x、y,若x2+y2>1000,則輸出x2+y2百位以上的數(shù)字,否則輸出兩數(shù)之和。
3.輸入一個整數(shù),判斷它能否同時被3、5、7整除,并輸出“yes”或“no”字樣。
4.對任意輸入的x,用下式計算并輸出y的值。
6.編寫程序用于計算某運輸公司的運費。設(shè)每公里每噸貨物的基本運費為p,貨物重量為w,路程為s(單位為km),折扣為d,總費用計算公式為:f=p*w*s*(1-d)
運費計算標(biāo)準(zhǔn)見表4.5。
表4.5 某運輸公司運費計算標(biāo)準(zhǔn)