else x=3;
else x=6;
else x=7;
以上程序段运行后,x的值是:()
a) 1 b) 2 c) 3 d) 6
18. 执行以下程序:
main()
{ int s,t,a,b;
scanf(“%d,%d”,&a,&b);
s=1;t=1;
if(a>0) s=s+1;
if(a>b) t=s+t;
else if(a==b) t=5;
else t=2*s;
printf(“t=%d\n”,t);
}
要使输出结果为:t=4,给a和b输入的值应满足的条件是:()
a) a>b b) aa>b
19. 以下程序的输出结果是:()
main()
{ int a=5,b=4,c=6,d;
printf(“%d\n”,d=a>b ?(a>c ? a:c) : (b));
}
a) 5 b) 4 c) 6 d) 不确定
20. 若有定义语句:int x=3,y=2,z=1; 则以下表达式的值是:()z*=(x>y ? ++x :y++)
a) 0 b) 1 c) 4 d) 3
21. 有以下程序:
main()
{ int a=15,b=21,m=0;
switch(a%3)
{ case 0: m++;break;
case 1: m++;
switch(b%2)
{ default: m++;
case 0: m++;break;
}
}
printf(“%d\n”,m);
}
程序的输出结果是:()
a) 1 b) 2 c) 3 d) 4
22.以下while循环中,循环体执行的次数是:()
k=1;
while (--k) k=10;
a) 10次b) 无限次c) 一次也不执行d) 1次23.有以下程序段,其中x为整型变量,以下选项中叙述正确的是:()
x=0;
while (!x!=0) x++;
a) 退出while循环后,x的值为0
b) 退出while循环后,x的值为1
c) while的控制表达式是非法的
d) while循环执行无限次
24. 有以下程序段,其中n为整型变量,执行后输出结果是:()
n=20 ;
while(n--) ; printf(“%d”,n) ;
a) 2 b) 10 c) -1 d) 0
25. 有以下程序段,其中t为整型变量,以下选项中叙述正确
的是:()
t=1;
while (-1)
{ t--;
if(t) break;}
a) 循环一次也不执行
b) 循环执行一次
c) 循环控制表达式(-1)不合法
d) 循环执行2次
26. 有以下程序段,其中x为整型变量,以下选项中叙述正确的是:()
x=-1;
do
{;}
while (x++);
printf(“x=%d”,x);
a) 该循环没有循环体,程序错误
b) 输出x=1
c) 输出x=0
d) 输出x=-1
27. 有以下程序段,其中x,y为整型变量,程序输出结果是:()
for(x=0,y=0;(x<=1)&&(y=1);x++,y--) ;
printf(“x=%d,y=%d”,x,y);
a) x=2,y=0 b) x=1,y=0
c) x=1,y=1 d) x=0,y=0
28. 有以下程序:
main()
{ int x=0,y=0;
while(x<5&&++y) y--,x++;
printf(“%d,%d”,y,x);
}
程序的输出结果是:()
a) 0,5 b) 1,5 c) 0,4 d) 1,4
29. 有以下程序:
main()
{ int num=0;
do
{ num++ ;printf(“%d\n”,num); }
while(num<=2);
}
程序的输出结果是:()
a) 1 b) 1c) 1 d) 1
2 2 2
3 3
4
30. 有以下程序:
main()
{ int x=3;
do
{ printf(“%d”,x-=2); }
while(!(--x));
}
程序的输出结果是:()
a) 1 b) 3 0 c) 1 -2 d) 死循环
31. 有以下程序:
main()
{ int y=10;
do { y--; } while(--y);
printf(“%d\n”,y--);
}
程序的输出结果是:()
a) 1 b) -1 c) 8 d) 0
32. 有以下程序:
main()
{ int x=3,y;
do
{ y=--x;
if( !y) printf(“x”) ;
else printf(“y”) ;
} while(x);
}
程序的输出结果是:()
a) xyx b) yyx c) yxx d) yxy
33. 有以下程序段,此处do-while循环的结束条件是:()
int n=0,p;
do {scanf(“%d”,&p);n++;} while (p!=12345&&n<3);
a) p的值不等于12345并且n的值小于3
b) p的值等于12345并且n的值大于等于3
c) p的值不等于12345或者n的值小于3
d) p的值等于12345或者n的值大于等于3
34. 有以下程序:
main()
{ int a,b,t;
for(a=3,b=0 ;!a==b ;a--,b++)
if(a>b) { t=a;a=b;b=t;}
printf(“%d,%d\n”,a,b);
}
程序的输出结果是:()
a) 4,1 b) 1,4 c) 4,-1 d) -1,4
35. 有以下程序:
main()
{ int x=3,y=0;
do
{ while( !y) y=-x;
} while(x--);
printf(“%d,%d\n”,x,y);
}
程序的输出结果是:()
a) -1,3 b) -1,-3c) 0,0 d) 1,-3
36. 有以下程序:
main()
{ int m,n;
printf(“Enter m,n:”) ; scanf(“%d%d”,&m,&n);
while(m!=n)
{while(m>n) m-=n;
while(n>m) n-=m;}
printf(“m=%d\n”,m);
}
程序的输出结果是:()
a) m=3 b) m=2 c) m=1 d) m=0
37. 有以下程序:
main()
{ int i,s=1;
for(i=1 ;i<=50 ;i++)
if( !(i%5)&& !(i%3)) s+=i;
printf(“%d\n”,s);
}
程序的输出结果是:()
a) 409 b) 277 c) 1 d) 91
38. 有以下程序:
main()
{ int x=0,y=0,i;
for(i=1 ; ;++i)
{ if(i%2==0) {x++ ;continue ;}
if(i%5==0) {y++ ;break ;}
}
printf(“%d,%d”,x,y);
}
程序的输出结果是:()
a) 2,1 b) 2,2 c) 2,5 d) 5,2
39. 有以下程序:
main()
{ int i=0,a=0;
while(i<30)
{for(;;)
{if((i%10)==0) break;
else i--;}
i+=11; a+=i;
}
printf(“%d\n”,a);
}
程序的输出结果是:()
a) 66 b) 63 c) 33 d) 32
40. 有以下程序:
main()
{ int a,b;
for(a=1,b=1 ;a<=100 ;a++)
{ if(b>=10) break;
if(b%3==1)
{ b+=3; continue; }
}
printf(“%d\n”,a);
}
程序的输出结果是:()
a) 101 b) 6 c) 5 d) 4
41. 有以下程序:
main()
{ int i=0;
for(i+=3 ;i<=5 ;i=i+2)
switch(i%5)
{ case 0: printf(“*”);
case 1: printf(“#”); break;
default: printf(“!”); break;
case 2: printf(“&”);
}
}
程序的输出结果是:()
a) *# b) !& c) !*# d) *#*
二.填空题
1.设y是int型变量,请写出当y是奇数时值为1的关系表达式_ y%2 或y%2==0 或y%2!=0_.
2. 表示“整数x的绝对值大于5”时值为“真”的C语言表达式是__ x>5||x<-5__.
3. 若x为int类型,请以最简单的形式写出与!x等价的C语言
表达式___ x==0__.
4. 设x,y,z,t均为int型变量,则执行下述语句后,x的值是__4__,y的值是__3__,z的值是__4__,t的值是__1__。
x=y=z=3; t=(++x||++y)&&++z;
5. 若有定义语句:int a=1,b=2,c=3,d=4;,则执行下述表达式后,表达式的值是___1____,a的值是__1__,b的值是__2__,c 的值是__2__,d的值是__5__。
(a*=a
6. 以下程序的运行结果是__-1___.
main()
{ int a=0,b=0,c;
if(a>b) c=1;
else if(a=b) c=0;
else c=-1;
printf(“%d\n”,c);
}
7. 若有定义:int a=5,b=4,c=9;,以下语句的执行结果是_###a=6,b=3,c=9 。
a++<=5&&b--<=2&&c++
? printf(“***a=%d,b=%d,c=%d\n”,a,b,c) :
printf(“###a=%d,b=%d,c=%d\n”,a,b,c);
8.若从键盘上输入3和4,执行以下程序后的输出结果是
__36___.
main()
{ int a=0,b=0,s=0;
scanf(“%d%d”,&a,&b);
if(a
printf(“%d\n”,s);
}
9.若从键盘上输入58,则以下程序的输出结果是_585858_.
main()
{ int a;
scanf(“%d”,&a); printf(“%d”,a);
if(a<50) printf(“%d”,a);
if(a>40) printf(“%d”,a);
if(a>30) printf(“%d”,a);
}
10.以下程序的运行结果是__!#___.
main()
{ int a=0,b=4,c=5;
switch(a==0)
{case 1: switch(b<0)
{case 1: printf(“@”); break;
case 0: printf(“!”); break;
}
case 0: switch(c==5)
{case 0: printf(“*”); break;
case 1: printf(“#”); break;
default: printf(“%”);
} break;
default: printf(“&”);
}
}
11.要求使以下程序段输出10个整数,请填空。
for(i=0;i<=_18_;printf(“%d\n”,i+=2));
12. 执行下面程序段后,k的值是_____0_____。
r=1; n=203; k=1;
do {k*=n%10*r; n/=10; r++;} while(n); 13. 下面程序的输出结果是_1 2 5 10_。
main()
{ int i,x=10;
for(i=1;i<=x;i++)
if(x%i==0) printf(“%d ”,i);
}
14. 下面程序的输出结果是___无定值________。
main()
{ int i,sum;
for(i=1;i<6;i++) sum+=i;
printf(“%d”,sum);
}
15. 下面程序的输出结果是_20__。
main()
{ int i,sum=0;
for(i=2;i<10;i++)
{ if((i%2)!=0) continue;
sum+=i;}
printf(“%d\n”,sum);
}
16.下面程序的输出结果是**!
*!!
__!!!____。
main()
{ int i,j;
for(i=2;i>=0;i--)
{ for(j=1;j<=i;j++) printf(“*”);
for(j=0;j<=2-i;j++) printf(“!”);
printf(“\n”);
}
}
17. 下面程序的输出结果是___1,1____。
main()
{ int i,j=0,a=0;
for(i=0;i<5;i++)
do
{ if(j%3) break;
a++; j++;
} while(j<10);
printf(“%d,%d\n”,j,a);
}
18. 下面程序的输出结果是___852____。
main()
{ int x=9;
for(;x>0;)
{ if(x%3==0)
{ printf(“%d”,--x); continue; }
x--;
}
}
19. 下面程序的输出结果是____***#____。
main()
第四章基本的控制结构答案
基本的控制结构 一、选择题 1.VB 提供了结构化程序设计的三种基本结构,这三种基本结构是 。 (A ) 递归结构、选择结构、循环结构 (B )选择结构、过程结构、顺序结构 (C )过程结构、输入输出结构、转向结构 (D )顺序结构、选择结构、循环结构 2.下面程序段运行后,显示的结果是 。 Dim x If x then print x else print x+1 (A) 1 (B)0 (C)-1 (D)显示出错信息 3.对于语句If x=1 then y=1,下列说法正确的是 。 (A) x=1和 y=1均为赋值语句 (B )x=1和y=1均为关系表达式 (C) x=1为关系表达式,y=1为赋值语句 (D )x=1为赋值语句,y=1为关系表达式 4.用if 语句表示分段函数f(x)= 1,31 ,12<+≥+x x x x ,下列不正确的程序段是 (A) f=x*x+3 (B) if x>=1 Then f=Sqr(x+1) If x>=1 Then f=Sqr(x+1) if x<1 Then f=x*x+3 (C)if x>=1 Then f=Sqr(x+1) (D)if x<1 Then f=x*x+3 Else f=x*x+3 Else f=Sqr(x+1) 5.下面程序段,运行后显示的结果是 Dim x X=Int(Rnd)+5 Select Case x Case 5 Print “优秀” Case 4 Print “良好” Case 3 Print “通过” Case Else Print “不通过” End Select (A)优秀 (B)良好 (C)通过 (D)不通过 6.下面语句执行后,变量w 中的值是 W=Choose(Weekday(“2007,5,1”),“Red”, “Green ” “Blue ” “Yellow ”) (A)Null (B) “Red” (C) “Blue ” (D) “Yellow ” 7. 以下______是正确的For … Next 结构。 (A )For x=1 To Step 10 (B )For x = 3 To 3 Step 3 … … Next x Next x
第四章 VB程序的控制结构
第四章VB程序的控制结构 4.1算法概论 1.算法的概念 算法:指用计算机解决某一问题的方法和步骤。 数值算法:用于解决一般数学解析方法难以解决的问题,如:求超越方程的根、求定积分、解微分方程等。 非数值算法:用于对非数值信息进行查找、排序等。 2.算法的特征 (1)确定性:指算法的每个步骤都应确切无误,没有歧义。 (2)可行性:指算法的每个步骤必须是计算机能够有效执行、可以实现的,并可得到确定的结果。 (3)有穷性:指一个算法应该在有限的时间和步骤内可以执行完毕的。 (4)输入性:指一个算法可以有0或多个输入数据。 (5)输出性:指一个算法必须有一个或多个输出结果。 3.算法的评价 主要评价指标是:算法是否正确、运行的效率、占用系统资源的多少。 4.算法的描述 一般常用流程框图来描述算法。
5.基本算法结构 “结构化程序设计方法”规定算法有三种基本结构:顺序结构、选择结构和循环结构 6.算 法示 例 (1) 欧几里德算法——求两个自然数的最大公约数
(2)顺序查找算法——在N个字符串集合中,查找有无特定的字符串存在
4.2顺序结构 1.赋值语句 赋值语句是任何程序设计中最基本的语句,赋值语句都时顺序执行的。赋值语句的形式为:
变量名= 表达式 它的作用是计算右边表达式的值,然后赋给左边的变量,表达式的类型应该与变量名的类型一致。 2. 使用说明 (1)当表达式为数值型而与变量精度不同时,强制转换成左边变量的精度; (2)当表达式是数字字符串,左边变量是数值类型,自动转换成数值类型再赋值,但当表达式中有非数字字符或空串,则出错。 (3)任何非字符类型赋值给字符类型,自动转换为字符类型; (4)当逻辑型赋值给数值型时,True转换为-1,False转换为0;反之,非0转换为True,0转换为False; (5)赋值号左边的变量只能是变量,不能是常量、常数符号、表达式,否则报错; (6)不能在一句赋值语句中,同时给各变量赋值; (7)在条件表达式中出现的= 是等号,系统会根据= 号的位置,自动判断是否为赋值号; (8)注意N=N+1 是累加中常见的赋值语句,表示将N变量中的值加1后再赋值给N。 5 4.3选择结构(或称分支结构) 1.1. IF条件语句 (1)If……Then语句(单分支结构F) 语句形式: 1)If<表达式> Then 语句块 End If 2)If <表达式> Then <语句>