第四章编程题
04_JAVA练习题第四章-面向对象概念

04_JAVA练习题第四章-面向对象概念[单选题]1.下列哪种类成员修饰符修饰的变量只能在本类中被访问?()A)protectedB)publicC)defaultD)private答案:D解析: 【解析】只有私有访问权限修饰符才能限制变量只能在本类中被访问2.在Java 语言中,哪一个包中的类是自动导入的?()A)ngB)java.awtC)java.ioD)java.applet答案:A解析: 【解析】只有ng 包中的类能够被自动导入。
3.给出下面的程序代码:public class X4_1_3{ private float a;public static void m ( ){ }}如何使成员变量a 被方法m( )访问()A)将private float a 改为protected float aB)将private float a 改为public float aC)将private float a 改为static float aD)将private float a 改为float a答案:C解析: 【解析】static 类型的方法只能访问static 类型的数据成员。
4.有一个类B,下面为其构造方法的声明,正确的是()。
A)void B(int x) {}B)B(int x) {}C)b(int x) {}D)void b(int x) {}答案:B解析: 【解析】构造方法没有类型,且方法名与类名相同。
5.下面关于类的说法,不正确的是()。
A)类是同种对象的集合和抽象B)类属于Java 语言中的复合数据类型C)类就是对象D)对象是Java 语言中的基本结构单位答案:C解析: 【解析】类是对象的抽象,对象是类的实例,因此类和对象是有区别的。
6.下面关于方法的说法,不正确的是()。
A)Java 中的构造方法名必须和类名相同B)方法体是对方法的实现,包括变量声明和合法语句C)如果一个类定义了构造方法,也可以用该类的默认构造方法D)类的私有方法不能被其他类直接访问答案:C解析: 【解析】类中一旦用户定义了构造方法,该类默认的构造方法就不存在了,除非用户再自定义该类的默认构造方法。
单片机编程练习题

单片机编程练习题第四章习题:1、编程将8051的内部数据存储器20H单元和35H单元的数据相乘,结果存到外部数据存储器中(任意位置)。
#include<reg51.h>#include<math.h>int movdata(char);void main(){unsigned int xdata sum;unsigned char *ptr,a,b;ptr=0x20;a=*ptr;ptr=0x35;b=*ptr;sum=a*b;}2、8051的片内数据存储器25H单元中存放有一个0~10的整数,编程求其平方根(精确到5位有效数字),将平方根放到30H单元为首址的内存中。
#include<reg51.h>#include<math.h>void main(){char n;char *ptr;float *ptr2;float f;ptr=0x25;n=*ptr;f=sqrt(n);ptr2=0x30;*ptr2=f;}3、将外部RAM 10H~15H单元的内容传送到内部RAM 10H~15H单元。
#include<reg51.h>int movdata(char);void main(){char n=6;char *ptr1=0x10;char xdata *ptr2;ptr2=0x10;while(n--){*ptr1++=*ptr2++;}}4、内部RAM 20H、21H和22H、23H单元分别存放着两个无符号的16位数,将其中的大数置于24H和25H单元。
#include<reg51.h>unsigned int x _at_ 0x20;unsigned int y _at_ 0x22;unsigned int z _at_ 0x24;void main(){z=(x>y)?x:y;}第五章习题1、编写出外部中断1为下跳沿触发的中断初始化程序。
数值传热学第四章编程题

4-5迭代法求解节点温度。
说明:此处给出的是C++程序代码,使用牛顿迭代法,迭代收敛精度1.0e-6;程序运行结果附后。
/*NHT 4-5 newton*created on 2012-10-19 by Sanye*/#include <cmath>#include <stdio.h>#include <iostream>using namespace std;int main(){ double funT=1.0,dfunT=1.0,temp1=1.0,temp2=1.0;double T=20.0;//primary valueint i=0; //for TEST!cout<<"primary T= "<<T<<" ;"<<endl;while(fabs(funT/dfunT)>=1.0e-6){ i++;if(i==1&&(T<=20.0))T=100.0;//in case unreasonable T;temp1=pow(T-20.0,0.25);temp2=pow(T-20.0,-0.75);funT=0.5*T-80+2*T*temp1-40*temp1;dfunT=0.5+2*temp1+0.5*T*temp2-10*temp2;T=T-funT/dfunT;cout<<" step "<<i<<";\tT3'-T3= "<<funT/dfunT<<" ;"<<endl;}cout<<"total steps: "<<i<<endl;cout<<"\tT[1]= "<<100<<"\tT[2]= "<<0.5*(T+130)<<"\tT[3]= "<<T<<endl;return 0;}运行结果:4-12 编写TDMA算法程序验证其正确性。
C语言程序设计习题集第4章 循环结构(答案)

第4章循环结构一、选择题1、有以下程序段int k=0;while(k=1)k++;while 循环执行的次数是(A)A)无限次B)有语法错,不能执行C) 一次也不执行D)执行1次2、t为int类型,进入下面的循环之前,t的值为0while(t=1){ …… }则以下叙述中正确的是(B)A) 循环控制表达式的值为0B)循环控制表达式的值为1C) 循环控制表达式不合法D)以上说法都不对3、在C程序中,与while(m)中表达式m完全等价的是(B )A) m==0 B) m!=0 C) m==1 D)m!=14、有以下程序,程序运行后的输出结果是(C).main(){int i=1,sum=0;while(i<=4){sum=sum+i;i=i+1;}printf(“%d\n”,sum);}A)4 B)5 C)10 D)死循环5、有以下程序,程序运行后的输出结果是(D ).main(){int i=1,sum=0;while(i<=4)sum=sum+i;i=i+1;printf(“%d\n”,sum);}A)4 B)5 C)10 D)死循环6、有如下程序main(){int n=9;while(n>6){n-—;printf(“%d",n);}}该程序段的输出结果是(B)A)987 B) 876 C) 8765 D) 98767、以下程序的输出结果是(B)main(){int num= 0;while(num<=2){num++;printf(“%d\n”,num);}}A) 1 B) 1 C)1 D)l2 2 23 348、有以下程序,若运行时输入3.6 2.4<回车〉,则输出的结果是( B)。
main(){float x,y,z;scanf(“%f%f”,&x,&y);z=x/y;while(1){if(fabs(z)>1。
0){x=y;y=z;z=x/y;}elsebreak;}printf(“%f\n”,y);}A)1.500000 B)1.600000 C)2。
C语言第四章习题及答案(课余练习-不用提交)

第四章习题答案一、选择题1)以下是if语句的基本形式:if(表达式) 语句其中"表达式"A)必须是逻辑表达式B)必须是关系表达式C)必须是逻辑表达式或关系表达式D)可以是任意合法的表达式2)以下选项中,值为1的表达式是()。
A)1-'0' B)1-'\0' C)'1'-0 D)'\0'-'0'3)若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是:A)1 B)0 C)2 D)不知道a的值,不能确定4)若变量已正确定义,在if (W)printf(“%d\n”,k);中,以下不可替代W的是A)a<>b+c B)ch=getchar()C)a==b+c D)a++5)设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是A)if(x++); B)if(x>y&&y!=0);C)if(x>y) x- - D)if(y<0) {;}else y++; else x++;6) 以下选项中,当x为大于1的奇数时,值为0的表达式A)x%2==1 B)x%2 C)x%2!=0 D)x%2==07) 设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是A)(EXP= =0) B)(EXP!=0)C)(EXP= =1)D)(EXP!=1)8) 在以下给出的表达式中,与while(E)中的(E)不等价的表达式是A)(!E=0) B) (E>0||E<0) C) (E==0) D) (E!=0)9)若有定义int x,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是()。
A)(x-y>0) B)(x-y<0) C)(x-y<0||x-y>0) D)(x-y==0)10) 若有表达式(w)?(--x):(++y),则其中与w等价的表达式是 ( )A)w==1 B) w==0 C) w! =1 D) w! =011) 设有定义: int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是A)if(a>b) c=a,a=b,b=c; B)if(a>b){c=a,a=b,b=c;}C)if(a>b) c=a;a=b;b=c; D)if(a>b){c=a;a=b;b=c;}12) 已知字母A的ASCⅡ代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是A)kk>='A'&&kk<='Z' B)!(kk>='A'‖kk<='Z')C)(kk+32)>='a'&&(kk+32)<='z' D)isalpha(kk)&&(kk<91)isalpha(c) 判断参数c是否为英文字母头文件:ctype.hisupper(c) 判断参数c是否为大写英文字母是返回非零值,否则返回零islower(c ) 检查参数c是否为小写英文字母13)已有定义:char c; ,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是A)isupper(c) B)’A’<=c<=’Z’C)’A’<=c&&c<=’Z’D)c<=(‘z’-32)&&(‘a’-32)<=c14) 当变量c的值不为2、4、6时,值也为“真”的表达式是A)(c==2)‖(c==4)‖(c==6) B)(c>=2&&c<=6)‖(c!=3)‖(c!=5)C)(c>=2&&c<=6)&&!(c%2) D)(c>=2&&c<=6)&&(c%2!=1)15) 若变量已正确定义,有以下程序段int a=3,b=5,c=7;if(a>b) a=b; c=a;if(c!=a) c=b;printf("%d,%d,%d\n",a,b,c);其输出结果是A)程序段有语法错 B)3,5,3 C)3,5,5 D)3,5,7 16)有以下程序#includemain(){int a=1,b=0;if(!a) b++;else if(a==0) if(a) b+=2;else b+=3;printf("%d\n",b); }程序运行后的输出结果是A)0 B)1 C)2 D)317)在嵌套使用if语句时,C语言规定else总是()。
Java第四章题

1、已知类的定义如下public class test_3{int x ;int y ;test_3(int a,int b){x=a;y=b;}test_3(){x=-1;y=-1;}int get_x(){return x++;}int get_y(){return y--;}如果用下面三种不同的方法加载类,写出要求的结果:(1)用test_3 a1=new test_3()后;a1.x的内容为_____ ,a1.y的内容为______。
(2)用test_3 a1=new test_3(-2,5)后;a1.x的内容为_____ ,a1.y的内容为______。
(3)用test_3 a1=new test_3(10)后;其结果是__________。
2、设int x=1,float y=2,则表达式x / y的值是( )A、0B、1C、2D、以上都不是3、以下语句有语法错的是( )A、int x=1;y=2;z=3B、for (int x=10,y=0;x>0;x++);C、while (x>5);D、for(;;);4、void 的含义( )A、方法体为空B、定义的方法没有形参C、定义的方法没有返回值D、方法的返回值不能参加算术运算5、以下有关类定义的说法正确的是( )A、一个类可以有成员,也可以没有成员B、类的成员至少有一个属性和一个方法C、类的静态属性同全局变量的概念完全一样,只是表达形式不同D、类的方法在实例化时不占用内存6、以下有关构造函数的说法,正确的是( )A、一个类的构造函数可以有多个B、构造函数在类定义时被调用C、构造函数只能由对象中的其它方法调用。
D、构造函数可以和类同名,也可以和类名不同7、以下有关类的继承的说明中,正确的是( )A、子类能直接继承父类所有的非私有属性,也可通过接口继承父类的私有属性B、子类只能继承父类的方法,不能继承父类的属性C、子类只能继承父类的非私有属性,不能继承父类的方法D、子类不能继承父类的私有属性8、以下有关类的构造函数继承的说明,正确的是( )A、子类继承父类的构造函数,但不能自己定义B、子类可定义自己的构造函数,但受父类定义的构造函数的限制C、子类和父类均可独自定义自己的构造函数,但执行时的顺序有规定D、如父类定义了构造函数,则子类只能继承父类的构造函数,不能自己定义9、this 和super的使用中,正确的是( )A、都是指一个内存地址B、可以在同一个方法定义中出现C、意义相同D、以上都不10、分析以下程序,下面(AC)方法是对setVar方法的重载。
习题解答(第四章)

C 语言程序设计习题解答(第四章)4.1指出下列程序的错误或不合理之处, 并改正之.#include <stdio.h>void main(void){int x, n, s;s=power(x, n)}power(y){int i, p=1;for(i=1; i<=n; i++)p=p*y;};[解答] 错误或不合理之处有:(1) 第五行后面没有分号;(2) main 函数中应该有输入输出语句;(3) power 函数的使用在定义之前, 应该在使用前声明;(4) power 函数的使用在参数个数与返回值上与定义不一致;(5) power 函数的定义中没有说明形式参数的类型;(6) 变量n 应该作为power 的一个形式参数;(7) power 函数应该有一个返回值;(8) 程序最后一行的分号是多余的.正确的程序如下:#include "stdio.h"void main(){int x, n, s;int power(int y, int n);printf("Please input x and n:");scanf("%d%d",&x,&n);s=power(x, n);printf("s=%d\n",s);}int power(int y, int n){int i, p=1;for(i=1; i<=n; ++i)p=p*y;return(p);4.2, 4.3 略4.4 写一个将整数转换成字符串的函数itoa.[解答] 注: 这题需要第五章关于字体串的知识, 参考程序如下:#include <math.h>char *itoa(int num, char *str) /* 将整数 num 转换为相应的字符串, 将转换结果存放在 str 指向的字符数组中, 返回此字符数组的首地址 */{int i, len;if(num==0) /* 计算 num 的长度, 即数位的个数 */len=1;elselen=(int)log10(abs(num))+1;if(num<0) /* 处理负号 */{str[0]='-';num=-num;i=len+1;}elsei=len;str[i--]='\0'; /* 在最后一位放上字符串结束标记 */do /* 转换每一个数位 */{str[i--]=num%10+'0';num/=10;}while(num>0);return str;}4.5 写出Ackermann 函数),(n m Ack 的递归计算函数, 对于0,0≥≥n m , ),(n m Ack 定义为))1,(,1(),()1,1()0,(1),0(--=-=+=n m Ack m Ack n m Ack m Ack m Ack n n Ack 要求显示计算过程.[解答]#include "stdio.h"#include "stdlib.h"int Ack(int m, int n)if(m<0 || n<0){printf("m and n must be nonnegative.");exit(1);}else if(m==0){printf("Ack(%d, %d) = %d\n", 0, n, n+1);return(n+1);}else if(n==0){printf("Ack(%d, %d) = Ack(%d, %d)\n", m, 0, m-1, 1);return(Ack(m-1,1));}else{printf("Ack(%d, %d) = Ack(%d, Ack(%d, %d))\n", m, n, m-1, m, n-1);return(Ack(m-1,Ack(m,n-1)));}}4.6 分别写出计算Hermite 多项式)(x H n 之值的递推和递归函数, )(x H n 的定义如下:1),()1(2)(2)(2)(1)(2110>--===--n x H n x xH x H xx H x H n n n[解答]递推算法:#include <stdio.h>#include <stdlib.h>double H(int n, double x){int i;double h1=1, h2=2*x, h;if(n<0){printf("n 必须为非负整数.\n");exit(1);}else if(n==0) h=h1;else if(n==1) h=h2;elsefor(i=2; i<=n; i++){h=2*x*h2-2*(i-1)*h1;h1=h2;h2=h;}return h;}递归算法:#include <stdio.h>#include <stdlib.h>double H(int n, double x){if(n<0){printf("n 必须为非负整数.\n");exit(1);}else if(n==0)return 1;else if(n==1)return 2*x;elsereturn 2*x*H(n-1, x)-2*(n-1)*H(n-2, x);}4.7 (题目略)[解答] 各变量的存储属性如下:1.第二行的变量i是外部变量;2.main函数中的i, j是自动变量;3.next, last和new函数中的形式参数是自动变量;st函数中的i是静态(局部)变量;5.new函数中的j是自动变量.运行结果如下:i=1, j=1next(i)=1last(i)=10new(i+j)=12i=1, j=2next(i)=2last(i)=9new(i+j)=13i=1, j=3next(i)=3last(i)=8new(i+j)=144.8 (略)4.9 若有宏定义#define max(a, b) ((a)>(b) ? (a) : (b))下面表达式将扩展成什么?max(a, max(b, max(c, d)))如何修改上述表达式, 使其宏扩展变得稍小一些?[解答] max(a, max(b, max(c, d))) 将扩展成((a)>(((b)>(((c)>(d) ? (c) : (d))) ? (b) : (((c)>(d) ? (c) : (d))))) ? (a) : (((b)>(((c)>(d) ? (c) : (d))) ?(b) : (((c)>(d) ? (c) : (d))))))将max(a, max(b, max(c, d))) 修改成max(max(a, b), max(c, d)) 将使其宏扩展变得稍小一些. 注: max(max(a, b), max(c, d)) 的扩展为:((((a)>(b) ? (a) : (b)))>(((c)>(d) ? (c) : (d))) ? (((a)>(b) ? (a) : (b))) : (((c)>(d) ? (c) : (d))))4.10 定义一个宏, 将大写字母变成小写字母.[解答]#define ToLower(ch) ((ch)>='A' && (ch)<= 'Z'? (ch)+32 : (ch))或者:#define ToLower(ch) ((ch)>= 'A' && (ch)<= 'Z'? (ch)- 'A'+'a' : (ch))4.11 定义一个宏, 交换两个参数的值.[解答]#define SW AP(a, b) ((a)=(a)+(b), (b)=(a)-(b), (a)=(a)-(b))。
JAVA练习题(第4章)

29、给出下列接口的定义,下面哪个类实现该接口,并且不是抽象() interface A{ int method1(int i); int method2(int j); } A 、class B implements A{ int method1(){ } int method2(){ } } B、class B{ int method1(int i){ } int method2(int j){ } } 【答案】:C C、class B implements A{ int method1(int i){ } int method2(int j){ } } D、class B extends A{ int method1(int i){ } int method2(int j){ } }
18、下列说法正确的是( )。 A、final 可修饰类、属性、方法 B、abstract可修饰类、属性、方法 【答案】:A C、定义抽象方法需有方法的返回类型、名称、参 数列表和方法体 D、用final修饰的变量,在程序中可对这个变量的 值进行更改 19、在Java中,所有类的根类是( )。 A、ng.Object B、ng.Class C、java.applet.Apple D、java.awt.Frame 【答案】:A
二、填空题
1、抽象(abstract)方法是一种仅有方法头,没 有具体方法体和操作实现的方法,该方法 必须在抽象类之中定义。 最终(final) 方法是 不能被当前类的子类重新定义的方法。
2、 java程序引入接口的概念,是为了弥补 单继承 只允许类的________ 的缺憾。 abstract 来修饰。 3、抽象方法用关键字________ 多重 4、java语言通过接口支持______ 继承,使类 继承具有更灵活的扩展性
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三、编程题4.16 设计工程,已知圆的半径r,求圆面积S。
【解答】设圆半径为r,圆面积为S。
根据数学知识,已知圆半径r,求圆面积S的公式为:2rSπ=。
设计步骤如下。
(1)建立应用程序用户界面,如图4-1所示。
(2)设置对象属性:Label1的Caption属性为“已知圆半径r=”;Text1的Text属性为空;Command1的Caption属性为“圆面积为:”;Label2的Caption属性为空;Label2的BorderStyle属性为1-Fixed Single。
各控件的属性设置如图4-2所示。
图4-1 建立用户界面图4-2 设置各控件的属性(3)编写程序代码。
写出“圆面积为:”命令按钮Command1的Click事件代码为:Private Sub Command1_Click( )Const pi = 3.14Dim r As Single, S As Singler = V al(Text1.Text)S = pi * r ^ 2Label2.Caption = SEnd Sub运行程序时,在文本框输入圆半径的值,单击“圆面积为:”按钮后,输出结果如图4-3所示。
也可以不用文本框接收输入值,改用InputBox函数接收圆的半径r,求圆面积S,代码如下。
图4-3 程序运行结果Private Sub Form_Load( )ShowConst pi = 3.1415926Dim r As Single, S As Singler = V al(InputBox("输入半径:", "计算圆面积", "10")) FontSize = 18 S = pi * r ^ 2Print "圆面积:"; S End Sub程序运行时,首先显示如图4-4所示的对话框,在该对话框的文本框中输入数字,按Enter 键或单击“确定”按钮后,才能显示窗体。
图4-4 输入对话框用InputBox 函数输入文本虽然很方便,但是由于输入框弹出后将暂停程序的运行,直到用户响应,因此输入框不符合VB 自由环境的精神。
输入框适合于像要求用户输入口令等这样不常见的输入方式。
还可以用更好的用户输入方式,如文本框、选项按钮等。
4.17 已知平面坐标系中两点的坐标,求两点间的距离。
【解答】 由数学知识可知,已知两点坐标(x A , y A )、(x B , y B ),求两点间距离的计算公式为2A B 2A B )()(y y x x s -+-=建立用户界面如图4-5所示。
在该界面中用TextBox 控件输入数据,用Label 控件输出数据。
为了形象地表示两点之间的距离,可用Picture 控件插入一幅图,该图用画图软件绘制。
命令按钮Command1的Click 事件代码为:Private Sub Command1_Click( ) Dim xa As Single, xb As Single Dim ya As Single, yb As Single Dim s As Single xa = Val(Text1.Text) ya = V al(Text2.Text)xb = V al(Text3.Text) yb = V al(Text4.Text)s = Sqr((xb - xa) ^ 2 + (yb - ya) ^ 2) Label6.Caption = s End Sub程序运行结果如图4-6所示。
图4-5 设计用户界面图4-6 程序运行结果4.18 在文本框中输入三种商品的单价、购买数量,计算并输出所用的总金额。
【解答】假设第一种商品的单价和购买数量分别是a1和a2,第二种商品的单价和购买数量分别是b1和b2,第三种商品的单价和购买数量分别是c1和c2,所用总金额为x。
通过TextBox控件输入这三种商品的单价、购买数量,然后利用公式x = a1*a2+b1*b2+c1*c2进行计算,最后输出x的值。
设计步骤如下。
(1)建立应用程序用户界面,并设置对象属性,如图4-7所示。
图4-7 计算商品总金额(2)编写程序代码。
写出Command1_Click( )的事件代码为:Private Sub Command1_Click( )Dim a1 As Single, b1 As Single, c1 As SingleDim a2 As Integer, b2 As Integer, c2 As IntegerDim x As Singlea1 = V al(Text1.Text)a2 = V al(Text2.Text)b1 = V al(Text3.Text)b2 = V al(Text4.Text)c1 = V al(Text5.Text)c2 = V al(Text6.Text)x = a1 * a2 + b1 * b2 + c1 * c2Text7.Text = xEnd Sub4.19 设计工程,输出在指定范围内的三个随机数,范围在文本框中输入。
【解答】随机函数Rnd( )可以返回一个(0,1)区间中的随机小数,那么,Rnd * a语句可以返回(0,a)区间中的随机实数(带小数)。
若n, m均为整数,则表达式:Int((m + 1 – n) * Rnd) + n的值是闭区间[ n,m ]中的一个随机整数。
设计步骤如下。
(1)设计程序界面及设置控件属性。
新建一个工程,进入窗体设计器,在窗体中增加一个框架控件Frame1,一个命令按钮Command1和三个标签Label1~Label3。
选定Frame1,在其中增加两个文本框Text1和Text2以及一些标签。
修改对象属性参见表4-1。
设置属性后的窗体如图4-8所示。
表4-1 属性设置(2)编写程序代码。
Private Sub Command1_Click( )Randomizen = V al(Text1.Text)m = V al(Text2.Text)Label4.Caption = Int((m + 1 – n) * Rnd) + nLabel5.Caption = Int((m + 1 – n) * Rnd) + nLabel6.Caption = Int((m + 1 – n) * Rnd) + nEnd Sub运行程序,在文本框中输入范围值后,单击“生成随机数”按钮,可以不断生成指定范围之内的随机整数,如图4-9所示。
图4-8 设计用户界面图4-9 生成随机数4.20 使用大小写转换函数设计程序,实现在文本框中输入英文字母,按“转大写”按钮,文本变为大写;按“转小写”按钮,文本变为小写。
【解答】本题主要使用大小写转换函数UCase( )和LCase( ),另外还用到了KeyUp(键抬起)事件。
设计步骤如下。
(1)建立应用程序用户界面,并设置对象属性。
新建一个工程,进入窗体设计器,在窗体中增加一个标签Label1,一个文本框Text1和三个命令按钮Command1~Command3,参照图4-10设置各个对象的属性。
(a)(b)(c)图4-10 大小写转换(2)设计代码。
首先设计文本框的KeyUp事件代码,使得输入的字符存入文本框的Tag属性中:Private Sub T ext1_KeyUp(KeyCode As Integer, Shift As Integer)Text1.Tag = Text1.TextEnd Sub编写命令按钮Command1的Click事件代码:Private Sub Command1_Click( )Text1.Text = UCase(Text1.Tag)End Sub编写命令按钮Command2的Click事件代码:Private Sub Command2_Click( )Text1.Text = LCase(Text1.Tag)End Sub编写命令按钮Command3的Click事件代码:Private Sub Command3_Click( )Text1.Text = Text1.TagEnd Sub4.21 设某职工应发工资x元,试求各种票额钞票总张数最少的付款方案。
【解答】可以从最大的票额(100元)开始,算出所需的张数,然后在剩下的部分算出较小票额的张数,直到最小票额(1元)。
设计步骤如下。
(1)建立应用程序用户界面。
新建一个工程,进入窗体设计器,增加一个命令按钮Command1,14个标签Label1~Label14,七个文本框Text1~Text7。
用户界面如图4-11(a)所示。
(a)(b)图4-11 建立程序界面与程序运行结果(2)设置对象属性,参见表4-2。
其中标签的标题属性参见图4-11(a)。
表4-2 属性设置(3编写命令按钮Command1的Click事件代码:Private Sub Command1_Click( )x = V al(Text1.Text) ' x为实发工资数y = x \ 100 : Text2.Text = y ' 求100元票张数并显示x = x – 100 * y ' 求剩余款项y = x \ 50 : Text3.Text = y ' 求50元票张数并显示x = x – 50 * y ' 求剩余款项y = x \ 10 : Text4.Text = y ' 求10元票张数并显示x = x – 10 * y ' 求剩余款项y = x \ 5 : Text5.Text = y ' 求5元票张数并显示x = x – 5 * y ' 求剩余款项y = x \ 2 : Text6.Text = y ' 求2元票张数并显示x = x – 2 * y : Text7.Text = x ' 求1元票张数并显示End Sub编写文本框Text1的Change事件代码:Private Sub T ext1_Change( )' 当在Text1中输入新数时,清空其他文本框中的内容Text2.Text = ""Text3.Text = ""Text4.Text = ""Text5.Text = ""Text6.Text = ""Text7.Text = ""End Sub运行结果如图4-11(b)所示。
【说明】文本框的Change事件当文本框中的内容被改变时发生。
下面用信息对话框来输出各种票额钞票张数的付款方案,如图4-12所示。
图4-12 信息对话框只需将图4-11中多余的文本框和标签删去,并改写命令按钮的Click事件代码如下:Private Sub Command1_Click( )x = val(Text1.Text) ' x为实发工资数y1 = x \ 100 ' 求100元票张数x = x Mod 100 ' 求剩余款项y2 = x \ 50 ' 求50元票张数x = x Mod 50 ' 求剩余款项y3 = x \ 10 ' 求10元票张数x = x Mod 10 ' 求剩余款项y4 = x \ 5 ' 求5元票张数x = x Mod 5 ' 求剩余款项y5 = x \ 2 ' 求2元票张数x = x Mod 2 ' 求1元票张数Text1.SelStart = 0Text1.SelLength = Len(Text1.Text)Text1.SetFocusa = "===========================" & Chr(13)a = a & Format(Y1 & "张百元票,", "@@@@@@@@@@") & _Format(Y2 & "张50元票", "@@@@@@@@@@") & Chr(13)a = a & Format(Y3 & "张10元票,", "@@@@@@@@@@@") & _Format(Y4 & "张5元票", "@@@@@@@@@@") & Chr(13)a = a & Format(Y5 & "张2元票,", "@@@@@@@@@@@") & _Format(x & "张1元票", "@@@@@@@@@@") & Chr(13)a = a & "===========================" & Chr(13)a = a & "共计" & Text1.Text & "元"c = MsgBox(a, 0, "应发工资")End Sub【说明】文本框的SelStart属性用来设置(或返回)所选择的文本的起始点,如果没有文本被选中,则指出插入点的位置。